예제 #1
0
 private void InitializeMessageBus()
 {
     _messageBus = new NamedPipeMessageBus(_hostPipeName, _appPipeName);
     _messageBus.Subscribe((ApplicationActivatedMessage msg) => OnApplicationActivated());
     _messageBus.Subscribe((SendDataMessage msg) => SendMessage(msg.ConnectionIdentity, msg.Data));
     _messageBus.Subscribe((CloseConnectionMessage msg) => CloseConnection(msg.ConnectionIdentity));
 }
예제 #2
0
        public void Start()
        {
            _finishedWaitHandle.Reset();
            Init();

            _messageBus = new NamedPipeMessageBus(_appPipeName, _hostPipeName);

            _messageBus.Subscribe((ConnectionOpenedMessage msg) =>
            {
                RegisterConnection(new ProxyWebSocketConnection(msg, this));
            });

            _messageBus.Subscribe((ConnectionClosedMessage msg) =>
            {
                UnregisterConnection(msg.ConnectionIdentity);
            });

            _messageBus.Subscribe((DataReceivedMessage msg) =>
            {
                var c = GetConnection(msg.ConnectionIdentity);
                if (c == null)
                {
                    _log.Error("Received message for not existing connection");
                    return;
                }

                OnMessageReceived(new WebSocketMessageEventArgs(c, msg.Data));
            });

            _messageBus.Subscribe((PingReceivedMessage msg) =>
            {
                var c = GetConnection(msg.ConnectionIdentity);
                if (c == null)
                {
                    _log.Error("Received message for not existing connection");
                    return;
                }

                OnPingReceived(new WebSocketConnectionEventArgs(c));
            });

            _messageBus.Subscribe((CloseApplicationMessage msg) =>
            {
                Stop();
            });

            _messageBus.Notify(new ApplicationActivatedMessage());
        }