def __HandleRecvParamBlockUnit(self, bstrParamContentLine, bstrParamSignID): bstrParamContentLine = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrParamContentLine) bstrParamSignID = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrParamSignID) bstrBlockArray = bstrParamContentLine.split(b'\n') if( bstrBlockArray): assignWebNameBlock = CTYBot_CTUnit_TaskRegCenter_Assign_WebNameBlock() # 提交到任务模块 assignWebNameBlock.s_iRunPluginID = self.s_iRunPluginID assignWebNameBlock.s_bstrDomainNameArray = bstrBlockArray assignWebNameBlock.s_bstrUniqueSign = bstrParamSignID # 提交,发送 self.s_midRecvCanUseParamBlockArray.append(assignWebNameBlock)
def Viul_Internal_ParamBlock_PrePare(self, bstrRegCenterID): bstrRegCenterID = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrRegCenterID) with open(self.s_ustrRunTaskFileName, 'r') as ff: total = ff.read() bstrTotal = CTYLB_MainSys_MiscFunc.SafeGetUTF8(total) bstrContentArray = bstrTotal.split(b'\r') if (len(bstrContentArray) == 1): bstrContentArray = bstrTotal.split(b'\n') lines = bstrContentArray lines = [line.strip(b'\n') for line in lines] lines = [line.strip(b'\r') for line in lines] self.s_bstrRunContentArray = [x for x in lines if x != b''] pass
def Viul_Notify_Recv_RunResult(self, bstrParamSign, iReplyPluginID, bstrOrigTitleDomain, bstrResult): bstrParamSign = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrParamSign) bstrOrigTitleDomain = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrOrigTitleDomain) bstrResult = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrResult) contentArray = [self.s_bstrResultAppName, self.s_bstrResultSubTaskName, bstrParamSign] bstrParam2Content = g_bstr_ResultContentSplit.join(contentArray) sendCTUnit = CTYBot_CTUnit_CommonData() sendCTUnit.SetIntData(g_i_OpResult_SubCmd_AddResult) sendCTUnit.SetStrData( bstrResult) sendCTUnit.SetParam(bstrOrigTitleDomain, bstrParam2Content) self.s_midStore_NeedSend_ResultData.append(sendCTUnit) pass
def Handle_PromptorRequester_NewAcceptSock(self, bstrPeerName, iNewAcceptSock_Prompter): bstrPeerName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrPeerName) retNewRequestHost = self.Search_Add_Request_HostUnit_By_IDName( bstrPeerName, iNewAcceptSock_Prompter) if (retNewRequestHost): retNewRequestHost.s_iAcceptSock = iNewAcceptSock_Prompter
def Sys_IsParamSign_MyRunningParamArray(self, bstrCheckParamSign): bstrCheckParamSign = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrCheckParamSign) bRetValue = False if( bstrCheckParamSign in self.s_bstrPromptWaitFinishParamSignArray): bRetValue = True return bRetValue
def Search_OrigTaskSign_By_UniqueSign(self, bstrParamUniqueSign): bstrParamUniqueSign = CTYLB_MainSys_MiscFunc.SafeGetUTF8( bstrParamUniqueSign) bRetExist = False if (bstrParamUniqueSign in self.s_bstrRunningParamSignArray): bRetExist = True return bRetExist
def Sys_Reply_ParamBlock_Result(self, bstrOrigParamBlockSign, iResultCode): bstrOrigParamBlockSign = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrOrigParamBlockSign) self.Viul_FinishParamBlock( bstrOrigParamBlockSign, iResultCode) if( bstrOrigParamBlockSign in self.s_bstrPromptWaitFinishParamSignArray): bRemove = False if( iResultCode == CTYBot_CTUnit_CommonData.s_g_iIntValue_Task_Finish): bRemove = True elif( iResultCode == CTYBot_CTUnit_CommonData.s_g_iIntValue_Task_Finish_Fail): bRemove = True if( bRemove): self.s_bstrPromptWaitFinishParamSignArray.remove( bstrOrigParamBlockSign) CTYLB_Log.ShowLog( 0,'param-reply', 'block %s run-finish. %d, still_buff_len:[%d]' % ( bstrOrigParamBlockSign, iResultCode, len( self.s_bstrPromptWaitFinishParamSignArray)) ) msgObject={ "monitor_type":"block-finish-reply", "level":"info", "target":"", "plugin_id":self.s_iRunPluginID, "block_id":bstrOrigParamBlockSign, "block_size":0, "free_size":0, "wait_size":len( self.s_bstrPromptWaitFinishParamSignArray), "success_size":0, "result_code":iResultCode, "msg":""} CTYLB_Log.ShowMonitor(msgType="PLC",msgObject=msgObject) pass pass
def Search_OrigTaskSign_ReqHostUnit_By_UniqueSign(self, bstrParamUniqueSign, lastOrigReqHostUnit): bstrParamUniqueSign = CTYLB_MainSys_MiscFunc.SafeGetUTF8( bstrParamUniqueSign) retHostUnit = None bOrigRunParamExist = False bNeedTotalSearch = True # 这里快速判断是否上次单元 if (lastOrigReqHostUnit): bCurExist = lastOrigReqHostUnit.Search_OrigTaskSign_By_UniqueSign( bstrParamUniqueSign) if (bCurExist): bOrigRunParamExist = True retHostUnit = lastOrigReqHostUnit bNeedTotalSearch = False # 需要进行全面搜索 if (bNeedTotalSearch): for eachUnit in self.s_requestHostUnitArray: bCurExist = eachUnit.Search_OrigTaskSign_By_UniqueSign( bstrParamUniqueSign) if (bCurExist): bOrigRunParamExist = True retHostUnit = eachUnit break return bOrigRunParamExist, retHostUnit
def __init__(self, ustrCfgFileName, ustrDbFileName): ustrCfgFileName = CTYLB_MainSys_MiscFunc.SafeGetUnicode(ustrCfgFileName) ustrDbFileName = CTYLB_MainSys_MiscFunc.SafeGetUnicode(ustrDbFileName) # 设置运行任务提交 self.s_RunnDTaskArray = [] # 正在运行的任务队列 # 创建机器人框架 self.s_LessTYLB_Bot_FrameThread = CLessTYBotFrameThread(ustrCfgFileName, ustrDbFileName) # 设置默认环境处理 # self.s_LessTYLB_Bot_FrameThread.SetDefaultConsoleCompatible( CtrlCHandle) # 准备运行 self.s_LessTYLB_Bot_FrameThread.Prepare_Start() self.s_strSelfID = self.s_LessTYLB_Bot_FrameThread.GetMyName() # 注册 单元到达的通知,HLSession的新数据单元创建 self.s_LessTYLB_Bot_FrameThread.RegisterNewCTUnit( CTYLB_Bot_BaseDef.s_g_iDataType_TaskRegCenter_sk_v1, CTYLB_Bot_BaseDef.s_g_iMainCmd_TaskRegCenter_ReportResult_V2, CTYLB_Bot_BaseDef.s_g_iSubCmd_TaskRegCenter_ReportResult_V2_PingTraceWebCrawl, CTYBot_CTUnit_TaskRegCenter_CreateNewUnit_V2_ReportResult) self.s_LessTYLB_Bot_FrameThread.RegisterNewCTUnit( CTYLB_Bot_BaseDef.s_g_iDataType_TaskRegCenter_sk_v1, CTYLB_Bot_BaseDef.s_g_iMainCmd_TaskRegCenter_ReportResult, CTYLB_Bot_BaseDef.s_g_iSubCmd_TaskRegCenter_ReportResult_PingTraceWebCrawl, CTYBot_CTUnit_TaskRegCenter_CreateNewUnit_ReportResult) # 获得管套管理对象 self.s_hlSockMang = self.s_LessTYLB_Bot_FrameThread.s_HLSockMang # 读取配置参数 ustrTaskRegCenterID = self.s_LessTYLB_Bot_FrameThread.s_execTYLB_Bot_Sample.ReadIniSectionValue( ustrCfgFileName, u'client', u'taskcenter_id', CTYLB_Bot_BaseDef.s_g_strBotName_TaskRegCenter_sk_v1) self.s_bstrTaskRegCenterID = CTYLB_MainSys_MiscFunc.SafeGetUTF8(ustrTaskRegCenterID) # 创建连接管套 self.s_x_TaskRegCenter_Sock = CTYFBot_OpSession_ConnectSock(self.s_hlSockMang, self.s_bstrTaskRegCenterID, self.s_g_iTaskMang_Listen_Port_PromptTask) pass
def SearchExecHostUnitByIDName(self, bstrHostIDName): bstrHostIDName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrHostIDName) retHostUnit = None for eachUnit in self.s_execHostUnitArray: if (eachUnit.s_bstrHostIDName == bstrHostIDName): retHostUnit = eachUnit break return retHostUnit
def Handle_ExecPluginHost_NewAcceptSock(self, bstrPeerName, iNewAcceptSock_ExecPlugin): bstrPeerName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrPeerName) clientUnit = self.SearchExecHostUnitByIDName(bstrPeerName) if (clientUnit == None): clientUnit = CTYLB_TaskCenter_ExecHostUnit(bstrPeerName, None) self.s_execHostUnitArray.append(clientUnit) clientUnit.s_iSock_AcceptFromRemotePlugin = iNewAcceptSock_ExecPlugin
def Viul_FinishParamBlock(self, bstrOrigParamBlockSign, iResultCode): bstrOrigParamBlockSign = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrOrigParamBlockSign) sendCTUnit = CTYBot_CTUnit_CommonData() sendCTUnit.SetIntData(g_i_OpParamBlock_SubCmd_Finish_ParamBlock) sendCTUnit.SetStrData( bstrOrigParamBlockSign) sendCTUnit.SetParam(self.s_bstrObjParamName, str(iResultCode)) self.s_midStore_NeedSend_FinishParamBlockArray.append(sendCTUnit)
def Search_execHostUnit_By_UniqueSign(self, bstrParamUniqueSign): bstrParamUniqueSign = CTYLB_MainSys_MiscFunc.SafeGetUTF8( bstrParamUniqueSign) retHostUnit = None for eachUnit in self.s_execHostUnitArray: if (bstrParamUniqueSign in eachUnit.s_bstrTaskParamSignArray): retHostUnit = eachUnit break return retHostUnit
def __init__(self, bstrHostName, iAcceptSockIndex): bstrHostName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrHostName) self.s_lastSendCmdTime = datetime(2017, 1, 1) self.s_lastClientStatusData = None self.s_bstrHostIDName = bstrHostName self.s_lastRecvStatusTime = datetime.now() self.s_bstrTaskParamSignArray = [] # 任务参数队列 self.s_iSock_AcceptFromRemotePlugin = iAcceptSockIndex # 连接远端插件的管套ID self.s_toBeSendCTUnitArray = [] # 等待发送单元队列
def __init__(self, bstrSelfIDName, threadPluginExecEachCallBack, iThreadCount=10): bstrSelfIDName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrSelfIDName) self.s_runThreadMang = [] # 运行线程管理 CTYLB_HostExec_Thread self.s_globalQueue = queue.Queue() # 线程同步 self.s_waitRunParamUnit = [] # 等待运行的单元参数队列 CThreadRunParamUnit self.s_threadPluginExecEachCallBackFunc = threadPluginExecEachCallBack self.s_lastSendStatusContentTime = datetime(2017, 1, 1) self.s_bstrSelfIDName = bstrSelfIDName self.s_iSimuRunThreadCount = iThreadCount # 线程个数 pass
def Viul_Notify_Recv_RunResult(self, bstrParamSign, iReplyPluginID, bstrOrigDomain, bstrResult): bstrParamSign = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrParamSign) bstrOrigDomain = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrOrigDomain) bstrResult = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrResult) bstrShowResult = bstrResult s2 = bstrShowResult.replace(b'\r', b'') bstrShowResult = s2.replace(b'\n', b'') CTYLB_Log.ShowLog( 0, 'result-arrive', '[%s] - [%s] [%d] [%s]' % (bstrParamSign, bstrOrigDomain, iReplyPluginID, bstrShowResult)) msgObject={ "monitor_type":"result", "level":"info", "target":bstrOrigDomain, "plugin_id":self.s_iRunPluginID, "block_id":"", "block_size":0, "free_size":0, "wait_size":0, "success_size":0, "result_code":0, "msg":bstrResult } CTYLB_Log.ShowMonitor(msgType="PLC",msgObject=msgObject) pass
def Search_Add_Request_HostUnit_By_IDName(self, bstrHostIDName, iNewSock, bAddNew=True): bstrHostIDName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrHostIDName) retHostUnit = None for eachUnit in self.s_requestHostUnitArray: if (eachUnit.s_bstrHostIDName == bstrHostIDName): eachUnit.s_iAcceptSock = iNewSock retHostUnit = eachUnit break if (not retHostUnit): # 新主机,加入请求主机单元队列 hostUnit = CTYLB_TaskCenter_RequestHostUnit( bstrHostIDName, iNewSock) self.s_requestHostUnitArray.append(hostUnit) retHostUnit = hostUnit return retHostUnit
def __init__(self, bstrHostName, iAcceptSock): bstrHostName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrHostName) self.s_bstrHostIDName = bstrHostName # 主机名字 self.s_requestParamUnitArray = [ ] # 请求执行的参数单元队列 CTYLB_P2P_ContentUnit_Base self.s_waitExecParamArray = [ ] # 等待执行的参数队列 CTYLB_P2P_ContentUnit_Base self.s_waitBroadCastParamArray = [ ] # 等待广播执行的参数队列 CTYLB_P2P_ContentUnit_Base self.s_bstrRunningParamSignArray = [] # 正在运行的参数标记队列bytes self.s_runningBCastParamArray = [ ] # 正在运行的参数队列 CTYLB_P2P_ContentUnit_Base self.s_lastScheduleTime = datetime(2017, 1, 1) # 上次调度时间 self.s_clientResultCTUnitArray = [] # 客户端结果发送的单元队列 self.s_iAcceptSock = iAcceptSock # 接收到请求端的管套ID self.s_toBeSendReplyCTUnitArray = [] # 等待发送的回复单元队列 pass
def __init__(self, bstrSelfIDName, ustrThreadName, paramQueue, iIndex, threadPluginExecEachCallBackFunc): bstrSelfIDName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrSelfIDName) ustrThreadName = CTYLB_MainSys_MiscFunc.SafeGetUnicode(ustrThreadName) threading.Thread.__init__(self, name=ustrThreadName) self.s_MyQueue = paramQueue self.s_iMyIndex = iIndex self.g_ExecMutex = threading.Lock() # 线程执行同步锁 self.s_bThreadRunning = True self.s_runParamUnit = None # 运行参数 self.s_runResult = None # 运行结果 self.s_ExecMutex = threading.Lock() # 线程执行同步锁 self.s_iCurStatus = 0 # 空闲 self.s_pluginExecWebCallBackFunc = threadPluginExecEachCallBackFunc self.s_bstrSelfIDName = bstrSelfIDName self.s_resultMiddleUnitArray = [] # 结果单元队列 CThreadRunResultUnit if (self.s_ExecMutex.acquire()): self.s_ExecMutex.release()
def __init__(self, hlSockMang, bstrResultAppName, bstrResultSubTaskName, bstrObjParamName, bstrParamDBName, bstrParamTableName, bstrParamContentField, bstrParamSignIDField, iDestPluginID, iEachBlockCount=50): CTYBot_WebName_DTask2_Base.__init__(self, iDestPluginID, '', iEachBlockCount) self.s_bstrResultAppName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrResultAppName) self.s_bstrResultSubTaskName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrResultSubTaskName) self.s_bstrObjParamName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrObjParamName) self.s_bstrParamDBName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrParamDBName) self.s_bstrParamTableName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrParamTableName) self.s_bstrParamContentFieldName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrParamContentField) self.s_bstrIDSignFieldName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrParamSignIDField) self.s_parentHLSockMang = hlSockMang self.s_connectOPDBSrv_Param_Sock = CTYFBot_OpSession_ConnectSock( hlSockMang, g_bstrTYFBot_OPDB_SrvName, g_i_ListenSock_TYFBot_OP_DB_Operate_ParamBlock) self.s_connectOPDBSrv_Result_Sock = CTYFBot_OpSession_ConnectSock( hlSockMang, g_bstrTYFBot_OPDB_SrvName, g_i_ListenSock_TYFBot_OP_DB_Operate_Result) self.s_iExecStep = CTYFBot_DTask_OPDB_Prompter.s_g_iStep_WaitConnect self.s_midRecvCanUseParamBlockArray = [] # 中间存储的参数块队列 self.s_iCanSend_ReqParamCount = 0 # request param count, need send self.s_midStore_NeedSend_ResultData = [] # 中间存储的Result队列 self.s_midStore_NeedSend_FinishParamBlockArray = [] # 中间存储需要发送的的参数结果队列 pass
def run(self): self.s_MyQueue.get() lastSendResultTime = datetime.now() # 上次发送时间 iSendWaitDiffTime = 30 # 每30秒发送一次 while (self.s_bThreadRunning): iCurStatus = self.Safe_GetStatus() if (iCurStatus == CTYLB_HostExec_V2_Thread.s_g_iPrepareRun): # 调度参数进行运行 self.Safe_SetStatus(CTYLB_HostExec_V2_Thread.s_g_iRunning) # 发送开始运行的消息 bstrOrigParamUniqSign = self.s_runParamUnit.s_assignTaskParam.s_bstrUniqueSign replyCommUnit = CTYBot_CTUnit_CommonData() replyCommUnit.SetIntData( CTYBot_CTUnit_CommonData.s_g_iIntValue_Task_Start_Run) replyCommUnit.SetParam(bstrOrigParamUniqSign, self.s_bstrSelfIDName) self.Safe_AddMiddleResultData( self.s_runParamUnit.s_bstrFromName, replyCommUnit) # 设置参数标识 reportResultV2 = CTYBot_CTUnit_TaskRegCenter_ReportResult_V2() reportResultV2.s_bstrOrigTaskUniqueSign = bstrOrigParamUniqSign # 发送每个运行结果 paramCTUnit = self.s_runParamUnit.s_assignTaskParam if (paramCTUnit.s_iMyDataType == CTYLB_Bot_BaseDef.s_g_iDataType_TaskRegCenter_sk_v1): if (paramCTUnit.s_iBotCmd_Main == CTYLB_Bot_BaseDef. s_g_iMainCmd_TaskRegCenter_Assign_WebNameBlock): if (paramCTUnit.s_iBotCmd_Sub == CTYLB_Bot_BaseDef. s_g_iSubCmd_TaskRegCenter_Assign_WebNameBlock): iRunPluginID = paramCTUnit.s_iRunPluginID bstrRunHostNameArray = paramCTUnit.s_bstrDomainNameArray for bstrEachHost in bstrRunHostNameArray: ustrEachHost = CTYLB_MainSys_MiscFunc.SafeGetUnicode( bstrEachHost) iReplyPluginID, bstrRunContent = 0, b'' if (self.s_pluginExecWebCallBackFunc): try: iReplyPluginID, ustrRunContent = self.s_pluginExecWebCallBackFunc( iRunPluginID, ustrEachHost) bstrRunContent = CTYLB_MainSys_MiscFunc.SafeGetUTF8( ustrRunContent) except Exception as e: ustrMsg = u'Run Plugin [%s] Error.[%s]' % ( ustrEachHost, str(e)) CTYLB_Log.ShowLog( 1, u'Running Plugin %d' % (iRunPluginID), ustrMsg) pass # 加入到队列,进行输出 bstrFixRunContent = CTYLB_P2P_ContentUnit_Base_bytes.SafeConvertStrToUTF8_Base64( bstrRunContent) reportResultV2.AddSubResultUnit( iReplyPluginID, bstrEachHost, bstrFixRunContent) curTime = datetime.now() timeDiff = curTime - lastSendResultTime if (timeDiff.seconds >= iSendWaitDiffTime): lastSendResultTime = curTime self.Safe_AddMiddleResultData( self.s_runParamUnit.s_bstrFromName, reportResultV2) # 输出后,重新申请一个新的单元 reportResultV2 = CTYBot_CTUnit_TaskRegCenter_ReportResult_V2( ) reportResultV2.s_bstrOrigTaskUniqueSign = bstrOrigParamUniqSign time.sleep(0.1) pass # 有有效内容?输出 if (len(reportResultV2.s_subResultUnitArray) > 0): self.Safe_AddMiddleResultData( self.s_runParamUnit.s_bstrFromName, reportResultV2) # 发送运行完成的消息 replyCommUnit = CTYBot_CTUnit_CommonData() replyCommUnit.SetIntData( CTYBot_CTUnit_CommonData.s_g_iIntValue_Task_Finish) replyCommUnit.SetParam( self.s_runParamUnit.s_assignTaskParam.s_bstrUniqueSign, b'') self.Safe_AddMiddleResultData( self.s_runParamUnit.s_bstrFromName, replyCommUnit) # 任务自由,可以重新接收参数运行 self.Safe_SetStatus(CTYLB_HostExec_V2_Thread.s_g_iFree) pass bTaskBusy = False if (not bTaskBusy): time.sleep(0.1) self.s_MyQueue.task_done() # finish queue unit pass
def SetTaskFinish(self, bstrParamUnitUniqueSign): bstrParamUnitUniqueSign = CTYLB_MainSys_MiscFunc.SafeGetUTF8( bstrParamUnitUniqueSign) if (bstrParamUnitUniqueSign in self.s_bstrRunningParamSignArray): self.s_bstrRunningParamSignArray.remove(bstrParamUnitUniqueSign) pass
def Safe_AddMiddleResultData(self, bstrFrom, resultUnit): bstrFrom = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrFrom) if (self.s_ExecMutex.acquire()): self.s_resultMiddleUnitArray.append( CThreadRunResultUnit(bstrFrom, resultUnit)) self.s_ExecMutex.release()
def __init__(self, bstrFromSenderName, resultUnit): bstrFromSenderName = CTYLB_MainSys_MiscFunc.SafeGetUTF8( bstrFromSenderName) self.s_bstrFromName = bstrFromSenderName self.s_runResultUnit = resultUnit
def IsParamBlockSignInMyArray(self, bstrParamSign): bstrParamSign = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrParamSign) bRetValue = False if( bstrParamSign in self.s_bstrPromptWaitFinishParamSignArray): bRetValue = True return bRetValue
def __init__(self, bstrFromName, assignTaskUnit): bstrFromName = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrFromName) self.s_bstrFromName = bstrFromName self.s_assignTaskParam = assignTaskUnit
def SetTaskSignFinish(self, bstrParamSign): bstrParamSign = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrParamSign) if (bstrParamSign in self.s_bstrTaskParamSignArray): self.s_bstrTaskParamSignArray.remove(bstrParamSign)
# 设置默认环境处理 g_LessTYLB_Bot_ExecPlugin_FrameThread.SetDefaultConsoleCompatible( CtrlCHandle) # 注册用到的数据单元,当HLSession单元收到后,里面用到的单元数据 g_LessTYLB_Bot_ExecPlugin_FrameThread.RegisterNewCTUnit( CTYLB_Bot_BaseDef.s_g_iDataType_TaskRegCenter_sk_v1, CTYLB_Bot_BaseDef.s_g_iMainCmd_TaskRegCenter_Assign_WebNameBlock, CTYLB_Bot_BaseDef.s_g_iSubCmd_TaskRegCenter_Assign_WebNameBlock, CTYBot_CTUnit_TaskRegCenter_CreateNewUnit_AssignWebNameBlock) # 准备运行 g_LessTYLB_Bot_ExecPlugin_FrameThread.Prepare_Start() # 读取服务器配置 ustrTaskRegCenterName = g_LessTYLB_Bot_ExecPlugin_FrameThread.s_execTYLB_Bot_Sample.ReadIniSectionValue( config_file, u'client', u'taskcenter_id', CTYLB_Bot_BaseDef.s_g_strBotName_TaskRegCenter_sk_v1) bstrTaskRegCenterName = CTYLB_MainSys_MiscFunc.SafeGetUTF8( ustrTaskRegCenterName) # 创建运行任务线程管理单元 bstrSelfIDName = CTYLB_MainSys_MiscFunc.SafeGetUTF8( g_LessTYLB_Bot_ExecPlugin_FrameThread.GetMyName()) g_hostExecPluginBot = CTYLB_Host_V2_ExecPlugin_Bot( bstrSelfIDName, CTYBot_ExecPlugin_Each_CallBack_RunParam) g_hostExecPluginBot.StartRunThreads() hlSockMang = g_LessTYLB_Bot_ExecPlugin_FrameThread.s_HLSockMang connectEchoSock = CTYFBot_OpSession_ConnectSock( hlSockMang, bstrTaskRegCenterName, s_g_iTaskMang_Listen_Port_PluginStatusResult) CTYLB_Log.ShowLog( 0, u'RunPlugin', u'start HLSock connect remote TRC_Center.[%s:%d]' % (bstrTaskRegCenterName, s_g_iTaskMang_Listen_Port_PluginStatusResult))