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); }
/// <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 }); }
/// <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 }); }
/// <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 }); }