예제 #1
0
        public override void OnMessage(OnMessageAction callback, OnMessageOptions options)
        {
            if (this.factory.OpenConnection())
            {
                if (this.session == null)
                {
                    this.session = new Session(this.factory.Connection);
                    this.link    = new ReceiverLink(this.session, "amqp-receive-link " + this.Path, this.Path);
                }

                // start the message pump
                this.link.Start(1,
                                (r, m) =>
                {
                    if (m != null)
                    {
                        BrokeredMessage brokeredMessage = new BrokeredMessage(m);
                        callback(brokeredMessage);

                        //  if autocomplete requested
                        if (options.AutoComplete)
                        {
                            r.Accept(m);
                        }
                    }
                });
            }
        }
예제 #2
0
    private void WebSocketServer_OnMessageReceive(object sender, OnMessageAction e)
    {
        PacketResponse HandledPacket = HandlePacket(e, JObject.Parse(e.Payload.PayloadString));

        if (HandledPacket.ShouldSend)
        {
            e.Sender.Send(HandledPacket.Response, HandledPacket.Type);
        }
    }
예제 #3
0
    private PacketResponse HandlePacket(OnMessageAction e, JObject packet)
    {
        string Type = packet["Type"].ToString();

        PacketResponse Response = new PacketResponse
        {
            ShouldSend = false
        };

        if (PacketManager.ContainsKey(Type))
        {
            Console.WriteLine($"{e.Sender.Socket.ConnectedSocket.RemoteEndPoint} Sent packet with type: {Type}");
            Response = PacketManager[Type](e, this, packet);
        }
        else
        {
            Console.WriteLine($"{e.Sender.Socket.ConnectedSocket.RemoteEndPoint} Sent packet containing unknown type: {Type}");
        }

        return(Response);
    }
예제 #4
0
        public override void OnMessage(OnMessageAction callback, OnMessageOptions options)
        {
            if (this.factory.OpenConnection())
            {
                if (this.session == null)
                {
                    this.session = new Session(this.factory.Connection);
                    this.link = new ReceiverLink(this.session, "amqp-receive-link " + this.Path, this.Path);
                }

                // start the message pump
                this.link.Start(1,
                    (r, m) =>
                    {
                        if (m != null)
                        {
                            BrokeredMessage brokeredMessage = new BrokeredMessage(m);
                            callback(brokeredMessage);

                            //  if autocomplete requested
                            if (options.AutoComplete)
                                r.Accept(m);
                        }
                    });
            }
        }
예제 #5
0
 /// <summary>
 /// Processes a message in an event-driven message pump
 /// </summary>
 /// <param name="callback">The method to invoke when the operation is complete</param>
 /// <param name="options">Options for the message pump</param>
 public abstract void OnMessage(OnMessageAction callback, OnMessageOptions options);
예제 #6
0
 public void RemoveAction(OnMessageAction action)
 {
     m_Event -= action;
 }
예제 #7
0
 public void AddAction(OnMessageAction action)
 {
     m_Event += action;
 }
예제 #8
0
 /// <summary>
 /// Processes a message in an event-driven message pump
 /// </summary>
 /// <param name="callback">The method to invoke when the operation is complete</param>
 /// <param name="options">Options for the message pump</param>
 public void OnMessage(OnMessageAction callback, OnMessageOptions options)
 {
     this.CreateReceiver();
     this.Receiver.OnMessage(callback, options);
 }
예제 #9
0
        /// <summary>
        /// Processes a message in an event-driven message pump
        /// </summary>
        /// <param name="callback">The method to invoke when the operation is complete</param>
        public void OnMessage(OnMessageAction callback)
        {
            OnMessageOptions opions = new OnMessageOptions();

            this.OnMessage(callback, opions);
        }
예제 #10
0
 /// <summary>
 /// Processes a message in an event-driven message pump
 /// </summary>
 /// <param name="callback">The method to invoke when the operation is complete</param>
 /// <param name="options">Options for the message pump</param>
 public abstract void OnMessage(OnMessageAction callback, OnMessageOptions options);
예제 #11
0
 public void RemoveAction(OnMessageAction action)
 {
     m_Event -= action;  // 如果方法里会用到self,可以使用xlua.util.bind:message:AddAction(bind(self.func, self))
 }
예제 #12
0
 public void AddAction(OnMessageAction action)
 {
     m_Event += action;  // 把OnMessageAction加到LuaCallCSharp,就可以在lua侧直接message:AddAction(func)来添加方法
 }
예제 #13
0
 /// <summary>
 /// Processes a message in an event-driven message pump
 /// </summary>
 /// <param name="callback">The method to invoke when the operation is complete</param>
 /// <param name="options">Options for the message pump</param>
 public void OnMessage(OnMessageAction callback, OnMessageOptions options)
 {
     this.CreateReceiver();
     this.Receiver.OnMessage(callback, options);
 }
예제 #14
0
 /// <summary>
 /// Processes a message in an event-driven message pump
 /// </summary>
 /// <param name="callback">The method to invoke when the operation is complete</param>
 public void OnMessage(OnMessageAction callback)
 {
     OnMessageOptions opions = new OnMessageOptions();
     this.OnMessage(callback, opions);
 }