Пример #1
0
        /// <summary>
        /// Sends a ChannelDescribe message to a producer with the specified URIs.
        /// </summary>
        /// <param name="uris">The list of URIs.</param>
        /// <returns>The sent message on success; <c>null</c> otherwise.</returns>
        public virtual EtpMessage <ChannelDescribe> ChannelDescribe(IList <string> uris)
        {
            var body = new ChannelDescribe()
            {
                Uris = uris ?? new List <string>()
            };

            return(SendRequest(body, isLongLived: true));
        }
        /// <summary>
        /// Sends a ChannelDescribe message to a producer with the specified URIs.
        /// </summary>
        /// <param name="uris">The list of URIs.</param>
        /// <returns>The message identifier.</returns>
        public virtual long ChannelDescribe(IList <string> uris)
        {
            var header = CreateMessageHeader(Protocols.ChannelStreaming, MessageTypes.ChannelStreaming.ChannelDescribe);

            var channelDescribe = new ChannelDescribe()
            {
                Uris = uris
            };

            return(Session.SendMessage(header, channelDescribe));
        }
        /// <summary>
        /// Handles the ChannelDescribe message from a consumer.
        /// </summary>
        /// <param name="header">The message header.</param>
        /// <param name="channelDescribe">The ChannelDescribe message.</param>
        protected virtual void HandleChannelDescribe(IMessageHeader header, ChannelDescribe channelDescribe)
        {
            var args = Notify(OnChannelDescribe, header, channelDescribe, new List <ChannelMetadataRecord>());

            HandleChannelDescribe(args);

            if (!args.Cancel)
            {
                ChannelMetadata(header, args.Context);
            }
        }
Пример #4
0
        /// <summary>
        /// Handles the Start message from a consumer.
        /// </summary>
        /// <param name="message">The Start message.</param>
        protected virtual void HandleStart(EtpMessage <Start> message)
        {
            MaxDataItems   = message.Body.MaxDataItems;
            MaxMessageRate = message.Body.MaxMessageRate;
            if (Capabilities.SimpleStreamer ?? false) // Treat the start message as the subscription for simple streamers
            {
                var describe = new ChannelDescribe {
                    Uris = new List <string> {
                        EtpUri.RootUri11
                    }
                };
                TryRegisterSubscriptions(message, describe.GetSubscriptions(Session.SessionId).ToMap(), nameof(describe.Uris));
            }

            HandleRequestMessage(message, OnStart, HandleStart);
        }