コード例 #1
0
        private void TerminalOnConnectSucceededEvent(object sender, ConnectResponse connectResponse)
        {
            if (connectResponse == null) throw new ArgumentNullException(nameof(connectResponse));

            CallInfo call = RemoveActiveConnectionByActor(connectResponse.ConnectRequest.Sender);
            if (call != null)
            {
                _activeCalls.Add(new SourseTargetPair(call.Source, call.Target), call);
                OnCallStartEvent(call);
            }
        }
コード例 #2
0
 private void OnConnectSucceededEvent(ConnectResponse response)
 {
     ConnectSucceededEvent?.Invoke(MACAddress, response);
 }
コード例 #3
0
        private void TerminalOnConnectFailedEvent(object sender, ConnectResponse connectResponse)
        {
            if (connectResponse == null) throw new ArgumentNullException(nameof(connectResponse));

            CallInfo call = RemoveActiveConnectionByActor(connectResponse.ConnectRequest.Sender);
            if (call != null)
            {
                OnConnectionFailedEvent(call);
                UnbindPortsByCall(call);
            }
        }
コード例 #4
0
        public void ProcessRequest(object sender, IRequest request)
        {
            if (sender == null) throw new ArgumentNullException(nameof(sender));
            if (request == null) throw new ArgumentNullException(nameof(request));
            if (State == TerminalState.Unplagged)
                throw new StateException($"{this} unplagged");

            var senderMac = sender as string;
            if (senderMac == null || senderMac != _registeredPortMAC) return;

            if (request is ConnectRequest)
            {
                if (State == TerminalState.Online)
                {
                    var r = new ConnectResponse((ConnectRequest)request, ConnectResponse.TerminalBusy);
                    OnSendResponseEvent(r);
                }
                else
                {
                    State = TerminalState.Online;
                    var r = new ConnectResponse((ConnectRequest)request, ConnectResponse.TerminalOk);
                    OnSendResponseEvent(r);
                }
                return;
            }

            if (State == TerminalState.Offline) return;

            ProcessRequestWhenConnect(request);
        }