protected void HandleSubMsg(byte[] data) { UInt16 appCode = 0, funcCode = 0; int opCode = 0; IProtocolHead ph = PackageUtils.Deserialize2Proto(data, ref appCode, ref funcCode, ref opCode, false); if (null == ph) { return; } if (ph is ProtoVO.common.packet) { ProtoVO.common.packet packet = ph as ProtoVO.common.packet; // for(int i = 0; i < packet.batchPackets.Count; i++) // { // HandleSubMsg(packet.batchPackets[i].packet); // } return; } Operation op = operationQueue.OnRecieve(opCode); int id = PackageUtils.GetProtocolID(appCode, funcCode); if (!handlerMap.ContainsKey(id)) { // Logger.LogWarning("Can't find handler for " + AppFnMapping.MAPPING[funcCode].Name); return; } HandleCallBack(ph, id, op, opCode); HandleOperationError(appCode, funcCode, op, ph); }
public void RegisterMsgHandler(UInt16 appCode, UInt16 funcCode, MsgHandler handler) { int id = PackageUtils.GetProtocolID(appCode, funcCode); if (!handlerDic.ContainsKey(id)) { handlerDic[id] = null; } handlerDic[id] = (MsgHandler)handlerDic[id] + handler; }
public void UnRegisterOperationErrorMsgHandler(UInt16 appCode, UInt16 funcCode, OperateErrorHandler handler) { int id = PackageUtils.GetProtocolID(appCode, funcCode); if (!oprationErrorHandlerMap.ContainsKey(id)) { Logger.LogError("id not found in handlerDic : " + id.ToString()); return; } oprationErrorHandlerMap[id] = (OperateErrorHandler)oprationErrorHandlerMap[id] - handler; }
public void UnRegisterMsgHandler(UInt16 appCode, UInt16 funcCode, MsgHandler handler) { int id = PackageUtils.GetProtocolID(appCode, funcCode); if (!handlerDic.ContainsKey(id)) { Logger.LogError("Id not found! : " + id.ToString()); return; } handlerDic[id] = (MsgHandler)handlerDic[id] - handler; }
public void RegisterOperationErrorMsgHandler(UInt16 appCode, UInt16 funcCode, OperateErrorHandler handler) { int id = PackageUtils.GetProtocolID(appCode, funcCode); if (handler == null) { Logger.LogWarning("msg handler is null: " + id); return; } if (!oprationErrorHandlerMap.ContainsKey(id)) { oprationErrorHandlerMap[id] = null; } oprationErrorHandlerMap[id] = (OperateErrorHandler)oprationErrorHandlerMap[id] + handler; }
protected override void HandleMsg(byte[] data) { Debug.Log("recieved message"); UInt16 appCode = 0, funcCode = 0; int opCode = 0; IProtocolHead ph = PackageUtils.Deserialize2Proto(data, ref appCode, ref funcCode, ref opCode); if (null == ph) { return; } // if(ph is ProtoVO.common.packet) // { // ProtoVO.common.packet packet = ph as ProtoVO.common.packet; // for(int i = 0; i < packet.batchPackets.Count; i++) // { // HandleSubMsg(packet.batchPackets[i].packet); // } // return; // } // else if(ph is ProtoVO.user.UserSyncReq) // {Logger.Log("Reconnect finish"); // // ProtoVO.user.UserSyncReq sync = ph as ProtoVO.user.UserSyncReq; // // for(int i = 0; i < sync.jobQueues.Count; i++) // { // HandleSubMsg(sync.jobQueues[i].packet); // } // if(sync.userInfo != null && sync.userInfo.packet != null) // HandleSubMsg(sync.userInfo.packet); // if( blockGameMsgBack != null) // blockGameMsgBack.Invoke(); // } Operation op = operationQueue.OnRecieve(opCode); int id = PackageUtils.GetProtocolID(appCode, funcCode); // if (!handlerMap.ContainsKey(id)) // { // Logger.LogWarning("Can't find handler for " + AppFnMapping.MAPPING[funcCode].Name); // return; // } HandleCallBack(ph, id, op, opCode); HandleOperationError(appCode, funcCode, op, ph); }
protected override void HandleMsg(string url, MsgWrap mwrap) { UInt16 appCode = 0, funcCode = 0; int opCode = 0; if (!mwrap.req.needResponse) { return; } byte[] data = mwrap.rsp.result; IProtocolHead ph = PackageUtils.Deserialize2Proto(data, ref appCode, ref funcCode, ref opCode); if (null == ph) { Debug.LogError("package error: " + url); Debug.LogError(Convert.ToBase64String(data)); return; } int id = PackageUtils.GetProtocolID(appCode, funcCode); // if(mwrap.req._callback != null) // { // mwrap.req._callback(url, ph); // } if (!handlerDic.ContainsKey(id)) { Logger.LogWarning("Can't find handler for " + appCode + " | " + funcCode); return; } Delegate handler = handlerDic[id]; if (null != handler) { ((MsgHandler)handler)(url, ph); } }
private void HandleOperationError(UInt16 appCode, UInt16 funcCode, Operation op, IProtocolHead errorPh) { if (PackageUtils.isErrorType(funcCode) && null != op) { IProtocolHead ph = op.Ph; if (null == ph) { return; } int errorId = PackageUtils.GetProtocolID(appCode, op.FuncCode); if (!oprationErrorHandlerMap.ContainsKey(errorId)) { // Logger.LogWarning("Can't find error handler for " + AppFnMapping.MAPPING[funcCode].Name); return; } Delegate func = oprationErrorHandlerMap[errorId]; if (func != null) { ((OperateErrorHandler)func)(this, ph, errorPh); } } }