/// <summary>
        /// Sends a GetRange message to a producer.
        /// </summary>
        /// <param name="channelRangeInfos">The list of <see cref="ChannelRangeInfo" /> objects.</param>
        /// <returns>The message identifier.</returns>
        public virtual long GetRange(IList <ChannelRangeInfo> channelRangeInfos)
        {
            var header = CreateMessageHeader(Protocols.ChannelSubscribe, MessageTypes.ChannelSubscribe.GetRange);

            var channelRangeRequest = new GetRange
            {
                ChannelRanges = channelRangeInfos
            };

            return(Session.SendMessage(header, channelRangeRequest));
        }
 /// <summary>
 /// Handles the GetRange message from a consumer.
 /// </summary>
 /// <param name="header">The message header.</param>
 /// <param name="getRange">The GetRange message.</param>
 protected virtual void HandleGetRange(IMessageHeader header, GetRange getRange)
 {
     Notify(OnGetRange, header, getRange);
 }