/// <summary>
 /// Construction 
 /// </summary>
 /// <param name="socket">client socket</param>
 /// <param name="socketServer">the socket server</param>
 /// <param name="logger">logger object for ouput session message</param>
 internal UdpSocketAsyncSession(Socket socket, ISocketServer socketServer, IMsgProtocol protocol, IList<IMsgFilter> requestFilters, IList<IMsgHandler> requestHandlers, ILogger logger)
     : base(protocol, requestFilters, requestHandlers, logger)
 {
     SessionTimeout = (socketServer as UdpSocketAsyncServer).SessionTimeout;
     m_ClientSocket = socket;
     m_SocketServer = socketServer;
     m_Logger = logger;
     m_SocketAsyncSender = new UdpSocketAsyncSender(socket, socketServer);
 }
 public void StartReceive(SocketAsyncEventArgs e, UdpSocketAsyncSender asyncSender = null, ConcurrentDictionary<string, UdpSocketAsyncBuffer> buffer = null)
 {
     bool isPeeding = m_ClientSocket.ReceiveFromAsync(e);
     if (!isPeeding)
     {
         ProcessReceive(e);
     }
 }