private ProtoClient(ProtoClientConfiguration configuration, TcpClient tcpClient, string hostname) { Require.NotNull(hostname, "hostname"); Configuration = configuration ?? new ProtoClientConfiguration(); Configuration.Freeze(); ServiceAssembly = ServiceRegistry.GetAssemblyRegistration( Configuration.ServiceAssembly ?? GetType().Assembly ); var streamManager = Configuration.StreamManager ?? new MemoryStreamManager(); _connection = new ClientConnection(this, tcpClient, hostname, streamManager); if (Configuration.CallbackObject != null) { Service service = null; if (!(Configuration.CallbackObject is IProtoMessageDispatcher)) service = ServiceAssembly.GetServiceRegistration(Configuration.CallbackObject.GetType()); _connection.Client = new Client(configuration.CallbackObject, ServiceAssembly, service); } }
protected virtual void Dispose(bool disposing) { if (!_disposed && disposing) { OnDisposed(EventArgs.Empty); var connection = _connection; _connection = null; if (connection != null) connection.Dispose(); _disposed = true; } }