Пример #1
0
        /// <summary>
        /// Update web socket stream URI when published streams change.
        /// </summary>
        protected override void OnPublishedStreamsChanged()
        {
            Stream.Uri = BinanceWebSocketStream.CreateUri(PublishedStreams.ToArray());

            // Call base class to handle automatic streaming.
            base.OnPublishedStreamsChanged();
        }
Пример #2
0
        private void HandleAutomaticStreaming()
        {
            lock (_sync)
            {
                if (!_task.IsCompleted)
                {
                    return;
                }

                Logger?.LogDebug($"{GetType().Name}.{nameof(HandleAutomaticStreaming)}: Delayed automatic stream control...  [thread: {Thread.CurrentThread.ManagedThreadId}]");

                _task = Task.Delay(250).ContinueWith(async _ =>
                {
                    try
                    {
                        if (!Stream.IsStreaming && PublishedStreams.Any())
                        {
                            Logger?.LogDebug($"{GetType().Name}.{nameof(HandleAutomaticStreaming)}: Begin...  [thread: {Thread.CurrentThread.ManagedThreadId}]");

                            Controller.Begin();
                        }
                        else if (Stream.IsStreaming && !PublishedStreams.Any())
                        {
                            Logger?.LogDebug($"{GetType().Name}.{nameof(HandleAutomaticStreaming)}: Cancel...  [thread: {Thread.CurrentThread.ManagedThreadId}]");

                            await Controller.CancelAsync()
                            .ConfigureAwait(false);
                        }
                    }
                    catch (Exception e)
                    {
                        Logger?.LogError(e, $"{GetType().Name}: Automatic stream control failed.  [thread: {Thread.CurrentThread.ManagedThreadId}]");
                    }
                });
            }
        }