internal Client RaiseClientConnected(HostConnection connection, int protocolNumber) { Require.NotNull(connection, "connection"); lock (_syncRoot) { Debug.Assert(_connections.ContainsKey(connection) && _connections[connection] == null); object client = null; try { client = CreateServiceCore(protocolNumber); } catch (Exception ex) { Log.Error("Failed to create service", ex); } if (client != null) { var hostClient = new Client(client, ServiceAssembly, Service); _connections[connection] = hostClient; _clients[client] = connection; return hostClient; } else { return null; } } }
protected override void Dispose(bool disposing) { lock (SyncRoot) { if (!_disposed && disposing) { // Cancel all outstanding requests. var disconnectException = new ProtoChannelException("Channel disconnected"); _messageManager.SetError(disconnectException); _receiveStreamManager.SetError(disconnectException); if (Client != null) { Client.Dispose(); Client = null; } _disposed = true; } } base.Dispose(disposing); }