private void HandleGoodbyeMessage(ClientContext context) { InvokeGoodbyeReceived(context.Client); InvokeDisconnecting(context.Client); context.AcquireWriteLock(); try { context.Writer.WriteGoodbye(); } finally { context.ReleaseWriteLock(); } InvokeGoodbyeSent(context.Client); InvokeDisconnected(context.Client); context.DisconnectEventsTriggered = true; context.Client.Close(); //context.IsConnected = false; lock (_clients) { _clients.Remove(context); } }
private void HandleClientHello(ClientContext context, Message message) { switch (message.Type) { case MessageType.Hello: InvokeHelloReceived(context.Client); InvokeConnecting(context.Client); context.AcquireWriteLock(); try { context.Writer.WriteHello(); } finally { context.ReleaseWriteLock(); } InvokeHelloSent(context.Client); lock (_clients) { _clients.Add(context); } InvokeConnected(context.Client); break; default: context.AcquireWriteLock(); try { context.Writer.WriteError("Hello expected"); } finally { context.ReleaseWriteLock(); } break; } }
public void WriteObject(ClientContext context, TMessage obj) { var s = JsonSerializer.Serialize(obj); context.AcquireWriteLock(); try { context.Writer.WriteData(s); } finally { context.ReleaseWriteLock(); } }