/// <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); }
/// <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); } }
public virtual void OnMessageReceived(object sender, MessagePacket e) { }
public virtual void OnMessageSent(object sender, MessagePacket e) { }