public override async Task Start(Models.Simulation model, CancellationToken token, int interval = 5000)
        {
            Model     = model;
            Simulator = new Etp12Simulator(model);

            _log.Debug($"Establishing ETP connection for {Model.EtpConnection}");

            using (Client = Model.EtpConnection.CreateEtpClient(Model.Name, Model.Version))
            {
                Client.Register <IChannelStreamingProducer, ChannelStreamingProducerHandler>();
                Client.Handler <IChannelStreamingProducer>().OnStartStreaming += OnStartStreaming;
                Client.Handler <IChannelStreamingProducer>().OnStopStreaming  += OnStopStreaming;
                //Client.Handler<IChannelStreamingProducer>().OnStart += OnStart;
                //Client.Handler<IChannelStreamingProducer>().OnChannelDescribe += OnChannelDescribe();
                //Client.Handler<IChannelStreamingProducer>().OnChannelStreamingStart += OnChannelStreamingStart;
                //Client.Handler<IChannelStreamingProducer>().OnChannelStreamingStop += OnChannelStreamingStop;
                //Client.Handler<IChannelStreamingProducer>().IsSimpleStreamer = Model.IsSimpleStreamer;
                //Client.Handler<IChannelStreamingProducer>().DefaultDescribeUri = EtpUri.RootUri;
                Client.SocketClosed += OnClientSocketClosed;
                Client.Output        = Log;

                if (!await Client.OpenAsync())
                {
                    Log("Error opening web socket connection");
                    return;
                }

                while (true)
                {
                    if (token.IsCancellationRequested)
                    {
                        break;
                    }

                    try
                    {
                        await Task.Delay(interval, token);
                    }
                    catch (TaskCanceledException)
                    {
                        break;
                    }
                }

                TaskRunner.Stop();

                Client.Handler <ICoreClient>()
                .CloseSession("Streaming stopped.");
            }
        }
 public SimulationChannelStreaming12Provider(IEtpSimulator simulator)
 {
     Simulator = simulator;
 }
 public SimulationDiscovery12Provider(IEtpSimulator simulator)
 {
     Simulator = simulator;
 }
 public SimulationChannelStreaming11Provider(IEtpSimulator simulator)
 {
     Simulator        = simulator;
     IsSimpleStreamer = true;
 }