public static IMsgProcess GetInstance(MpTypeEnum type) { IMsgProcess instance = null; if (_instanceDic.ContainsKey(type)) { instance = _instanceDic[type]; } else { switch (type) { case MpTypeEnum.ClientConn: instance = new ClientConnMsgProcessImpl(); break; case MpTypeEnum.NewMsgPush: instance = new NewMsgPushProcessImpl(); break; case MpTypeEnum.GloableMsg: instance = new GloableMsgProcessImpl(); break; } if (!_instanceDic.ContainsKey(type)) { _instanceDic.TryAdd(type, instance); } } return(instance); }
public void Send(ClientMsgPackEntity pack) { if (pack != null) { IMsgProcess msgOp = MsgProcessFactory.GetInstance(pack.mp_type); msgOp.MsgProcess(pack, Clients, this.Context.ConnectionId); } }
/// <summary> /// 是否存在 /// </summary> /// <returns></returns> protected bool HasExtend(IMsgProcess ProcessData) { foreach (IMsgProcess msgdata in this.processList.Keys) { if (Lemon.GetObjType(msgdata) == Lemon.GetObjType(ProcessData)) { return(true); } } return(false); }
/// <summary> /// 移除一个消息总线的处理器 /// </summary> public bool RemoveProcess(IMsgProcess ProcessData) { if (this.processList.ContainsKey(ProcessData)) { IProcessor process = this.processList[ProcessData]; MessageFactory.GetMegBus().RemoveProcessor(process); this.processList.Remove(ProcessData); return(true); } else { return(false); } }
/// <summary> /// 添加一个消息总线的处理器 /// </summary> public bool AddProcess(IMsgProcess ProcessData) { if (!HasExtend(ProcessData)) { IProcessor process = new LemnadeProcessorTemplate(ProcessData); MessageFactory.GetMegBus().AddProcessor(process); this.processList.Add(ProcessData, process); return(true); } else { return(false); } }
/// <summary> /// Lemonade消息总线的消息处理器 /// </summary> public LemnadeProcessorTemplate(IMsgProcess ProcessData) { this.processdata = ProcessData; }
/// <summary> /// 删除参数指定的消息处理对象到消息总线中 /// </summary> /// <param name="ProcessData"></param> public static bool RemoveMsgProcess(IMsgProcess ProcessData) { return(ProcessFactory.GetInit().RemoveProcess(ProcessData)); }
/// <summary> /// 添加参数指定的消息处理对象到消息总线中 /// </summary> /// <param name="ProcessData"></param> public static bool AddMsgProcess(IMsgProcess ProcessData) { return(ProcessFactory.GetInit().AddProcess(ProcessData)); }
private void button1_Click(object sender, EventArgs e) { process = new CustomErrorProcess(this); Lemon.AddMsgProcess(process); }