private void AcceptClient(IAsyncResult ar) { Socket socket = m_Socket.EndAccept(ar); ClientNetter clientNetter = new ClientNetter(socket); clientNetter.Id = (uint)(s_ClientAutoId++); Dictionary <int, MessageParser> .Enumerator parserEnumator = m_ReceiveParserDic.GetEnumerator(); while (parserEnumator.MoveNext()) { clientNetter.AddParser(parserEnumator.Current.Key, parserEnumator.Current.Value); } Dictionary <int, ServerMessageReceiveDelegate> .Enumerator delegateEnumator = m_ReceiveDelegateDic.GetEnumerator(); while (delegateEnumator.MoveNext()) { MessageReceiveDelegate callback = (message) => { ClientEndReceive(clientNetter.Id, message); }; clientNetter.AddReceiveDelegate(delegateEnumator.Current.Key, callback); } m_ClientDict.Add(clientNetter.Id, clientNetter); m_ClientList.Add(clientNetter); clientNetter.BeginReceive(); }
internal Constants.MessageProcessInstruction OnMessageReceivedHandler(string message, string sourceQueueName, long firstErrorTimestamp, string consumerDescription) { MessageReceiveDelegate handler = onMessageReceived; if (handler != null) { return(handler(message, sourceQueueName, firstErrorTimestamp, consumerDescription)); } return(Constants.MessageProcessInstruction.Unknown); }
//处理接收到的协议 private void Excute() { while (true) { ReceiveObject receiveObject = null; //从处理队列中得到需要处理的协议对象 if (m_ReceiveQueue.TryDequeue(out receiveObject)) { MessageReceiveDelegate messageReceiveDelegate = null; if (m_ReceiveDelegateDic.TryGetValue(receiveObject.command, out messageReceiveDelegate)) { //业务处理 messageReceiveDelegate(receiveObject.message); } continue; } break; } }
public void AddReceiveDelegate(int command, MessageReceiveDelegate receiveDelegate) { m_ReceiveDelegateDic.Add(command, receiveDelegate); }