private void Close() { if (null == stub) { return; } stub.Dispose(); doProcess = false; stub = null; }
public ServersideClient(IConnectionStub <TMessage, TKey> stub, IThreadManager threadManager, IKeyedSubscriptionManager <TKey, MessageReceivedHandler <TMessage, TKey> > messageHandler, Guid clientId) : base(messageHandler, threadManager) { this.stub = Guard.IsNull(() => stub); stub.Write(new TMessage { ClientId = clientId }); this.clientId = clientId; StartReader(); }
public override void Connect(EndPoint endPoint) { if (null == stubBuilder) { throw new InvalidOperationException("This StubConnection does not support new connections"); } if (IsConnected) { throw new InvalidOperationException("This connection is already connected"); } stub = stubBuilder.Build(endPoint); RunReader(); }
public void Connect(EndPoint remoteEndPoint) { if (IsConnected) { Close(); } stub = connectionBuilder.Build(remoteEndPoint); int rx; var firstMessage = stub.ReadNext(out rx); OnMessageRead(rx); clientId = firstMessage.ClientId; StartReader(); }
private void EstablishConnection(IConnectionStub <TMessage, TKey> stub) { var client = clientBuilder.Build(stub); if (null == client) { return; } clientLock.EnterWriteLock(); try { if (connectedClients.ContainsKey(client.ClientId)) { client.Close(); return; } connectedClients.Add(client.ClientId, client); client.Disconnected += ClientOnDisconnected; OnClientConnected(client.ClientId); } finally { clientLock.ExitWriteLock(); } }
public IClient <TMessage, TKey> Build(IConnectionStub <TMessage, TKey> connection) { return(new ServersideClient <TMessage, TKey>(connection, threadManager, subscriptionManager, Guid.NewGuid())); }
public StubConnection(IThreadManager threadManager, IConnectionStub <TMessage, TMessageKey> establishedConnection) { this.threadManager = Guard.IsNull(() => threadManager); stub = establishedConnection; RunReader(); }