internal RemoteDatabase(IRemoteEndpoint parent, string name)
 {
     _parent = parent;
     _adminRemoteUri = parent.AdminUri.AppendPath(name);
     _remoteUri = parent.RegularUri.AppendPath(name);
     var handler = new HttpClientHandler { Credentials = new NetworkCredential("jim", "borden") };
     handler.PreAuthenticate = true;
     _httpClient = new HttpClient(handler, true);
     Name = name;
 }
Exemple #2
0
        /// <summary>
        /// Sets incoming connection.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        public virtual void OnIncomingCallAccepted(object sender, EventArgs e)
        {
            _callInfo.StartDate = StaticTime.CurrentTime;
            PortState           = PortState.Busy;
            IPort remotePort = sender as IPort;

            if (remotePort != null)
            {
                _currentRemoteEndpoint     = remotePort;
                IncomingCallAcceptedEvent -= remotePort.OnIncomingCallAccepted;
            }
        }
Exemple #3
0
        /// <summary>
        /// Clears all events.
        /// </summary>
        public void ClearAllEvents()
        {
            if (_terminal != null)
            {
                _terminal.OutgoingCallEvent        -= OnTerminalOutgoingCall;
                _terminal.PrepareOutgoingCallEvent -= OnTerminalPrepareOutgoingCall;
                _terminal.DropEvent   -= OnTerminalDrop;
                _terminal.AnswerEvent -= OnTerminalAnswer;
                _terminal              = null;
            }

            if (_currentRemoteEndpoint != null)
            {
                _currentRemoteEndpoint.DropCallEvent       -= OnRemoteDrop;
                _currentRemoteEndpoint.OnOutgoingCallEvent -= OnIncomingCall;
                IncomingCallAcceptedEvent -= _currentRemoteEndpoint.OnIncomingCallAccepted;
                DropCallEvent             -= _currentRemoteEndpoint.OnRemoteDrop;
                _currentRemoteEndpoint     = null;
            }

            OnPortStateChangedEvent -= PortStateChanged;
        }
Exemple #4
0
 /// <summary>
 /// Gets incoming call.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="number">The number.</param>
 public virtual void OnIncomingCall(object sender, string number)
 {
     if (sender is IPort)
     {
         IPort remotePort = sender as IPort;
         remotePort.OnOutgoingCallEvent -= OnIncomingCall;
         if (PortState == PortState.Free)
         {
             _currentRemoteEndpoint = remotePort;
             _currentRemoteNumber   = number;
             PortState = PortState.IncomingCall;
             _terminal.IncomingCall(number);
             IncomingCallAcceptedEvent            += _currentRemoteEndpoint.OnIncomingCallAccepted;
             _currentRemoteEndpoint.DropCallEvent += OnRemoteDrop;
             _callInfo = new CallInfo(number, CallType.Ingoing);
         }
         else
         {
             OnPortStateChangedEvent += PortStateChanged;
             _incomingNumbers.Add(new KeyValuePair <string, IPort>(number, sender as IPort));
         }
     }
 }
Exemple #5
0
        /// <summary>
        /// Changes state.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="state">The state.</param>
        protected virtual void PortStateChanged(object sender, PortState state)
        {
            if (state == PortState.Free)
            {
                OnPortStateChangedEvent -= PortStateChanged;
                if (_currentRemoteEndpoint != null)
                {
                    _currentRemoteEndpoint.DropCallEvent       -= OnRemoteDrop;
                    _currentRemoteEndpoint.OnOutgoingCallEvent -= OnIncomingCall;
                    IncomingCallAcceptedEvent -= _currentRemoteEndpoint.OnIncomingCallAccepted;
                }

                if (_incomingNumbers.Count > 0)
                {
                    KeyValuePair <string, IPort> keyValue = _incomingNumbers.FirstOrDefault();
                    _currentRemoteNumber   = keyValue.Key;
                    _currentRemoteEndpoint = keyValue.Value;

                    _incomingNumbers.Remove(keyValue);

                    IncomingCallAcceptedEvent            += _currentRemoteEndpoint.OnIncomingCallAccepted;
                    _currentRemoteEndpoint.DropCallEvent += OnRemoteDrop;

                    PortState = PortState.IncomingCall;
                    _terminal.IncomingCall(_currentRemoteNumber);
                    _callInfo = new CallInfo(_currentRemoteNumber, CallType.Ingoing);
                }
                else
                {
                    if (FinishedEvent != null)
                    {
                        FinishedEvent(this, null);
                    }
                }
            }
        }