public void Close() { try { if (_keepAliveTracker != null) { _keepAliveTracker.StopTimer(); } if (_keepAliveTimeoutTimer != null) { _keepAliveTimeoutTimer.Change(Timeout.Infinite, Timeout.Infinite); } var copySession = _innerSession; _innerSession = null; if (copySession != null && copySession.Active) { copySession.Close(); } this.SessionHandshaked -= OnSessionHandshaked; this.SessionDataReceived -= OnSessionDataReceived; if (ChannelDisconnected != null) { ChannelDisconnected(this, new ActorChannelDisconnectedEventArgs(this.Identifier, _remoteActor)); } } finally { _remoteActor = null; IsHandshaked = false; } }
public void Close() { try { if (_keepAliveTracker != null) { _keepAliveTracker.StopTimer(); } if (_keepAliveTimeoutTimer != null) { _keepAliveTimeoutTimer.Change(Timeout.Infinite, Timeout.Infinite); } _connector.TransportConnected -= OnTransportConnected; _connector.TransportDisconnected -= OnTransportDisconnected; _connector.TransportDataReceived -= OnTransportDataReceived; if (_connector.IsConnected) { _connector.Disconnect(); } if (_remoteActor != null) { if (ChannelDisconnected != null) { ChannelDisconnected(this, new ActorChannelDisconnectedEventArgs(this.Identifier, _remoteActor)); } } _log.DebugFormat("Disconnected with remote [{0}], SessionKey[{1}].", _remoteActor, this.ConnectToEndPoint); } finally { _remoteActor = null; IsHandshaked = false; OnClose(); } }