예제 #1
0
    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();
    }
예제 #2
0
        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);
        }
예제 #3
0
    //处理接收到的协议
    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;
        }
    }
예제 #4
0
 public void AddReceiveDelegate(int command, MessageReceiveDelegate receiveDelegate)
 {
     m_ReceiveDelegateDic.Add(command, receiveDelegate);
 }