Esempio n. 1
0
        private void HandleSpecificPacket(ChannelOpen packet)
        {
            logger.LogDebug("Processing ChannelOpen packet, channel type '{Type}', initial window {Window}, max packet {Size}.", packet.ChannelType, packet.InitialWindowSize, packet.MaximumPacketSize);

            // TODO - if we're low on memory, or they've opened too many channels, fail. Other cases?

            /*
             * var fail = new ChannelOpenFailure
             * {
             *  RecipientChannel = packet.SenderChannel,
             *  ReasonCode = 4,
             *  Description = "Not yet implemented."
             * };
             *
             * Send(fail);
             */

            Channel channel;

            lock (channels)
            {
                // TODO - use a factory to create channels, to populate logger and whatever else it might need
                channel = channelFactory.Create(this, packet, nextChannelId++);
                channels.Add(channel.ServerChannelId, channel);
            }

            channel.Init();
        }
Esempio n. 2
0
 public MessageBroker(IChannelFactory channelFactory, ILoggerFactory loggerFactory)
 {
     _loggerFactory  = loggerFactory;
     _logger         = loggerFactory.CreateLogger <MessageBroker>();
     _channelFactory = channelFactory;
     _channel        = _channelFactory.Create();
 }
Esempio n. 3
0
        /// <summary>
        /// 创建并启动Channel
        /// </summary>
        /// <param name="factory"></param>
        /// <returns></returns>

        public TChannel LaunchChannel(IPAddress inetHost, int inetPort)
        {
            //初始化Channel
            TChannel channel = mChannelFactory.Create();

            Init(channel, new IPEndPoint(inetHost, inetPort));
            return(channel);
        }
Esempio n. 4
0
 private IStreamingAudioChannel GetChannelFor(Uri source)
 {
     if (_channels.TryGetValue(source.ToString(), out var channel))
     {
         return(channel);
     }
     channel = _channelFactory.Create(source);
     if (channel == null)
     {
         return(null);
     }
     AddChannel(channel);
     return(channel);
 }
Esempio n. 5
0
        static void SendDelayMessage(IMessageBroker messageBroker, IChannelFactory channelfactory)
        {
            var channel = channelfactory.Create();

            var exchangename = "fzf.delayed-9";

            ///声明交换机
            channel.DefineDelayExchange(exchangetype: ExchangeType.Direct, exchangename: exchangename);

            messageBroker.RegisterHandle(exchangeName: exchangename, queueName: "delayed.process", onMessage: (context, props) =>
            {
                Console.WriteLine("接受消息:{0}", Encoding.UTF8.GetString(context.RequestMessage.Body.Span));
                Console.WriteLine("接受时间:{0}", DateTime.Now.ToString());
                Console.WriteLine("========================================================");
                return(Task.CompletedTask);
            });



            channel.SendDelayMessage(message: Encoding.UTF8.GetBytes(Guid.NewGuid().ToString("N")), exchangename: exchangename, delayseconds: 5);
        }