示例#1
0
        /// <summary>
        /// Sends a ChannelData message to a consumer.
        /// </summary>
        /// <param name="correlatedHeader">The message header that the message to send is correlated with.</param>
        /// <param name="dataItems">The list of <see cref="DataItem" /> objects.</param>
        /// <param name="isFinalPart">Whether or not this is the final part of a multi-part message.</param>
        /// <returns>The sent message on success; <c>null</c> otherwise.</returns>
        public virtual EtpMessage <ChannelData> ChannelRangeRequestChannelData(IMessageHeader correlatedHeader, IList <DataItem> data, bool isFinalPart = true)
        {
            var body = new ChannelData()
            {
                Data = data ?? new List <DataItem>(),
            };

            return(SendResponse(body, correlatedHeader, isMultiPart: true, isFinalPart: isFinalPart));
        }
示例#2
0
        /// <summary>
        /// Sends a streaming ChannelData message to a consumer.
        /// </summary>
        /// <param name="data">The list of <see cref="DataItem" /> objects.</param>
        /// <returns>The sent message on success; <c>null</c> otherwise.</returns>
        public virtual EtpMessage <ChannelData> StreamingChannelData(IList <DataItem> data)
        {
            var body = new ChannelData()
            {
                Data = data ?? new List <DataItem>(),
            };

            return(SendData(body, isMultiPart: true));
        }
        /// <summary>
        /// Sends a ChannelData message to a consumer.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="dataItems">The list of <see cref="DataItem" /> objects.</param>
        /// <param name="messageFlag">The message flag.</param>
        /// <returns>The message identifier.</returns>
        public virtual long ChannelData(IMessageHeader request, IList <DataItem> dataItems, MessageFlags messageFlag = MessageFlags.MultiPart)
        {
            var correlationId = 0L;

            // NOTE: CorrelationId is only specified when responding to a ChannelRangeRequest message
            if (request != null && request.MessageType == (int)MessageTypes.ChannelStreaming.ChannelRangeRequest)
            {
                correlationId = request.MessageId;
            }

            var header = CreateMessageHeader(Protocols.ChannelStreaming, MessageTypes.ChannelStreaming.ChannelData, correlationId, messageFlag);

            var channelData = new ChannelData()
            {
                Data = dataItems
            };

            return(Session.SendMessage(header, channelData));
        }
 /// <summary>
 /// Handles the ChannelData message from a producer.
 /// </summary>
 /// <param name="header">The message header.</param>
 /// <param name="channelData">The ChannelData message.</param>
 protected virtual void HandleChannelData(IMessageHeader header, ChannelData channelData)
 {
     Notify(OnChannelData, header, channelData);
 }