コード例 #1
0
        /// <summary>
        /// Sends a GetChannelMetadataResponse message to a customer.
        /// </summary>
        /// <param name="correlatedHeader">The message header that the messages to send are correlated with.</param>
        /// <param name="metadata">The metadata.</param>
        /// <param name="isFinalPart">Whether or not this is the final part of a multi-part message.</param>
        /// <param name="extension">The message header extension.</param>
        /// <returns>The sent message on success; <c>null</c> otherwise.</returns>
        public virtual EtpMessage <GetChannelMetadataResponse> GetChannelMetadataResponse(IMessageHeader correlatedHeader, IDictionary <string, ChannelMetadataRecord> metadata, bool isFinalPart = true, IMessageHeaderExtension extension = null)
        {
            var body = new GetChannelMetadataResponse
            {
                Metadata = metadata ?? new Dictionary <string, ChannelMetadataRecord>(),
            };

            return(SendResponse(body, correlatedHeader, extension: extension, isMultiPart: true, isFinalPart: isFinalPart));
        }
コード例 #2
0
        /// <summary>
        /// Sends a GetChannelMetadataResponse message to a consumer.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="channelMetadataRecords">The list of <see cref="ChannelMetadataRecord" /> objects.</param>
        /// <param name="messageFlag">The message flag.</param>
        /// <returns>The message identifier.</returns>
        public virtual long GetChannelMetadataResponse(IMessageHeader request, IList <ChannelMetadataRecord> channelMetadataRecords, MessageFlags messageFlag = MessageFlags.FinalPart)
        {
            var header = CreateMessageHeader(Protocols.ChannelSubscribe, MessageTypes.ChannelSubscribe.GetChannelMetadataResponse, request.MessageId, messageFlag);

            var channelMetadata = new GetChannelMetadataResponse
            {
                Metadata = channelMetadataRecords
            };

            return(Session.SendMessage(header, channelMetadata));
        }
コード例 #3
0
        /// <summary>
        /// Handles the GetChannelMetadataResponse message from a producer.
        /// </summary>
        /// <param name="header">The message header.</param>
        /// <param name="getChannelMetadataResponse">The GetChannelMetadataResponse message.</param>
        protected virtual void HandleGetChannelMetadataResponse(IMessageHeader header, GetChannelMetadataResponse getChannelMetadataResponse)
        {
            foreach (var channel in getChannelMetadataResponse.Metadata)
            {
                ChannelMetadataRecords.Add(channel);
            }

            Notify(OnGetChannelMetadataResponse, header, getChannelMetadataResponse);
        }