コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        public void WriteObject(ClientContext context, TMessage obj)
        {
            var s = JsonSerializer.Serialize(obj);

            context.AcquireWriteLock();

            try
            {
                context.Writer.WriteData(s);
            }
            finally
            {
                context.ReleaseWriteLock();
            }
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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;
            }
        }