private async Task MakeRangeRequest(long startIndex, long endIndex, List <long> channelIds)
        {
            MessageHeader header = new MessageHeader();

            header.Protocol      = (int)Protocols.ChannelStreaming;
            header.MessageType   = 9;
            header.MessageId     = EtpHelper.NextMessageId;
            header.MessageFlags  = 0;
            header.CorrelationId = 0;

            ChannelRangeInfo info = new ChannelRangeInfo()
            {
                ChannelId  = channelIds,
                StartIndex = startIndex,
                EndIndex   = endIndex
            };

            ChannelRangeRequest requset = new ChannelRangeRequest();

            requset.ChannelRanges = new List <ChannelRangeInfo>();
            requset.ChannelRanges.Add(info);


            var data   = Encode(requset, header);
            var buffer = new ArraySegment <byte>(data, 0, data.Length);
            await m_Socket.SendAsync(buffer, WebSocketMessageType.Binary, true, CancellationToken.None).ConfigureAwait(false);
        }
Example #2
0
        /// <summary>
        /// Sends the GetRange message with the specified parameters.
        /// </summary>
        /// <param name="requestUuid">The request identifier.</param>
        /// <param name="channelIds">The channel ids.</param>
        /// <param name="startIndex">The start index.</param>
        /// <param name="endIndex">The end index.</param>
        /// <param name="uom">The unit of measure.</param>
        /// <param name="depthDatum">The depth datum.</param>
        public void GetRange(Guid requestUuid, IList <long> channelIds, object startIndex, object endIndex, string uom = null, string depthDatum = null)
        {
            if (!Session.IsRegistered <IChannelSubscribeConsumer>())
            {
                return;
            }

            var rangeInfo = new ChannelRangeInfo
            {
                ChannelId = channelIds,
                Interval  = new IndexInterval
                {
                    StartIndex = new IndexValue {
                        Item = startIndex
                    },
                    EndIndex = new IndexValue {
                        Item = endIndex
                    },
                    Uom        = uom,
                    DepthDatum = depthDatum
                }
            };

            Session.Handler <IChannelSubscribeConsumer>()
            .GetRange(requestUuid, new[] { rangeInfo });
        }
Example #3
0
        /// <summary>
        /// Requests a range of channel data.
        /// </summary>
        public void RequestRange()
        {
            var rangeInfo = new ChannelRangeInfo()
            {
                ChannelId  = Channels.Select(x => x.ChannelId).ToArray(),
                StartIndex = (long)GetStreamingStartValue(true),
                EndIndex   = (long)GetStreamingEndValue()
            };

            Parent.Client.Handler <IChannelStreamingConsumer>()
            .ChannelRangeRequest(new[] { rangeInfo });
        }
Example #4
0
        /// <summary>
        /// Sends the ChannelStreamingStop message with the specified parameters.
        /// </summary>
        /// <param name="channelIds"></param>
        /// <param name="startIndex">The start index.</param>
        /// <param name="endIndex">The end index.</param>
        public void ChannelRangeRequest(IList <long> channelIds, long startIndex, long endIndex)
        {
            if (!Session.IsRegistered <IChannelStreamingConsumer>())
            {
                return;
            }

            var rangeInfo = new ChannelRangeInfo
            {
                ChannelId  = channelIds,
                StartIndex = startIndex,
                EndIndex   = endIndex
            };

            Session.Handler <IChannelStreamingConsumer>()
            .ChannelRangeRequest(new[] { rangeInfo });
        }