Пример #1
0
 /// <summary>
 /// Connect this to the remote relay service.
 /// </summary>
 public async Task Connect(string remote, RelayClientOptions options)
 {
     _eventStream = new RelayEventStream(OnRelayEvent);
     _options     = options;
     var authToken = _auth.GenerateAuthToken(_options.auth);
     await _eventStream.Connect(remote, authToken, options);
 }
Пример #2
0
        /// <summary>
        /// Handling incoming remote events
        /// </summary>
        private async Task OnRelayEvent(RelayEvent relayEvent, RelayEventStream eventStream)
        {
            switch (relayEvent.EventType)
            {
            case RelayEventType.Connected:
                await InitializeClient();

                break;

            case RelayEventType.Disconnected:
                _eventHandler.OnDisconnected();
                break;

            case RelayEventType.IncomingEvent:
                DispatchEvent(relayEvent.IncomingEvent);
                break;

            case RelayEventType.Error:
                _eventHandler.OnError(relayEvent.Error);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #3
0
        /// <summary>
        /// Disconnect from the remote service
        /// </summary>
        /// <returns></returns>
        public async Task Disconnect()
        {
            if (_eventStream == null)
            {
                return;
            }
            var events = _eventStream;

            _eventStream = null;
            await events.Disconnect();
        }