$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[] = {"",""}
String MsgEnd[] = {"",""}
//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[] = {"",""}
String MsgEnd[] = {"",""}
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