123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 |
- $PBExportHeader$uo_ljws_cmd.sru
- forward
- global type uo_ljws_cmd from uo_ljws_engine
- end type
- end forward
- global type uo_ljws_cmd from uo_ljws_engine
- end type
- global uo_ljws_cmd uo_ljws_cmd
- forward prototypes
- public subroutine setsendmsg (s_msgframe arg_s_msg, integer arg_len)
- end prototypes
- public subroutine setsendmsg (s_msgframe arg_s_msg, integer arg_len);Int i, li_slen
- li_slen = 10
- String ls_sendmsg = ""
- String ins_signStr = ">> "
- String MsgHead[] = {"<MH>","<Msg>"}
- String MsgEnd[] = {"</MH>","</Msg>"}
- //int I_ERROR = 0
- //int I_MSG = 1
- //int I_STATUS = 2
- //int I_SETINFO = 3
- //int I_DBINFO = 4
- //int I_SETREQ = 5
- //int I_LOGINREQ = 6
- //int I_USERQUTIREQ = 7
- //int I_SYSQUTIREQ = 8
- IF arg_len < 0 THEN
- FOR i = 1 TO UpperBound(arg_s_msg.Frame_str)
- IF NOT IsNull(arg_s_msg.Frame_str[i]) THEN
- ls_sendmsg += arg_s_msg.Frame_str[i] + ins_signStr
- END IF
- NEXT
- ELSEIF arg_len = 0 THEN
-
- ELSEIF arg_len = 1 THEN
- IF NOT IsNull(arg_s_msg.Frame_str[1]) THEN
- ls_sendmsg = arg_s_msg.Frame_str[1]
- END IF
- ELSE
- FOR i = 1 TO arg_len
- IF NOT IsNull(arg_s_msg.Frame_str[i]) THEN
- ls_sendmsg += arg_s_msg.Frame_str[i] + ins_signStr
- END IF
- NEXT
- END IF
- ls_sendmsg = MsgHead[1] + String(arg_s_msg.FrameHead) + MsgEnd[1] + MsgHead[2] + ls_sendmsg + MsgEnd[2]
- //Unicode码
- ins_send_blob_ori = Blob("")
- ins_send_blob_ori = Blob(ls_sendmsg,EncodingUTF16LE!) //FromUnicode()
- //ins_send_blob_ori = ToAnsi ( ls_sendmsg )
- end subroutine
- on uo_ljws_cmd.create
- call super::create
- end on
- on uo_ljws_cmd.destroy
- call super::destroy
- end on
- event ue_getdatacomplete;call super::ue_getdatacomplete;String sReceived
- //unicode码
- //sReceived = sReceived + FromUnicode(arg_bdata)
- ////ascii码
- //sReceived = sReceived + String(arg_bdata,EncodingAnsi!)
- sReceived = String(arg_bdata)
- //sReceived = sReceived + String(arg_bdata)
- // //支持旧版本
- // if pos(sReceived,"<") <= 0 or pos(sReceived,"</") <= 0 then
- // //unicode码
- // sReceived = sReceived + FromUnicode(BlobMid(blobBuf, 1, iLen))
- // end if
- String MsgHead[] = {"<MH>","<Msg>"}
- String MsgEnd[] = {"</MH>","</Msg>"}
- Int I_ERROR = 0
- Int I_MSG = 1
- Int I_STATUS = 2
- Int I_ACOUNT = 3
- Int I_DBINFO = 4
- Int I_SETREQ = 5
- Int I_LOGINREQ = 6
- Int I_RELOGINREQ = 7
- Int I_CHKLOGINREQ = 8
- Int I_DBSPID = 9
- String arg_msg
- s_infomsg SInfoMsg[]
- Long i
- Long ll_MH
- Long ll_sPos, ll_ePos
- String ls_Msg
- s_msgframe s_msg
- arg_msg = sReceived
- ll_sPos = Pos(arg_msg,MsgHead[1])
- ll_ePos = Pos(arg_msg,MsgEnd[1])
- IF ll_sPos > 0 AND ll_ePos > 0 THEN
- ll_MH = Integer(Mid(arg_msg, ll_sPos+Len(MsgHead[1]), ll_ePos - (ll_sPos + Len(MsgHead[1]))))
- ELSE
- ll_MH = -1
- END IF
- ll_sPos = Pos(arg_msg,MsgHead[2])
- ll_ePos = Pos(arg_msg,MsgEnd[2])
- IF ll_sPos > 0 AND ll_ePos > 0 THEN
- ls_Msg = Mid(arg_msg, ll_sPos+Len(MsgHead[2]), ll_ePos - (ll_sPos + Len(MsgHead[2])))
- END IF
- SInfoMsg[1].Index = ll_MH
- SInfoMsg[1].InfoMsg = ls_Msg
- String signStr = ">> "
- string ls_ErrType
- int li_ErrType
- Int li_index
- String ls_TmpMsgStr
- i = 1
- if SInfoMsg[i].Index < 0 then
- sys_buf_s_msgFrame.Error = SInfoMsg[i].Index
- sys_buf_s_msgFrame.ErrorMsg = SInfoMsg[i].InfoMsg
-
- // if pos(sys_buf_s_msgFrame.ErrorMsg,"[") > 0 and pos(sys_buf_s_msgFrame.ErrorMsg,"]") > 0 then
- // ls_ErrType = mid(sys_buf_s_msgFrame.ErrorMsg, pos(sys_buf_s_msgFrame.ErrorMsg,"[") + 1, pos(sys_buf_s_msgFrame.ErrorMsg,"]") - pos(sys_buf_s_msgFrame.ErrorMsg,"[") - 1)
- // sys_buf_s_msgFrame.Error = long(ls_ErrType)
- // end if
- end if
- CHOOSE CASE SInfoMsg[i].Index
- CASE I_ERROR //ERROR
- sys_buf_s_msgFrame.Error = -1
- sys_buf_s_msgFrame.ErrorMsg = SInfoMsg[i].InfoMsg
-
- if pos(sys_buf_s_msgFrame.ErrorMsg,"[") > 0 and pos(sys_buf_s_msgFrame.ErrorMsg,"]") > 0 then
- ls_ErrType = mid(sys_buf_s_msgFrame.ErrorMsg, pos(sys_buf_s_msgFrame.ErrorMsg,"[") + 1, pos(sys_buf_s_msgFrame.ErrorMsg,"]") - pos(sys_buf_s_msgFrame.ErrorMsg,"[") - 1)
- sys_buf_s_msgFrame.Error = long(ls_ErrType)
- end if
-
- CASE I_STATUS //I_STATUS
- s_msg.FrameHead = I_STATUS
- s_msg.frame_str[1] = String(sys_Status)
- sys_buf_s_msgFrame.Error = 0
- sys_buf_s_msgFrame.MsgType = I_STATUS
- setsendmsg( s_msg, 1)
- EVENT ue_send() //发送命令
- CASE I_ACOUNT //ACOUNT
- li_index = 0
- if Pos(SInfoMsg[i].InfoMsg , "[VersionID]") > 0 then
- sys_buf_s_msgFrame.version_id = Left(SInfoMsg[i].InfoMsg, Pos(SInfoMsg[i].InfoMsg, "[VersionID]") - 1)
- SInfoMsg[i].InfoMsg = mid(SInfoMsg[i].InfoMsg, Pos(SInfoMsg[i].InfoMsg, "[VersionID]") + len( "[VersionID]"))
- end if
- if Pos(SInfoMsg[i].InfoMsg , "[IfRegister]") > 0 then
- sys_buf_s_msgFrame.if_register = Integer(Left(SInfoMsg[i].InfoMsg, Pos(SInfoMsg[i].InfoMsg, "[IfRegister]") - 1))
- SInfoMsg[i].InfoMsg = mid(SInfoMsg[i].InfoMsg, Pos(SInfoMsg[i].InfoMsg, "[IfRegister]") + len( "[IfRegister]"))
- end if
-
- IF SInfoMsg[i].InfoMsg = "Acount Must User" THEN //服务器需用户名选择帐套
- sys_buf_s_msgFrame.AcountMustUser = TRUE
- ELSE
- sys_buf_s_msgFrame.AcountMustUser = FALSE
-
- DO WHILE Pos(SInfoMsg[i].InfoMsg , signStr) > 0
- ls_TmpMsgStr = Left(SInfoMsg[i].InfoMsg, Pos(SInfoMsg[i].InfoMsg, signStr) - 1)
- li_index++
- sys_buf_s_msgFrame.acount[li_index] = ls_TmpMsgStr
- SInfoMsg[i].InfoMsg = Right(SInfoMsg[i].InfoMsg, Len(SInfoMsg[i].InfoMsg)-Len(ls_TmpMsgStr)-Len(signStr))
- LOOP
- END IF
- sys_buf_s_msgFrame.acountCnt = li_index
- sys_buf_s_msgFrame.Error = 0
- sys_buf_s_msgFrame.MsgType = I_ACOUNT
- CASE I_DBINFO //DataBaseInfo
- //servername+database+loginid+loginpwd
- li_index = 0
- DO WHILE Pos(SInfoMsg[i].InfoMsg , signStr) > 0
- ls_TmpMsgStr = Left(SInfoMsg[i].InfoMsg, Pos(SInfoMsg[i].InfoMsg,signStr) - 1)
- IF li_index = 5 AND ls_TmpMsgStr = "" THEN
- EXIT
- END IF
- li_index++
- sys_buf_s_msgFrame.frame_str[li_index] = ls_TmpMsgStr
- SInfoMsg[i].InfoMsg = Right(SInfoMsg[i].InfoMsg, Len(SInfoMsg[i].InfoMsg)-Len(ls_TmpMsgStr)-Len(signStr))
- LOOP
-
- sys_buf_s_msgFrame.frame_str_index = li_index
- IF li_index = 5 THEN
- sys_buf_s_msgFrame.Error = 0
- sys_buf_s_msgFrame.ErrorMsg = ""
- ELSEIF li_index = 6 THEN
- sys_buf_s_msgFrame.Error = 0
- sys_buf_s_msgFrame.ErrorMsg = sys_buf_s_msgFrame.frame_str[6]
- //新注册程序
- ELSEIF li_index >= 7 THEN //6:有否加密锁,7:是否已注册, 8:有效日期,9:错误信息, 10:用户级别
- IF li_index = 8 THEN
- sys_buf_s_msgFrame.Error = 0
- sys_buf_s_msgFrame.ErrorMsg = ""
- ELSEIF li_index >= 9 THEN
- sys_buf_s_msgFrame.Error = 0
- sys_buf_s_msgFrame.ErrorMsg = sys_buf_s_msgFrame.frame_str[9]
- END IF
- ELSE
- sys_buf_s_msgFrame.Error = -1
- sys_buf_s_msgFrame.ErrorMsg = "获取数据库连接信息有误,系统将不能登录"
- END IF
-
- sys_buf_s_msgFrame.MsgType = I_DBINFO
- CASE I_CHKLOGINREQ //请求返回用户信息
- IF sys_login THEN
-
- s_msg.FrameHead = I_CHKLOGINREQ
- //
- s_msg.frame_str[1] = "1"
- s_msg.frame_str[2] = publ_userid
- s_msg.frame_str[3] = sys_psw
- s_msg.frame_str[4] = sys_DBMS
- s_msg.frame_str[5] = sys_ServerName
- s_msg.frame_str[6] = sys_userid
- s_msg.frame_str[7] = sys_dbpass
- s_msg.frame_str[8] = sys_DataBase
- s_msg.frame_str[9] = sys_LoginID
- s_msg.frame_str[10] = sys_LoginPwd
- s_msg.frame_str[11] = sys_dbparm
-
- setsendmsg( s_msg, 11)
- ELSE
- s_msg.FrameHead = I_CHKLOGINREQ
- //
- s_msg.frame_str[1] = "0"
- setsendmsg( s_msg, 1)
- END IF
- sys_buf_s_msgFrame.Error = 0
- sys_buf_s_msgFrame.MsgType = I_CHKLOGINREQ
- EVENT ue_send() //发送命令
- CASE I_DBSPID
- s_msg.FrameHead = I_DBSPID
- s_msg.frame_str[1] = String(sys_db_spid)
- s_msg.frame_str[2] = String(sys_Status)
- setsendmsg( s_msg, 2)
- EVENT ue_send() //发送命令
- CASE 20 //client list
- sys_buf_s_msgFrame.frame_str[1] = SInfoMsg[1].InfoMsg
- CASE 100 //client list
- // sys_buf_s_msgFrame.frame_str[1] = SInfoMsg[1].InfoMsg
- messagebox("系统信息",SInfoMsg[1].InfoMsg)
- END CHOOSE
- sys_buf_new = TRUE
- end event
- event ue_send;call super::ue_send;IF ins_cancel_flag = TRUE THEN //2006.7.8取消操作
- RETURN
- END IF
- Long rslt
- IF IsNull(ins_send_blob_ori) OR Len(ins_send_blob_ori) < 3 THEN
- ins_msg = 'ue_send>without send content.'
- EVENT ue_error(ins_msg)
- END IF
- rslt = Send( )
- IF rslt = 0 THEN
- //ins_msg = 'Send Error'
- ins_msg = 'ue_send>'+ins_msg
- //ue_error(ins_msg)
- this.postevent('ue_error')
- END IF
- end event
- event ue_error;call super::ue_error;//messagebox("Winsock系统错误",ins_msg)
- end event
|