Ejemplo n.º 1
0
        /// <summary>
        /// Message issuance
        /// </summary>
        /// <param name="sender">Message sender</param>
        /// <param name="msg">Message</param>
        /// <param name="isAsync">Whether or not to send asynchronously</param>
        public void Send(object sender, object msg, bool isAsync)
        {
            if (msg == null)
            {
                return;
            }

            Type     msgType = msg.GetType();
            Delegate handler = subjectList[msgType].Delegate;

            if (handler == null)
            {
                subjectList.Remove(msgType);
                return;
            }

            MessagePacket e = new MessagePacket(msg);

            HookManager.OnMessageSending(sender, e);

            if (e.Canceled)
            {
                HookManager.OnMessageSent(sender, e);
                return;
            }
            e.Sender  = sender;
            e.Handler = handler;

            if (isAsync && sendCallBack.Target != null)
            {
                ThreadPool.QueueUserWorkItem(sendCallBack, e);
            }
            else
            {
                DoSend(e);
            }

            HookManager.OnMessageSent(sender, e);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Call the client Callback functin ditectely, often used in the message hook interception processing
        /// </summary>
        /// <param name="e"></param>
        public void SendMessage(MessagePacket e)
        {
            if (e == null || e.Handler == null)
            {
                return;
            }

            HookManager.OnMessageReceiving(e.Sender, e);

            if (e.Canceled)
            {
                return;
            }

            if (AsyncMessageMode == AsyncMessageMode.Receive ||
                AsyncMessageMode == AsyncMessageMode.Both)
            {
                ThreadPool.QueueUserWorkItem(receieveCallBack, e);
            }
            else
            {
                OnReceive(e);
            }
        }
Ejemplo n.º 3
0
 public virtual void OnMessageReceived(object sender, MessagePacket e)
 {
 }
Ejemplo n.º 4
0
 public virtual void OnMessageSent(object sender, MessagePacket e)
 {
 }