public static void Dispatch() { package pkg = new package(); lock (queueLock) { if (recvQueue.Count == 0) { return; } Queue <byte[]> tmpQueue = recvQueue; recvQueue = dispatchQueue; dispatchQueue = tmpQueue; } if (dispatchQueue.Count > 20) { Debug.Log("dispatchQueue.Count: " + dispatchQueue.Count); } while (dispatchQueue.Count > 0) { byte[] data = recvPack.unpack(dispatchQueue.Dequeue()); int offset = pkg.init(data); int tag = (int)pkg.type; long session = (long)pkg.session; if (pkg.HasType) { RpcReqHandler rpcReqHandler = NetReceiver.GetHandler(tag); if (rpcReqHandler != null) { SprotoTypeBase rpcRsp = rpcReqHandler(protocol.GenRequest(tag, data, offset)); if (pkg.HasSession) { Send(rpcRsp, session, tag); } } } else { RpcRspHandler rpcRspHandler = NetSender.GetHandler(session); if (rpcRspHandler != null) { ProtocolFunctionDictionary.typeFunc GenResponse; sessionDict.TryGetValue(session, out GenResponse); rpcRspHandler(GenResponse(data, offset)); } } } }
public static void Dispatch() { //Debug.Log("dis"); try { package pkg = new package(); if (recvQueue.Count > 20) { Debug.Log("recvQueue.Count: " + recvQueue.Count); } while (recvQueue.Count > 0) { //Debug.Log("dis"); byte[] data = recvPack.unpack(recvQueue.Dequeue()); int offset = pkg.init(data); int tag = (int)pkg.type; long session = (long)pkg.session; if (pkg.HasType) { //Debug.Log("type"); try { RpcReqHandler rpcReqHandler = NetReceiver.GetHandler(tag); if (rpcReqHandler != null) { SprotoTypeBase rpcRsp = rpcReqHandler(protocol.GenRequest(tag, data, offset)); if (pkg.HasSession) { Send(rpcRsp, session, tag); } } } catch (Exception e) { Debug.Log("NetReceiver exception: " + e.Message + tag + session + offset); throw; } } else { //Debug.Log("no type"); try { RpcRspHandler rpcRspHandler = NetSender.GetHandler(session); if (rpcRspHandler != null) { ProtocolFunctionDictionary.typeFunc GenResponse; sessionDict.TryGetValue(session, out GenResponse); rpcRspHandler(GenResponse(data, offset)); } } catch (Exception e) { Debug.Log("NetReceiver exception: " + e.Message + tag + session + offset); throw; } } } } catch (Exception e) { Debug.Log("Dispatch exception: " + e.Message); throw; } }