#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # #------------------------------------------------------------------------------- # from Protocol import (MMORPGPack,RecvPackProtocol, SendPackProtocol) from Common import (CommFunc, mylog) # from DBCommon import (CommonDefine,SingletonObject) # import GMToolCommandMgr # g_GMCMDMgr = GMToolCommandMgr.GetGMOrderMgr() ################################################################## ####### ÌṩµÄ½Ó¿Ú ###### #ת·¢GM¹¤¾ßÃüÁî°üµ½GameServer def SendGMToolCommandToGameServer(pack): # global g_GMCMDMgr # recvPack = RecvPackProtocol.tagGMCommand() # recvPack.ReadData(pack.getBuffer()) # recvPack.Type = CommonDefine.bgDBGMCommand # mylog.info('ProjSpecialProcess SendGMToolCommandToGameServer OrderId = %s'%recvPack.OrderId) # ServerMgr = MongoDBServer.getServerMgr() # sendViaSessionID = ServerMgr.getClientSessionIDByName("CenterGate",0) # SessionID = 0 # PoolIndex = -1 # mylog.info('ProjSpecialProcess SendGMToolCommandToGameServer sendViaSessionID = %s,SessionID = %d,PoolIndex = %d'%( # sendViaSessionID, # SessionID, # PoolIndex)) # ServerMgr.packSendBySessionID(sendViaSessionID, SessionID, PoolIndex, # CommonDefine.atInner, # MMORPGPack.stGame, MMORPGPack.stData, # recvPack.GetBuffer()) mylog.info('ProjSpecialProcess SendGMToolCommandToGameServer Done') #»Ø¸´GM¹¤¾ßÃüÁîÖ´Ðнá¹û°ü def SendToGMToolCommandResult(OrderLen,OrderId,ResultLen,Result,UserDataLen,UserData): # global g_GMCMDMgr # if isinstance(Result, unicode): # #Ö±½Ó´ÓÊý¾Ý¿âδ½øÐÐת»¯µÄ»°ÊÇunicode # Result = Result.encode('gbk') # mylog.info('ProjSpecialProcess SendToGMToolCommandResult OrderId = %s'%OrderId) # recvPack = SendPackProtocol.tagGMCommandResult() # recvPack.Type = CommonDefine.gstGMToolCommandResult # recvPack.OrderLen = OrderLen # recvPack.OrderId = OrderId # recvPack.ResultLen = ResultLen # recvPack.Result = Result # recvPack.UserDataLen = UserDataLen # recvPack.UserData = UserData # sendViaSessionID = g_GMCMDMgr.PopPair(recvPack.OrderId) # ServerMgr = MongoDBServer.getServerMgr() # SessionID = 0 # PoolIndex = -1 # mylog.info('ProjSpecialProcess SendToGMToolCommandResult sendViaSessionID = %s,SessionID = %d,PoolIndex = %d'%(sendViaSessionID, SessionID,PoolIndex)) # if sendViaSessionID == '': # mylog.warning('ProjSpecialProcess SendToGMToolCommandResult Fail, No Client in GMToolPort') # return # ServerMgr.packSendBySessionID(sendViaSessionID, SessionID, PoolIndex, # CommonDefine.atInner, # MMORPGPack.stGMTool, MMORPGPack.stData, # recvPack.GetBuffer()) mylog.info('ProjSpecialProcess SendToGMToolCommandResult Done') #·¢ËÍÊý¾Ý¿âÇëÇó def SendDBRequest(Type,OrderLen,OrderId,DataLen,Data): #Type˵Ã÷ #CommonDefine.gstGMToolCmdSysDBRequest #GM¹¤¾ßSysCtrlDBÇëÇóÀàÐÍ #CommonDefine.gstGMToolCmdLogDBRequest #GM¹¤¾ßLogCtrlDBÇëÇóÀàÐÍ #CommonDefine.gstGMToolCmdUserDBRequest #GM¹¤¾ßUserCtrlDBÇëÇóÀàÐÍ # #¹¹½¨ÇëÇó°ü # pack = RecvPackProtocol.tagGMCommandDBRequest() # pack.Type = Type # pack.OrderLen = OrderLen # pack.OrderId = OrderId # pack.DataLen = DataLen # pack.Data = Data # #·¢ÇëÇó°ü # sendPack = SingletonObject.getPackPool().alloc() # sendPack.setSendViaSocketID(-1) # sendPack.getPackHead().sessionID = 0 # sendPack.getPackHead().poolIndex = -1 # sendPack.getPackHead().type = CommonDefine.atInner # sendPack.setBuffer(pack.GetBuffer()) # ctrlDBMgr = CtrlDBManager.getCtrlMgr() # ctrlDBMgr.dbRequestPush(sendPack) # mylog.info('ProjSpecialProcess SendDBRequest Done ,Type = %s, OrderId = %s'%(Type,OrderId)) return True #·¢ËÍÂß¼­´¦ÀíÇëÇó def SendLogicProcessRequest(Type,OrderLen,OrderId,DataLen,Data): #Type˵Ã÷ #CommonDefine.gstGMToolCmdLogicProcessRequest #GM¹¤¾ßLogicÇëÇóÀàÐÍ #¹¹½¨ÇëÇó°ü # pack = RecvPackProtocol.tagGMCommandDBRequest() # pack.Type = Type # pack.OrderLen = OrderLen # pack.OrderId = OrderId # pack.DataLen = DataLen # pack.Data = Data # #·¢ÇëÇó°ü # sendPack = SingletonObject.getPackPool().alloc() # sendPack.setSendViaSocketID(-1) # sendPack.getPackHead().sessionID = 0 # sendPack.getPackHead().poolIndex = -1 # sendPack.getPackHead().type = CommonDefine.atInner # sendPack.setBuffer(pack.GetBuffer()) # logicProcess = GlobalVarDefine.g_logicProcessThread # if logicProcess == None: # mylog.warning('ProjSpecialProcess SendLogicProcessRequest Fail!!! logicProcessThread == None??') # return False # logicProcess.requestPush(sendPack) # mylog.info('ProjSpecialProcess SendLogicProcessRequest Done ,Type = %s, OrderId = %s'%(Type,OrderId)) return True ##################################################################