/// <summary>
 /// Initializes a new instance of the <see cref="EventComponent" /> class.
 /// </summary>
 /// <param name="robot">The robot.</param>
 internal EventComponent(Robot robot) : base(robot)
 {
     this.eventFeed = new AsyncEventLoop <EventResponse>(
         (token) => robot.StartStream(client => client.EventStream(new EventRequest(), cancellationToken: token)),
         ProcessEvent,
         () =>
     {
         OnPropertyChanged(nameof(IsProccessingEvents));
         Robot.Disconnect().ConfigureAwait(false);
     },
         robot.PropagateException
         );
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="AudioComponent" /> class.
 /// </summary>
 /// <param name="robot">The robot.</param>
 internal AudioComponent(Robot robot) : base(robot)
 {
     this.audioFeed = new AsyncEventLoop <AudioFeedResponse>(
         (token) => robot.StartStream(client => client.AudioFeed(new AudioFeedRequest(), cancellationToken: token)),
         (response) => AudioReceived?.Invoke(this, new AudioReceivedEventArgs(response)),
         () => OnPropertyChanged(nameof(IsAudioFeedActive)),
         robot.PropagateException
         );
     this.playbackFeed = new AsyncDuplexEventLoop <ExternalAudioStreamRequest, ExternalAudioStreamResponse>(
         (token) => Robot.StartStream(client => client.ExternalAudioStreamPlayback(cancellationToken: token)),
         ProcessAudioResponse,
         () => { OnPropertyChanged(nameof(IsPlaybackActive)); playbackResult?.SetResult(PlaybackResult.Completed); },
         Robot.PropagateException
         );
 }
Exemple #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="NavMapComponent" /> class.
 /// </summary>
 /// <param name="robot">The robot.</param>
 internal NavMapComponent(Robot robot) : base(robot)
 {
     this.navMapFeed = new AsyncEventLoop <NavMapFeedResponse>(
         (token) => robot.StartStream(client => client.NavMapFeed(new NavMapFeedRequest()
     {
         Frequency = Frequency
     }, cancellationToken: token)),
         (response) =>
     {
         var navMapUpdateEventArgs = new NavMapUpdateEventArgs(response);
         LatestNavMap = navMapUpdateEventArgs.NavMap;
         NavMapUpdate?.Invoke(this, navMapUpdateEventArgs);
     },
         () => OnPropertyChanged(nameof(IsFeedActive)),
         robot.PropagateException
         );
 }