/// <summary>
        /// Handles the channel streaming start.
        /// </summary>
        /// <param name="header">The header.</param>
        /// <param name="channelStreamingStart">The channel streaming start.</param>
        protected override void HandleChannelStreamingStart(IMessageHeader header, ChannelStreamingStart channelStreamingStart)
        {
            // no action needed if streaming already started
            //if (_tokenSource != null)
            //    return;

            base.HandleChannelStreamingStart(header, channelStreamingStart);

            Request = null;

            if (_tokenSource == null)
            {
                _tokenSource = new CancellationTokenSource();
            }
            var token = _tokenSource.Token;

            Logger.Debug("Channel Streaming starting.");
            Task.Run(() => StartChannelStreaming(header.MessageId, channelStreamingStart.Channels, token), token);
        }
        public async Task SendStreamRequest(List <ChannelStreamingInfo> lstChannels)
        {
            if (lstChannels.Count == 0)
            {
                return;
            }

            MessageHeader header = new MessageHeader();

            header.Protocol      = (int)Protocols.ChannelStreaming;
            header.MessageType   = 4;
            header.MessageId     = EtpHelper.NextMessageId;
            header.MessageFlags  = 0;
            header.CorrelationId = 0;
            var channelStreamingStart = new ChannelStreamingStart();

            channelStreamingStart.Channels = lstChannels;

            var data   = Encode(channelStreamingStart, header);
            var buffer = new ArraySegment <byte>(data, 0, data.Length);
            await m_Socket.SendAsync(buffer, WebSocketMessageType.Binary, true, CancellationToken.None).ConfigureAwait(false);
        }
Example #3
0
 protected override void HandleChannelStreamingStart(MessageHeader header, ChannelStreamingStart channelStreamingStart)
 {
     base.HandleChannelStreamingStart(header, channelStreamingStart);
     StartSendingChannelData(header);
 }