private void _onConnectedCallback(IAsyncResult pAsyncResult) { lock (__lock) { try { TcpClient pTCPClient = pAsyncResult.AsyncState as TcpClient; Debugger.Assert(System.Object.ReferenceEquals(pTCPClient, _tcpClient)); pTCPClient.EndConnect(pAsyncResult); _tcpClient.NoDelay = true; _networkStream = pTCPClient.GetStream(); Debugger.Assert(_networkStream.CanRead); __bIsReceiveHeader = true; _networkStream.BeginRead(__receiveBuffer, 0, HEAD_SIZE, _onReadCallback, 0); _connectionState = ConnectionState.CONNECTED; _InternalMsg sysMsg = new _InternalMsg(_InternalMsgType.Connected); __sysMsgQueue.Add(sysMsg); } catch (Exception e) { _InternalMsg errMsg = new _InternalMsg(_InternalMsgType.ConnectFailed, e); __sysMsgQueue.Add(errMsg); } } }
private void _onFatalError(Exception e) { _InternalMsg errMsg = new _InternalMsg(_InternalMsgType.Disconnected, e); __sysMsgQueue.Add(errMsg); this.Disconnect(); }