public void RemoveEvent(T cmd, ProtoCallBack cb) { if (events != null) { NetEventsWarp warp = null; if (events.TryGetValue(cmd, out warp)) { warp.cbs -= cb; if (warp.cbs == null) { events.Remove(cmd); } } } }
public Action AddEvent(T cmd, ProtoCallBack cb) { if (events == null) { events = new Dictionary <T, NetEventsWarp>(); } NetEventsWarp warp = null; if (events.TryGetValue(cmd, out warp)) { warp.cbs += cb; } else { events.Add(cmd, new NetEventsWarp(cb)); } return(() => { RemoveEvent(cmd, cb); }); }
/// <summary> /// 移除监听 /// </summary> public void RemoveLisener(byte protoID, ProtoCallBack cb) { eventLib.RemoveEvent(protoID, cb); }
/// <summary> /// 添加监听 /// </summary> public void AddLisener(byte protoID, ProtoCallBack cb) { eventLib.AddEvent(protoID, cb); }
public NetEventsWarp(ProtoCallBack cbs) { this.cbs = cbs; }
/// <summary> /// 监听Proto /// </summary> /// <param name="protoID"></param> /// <param name="cb"></param> protected void RegisterListenProto(byte protoID, ProtoCallBack cb) { Connection.GetInstance().AddLisener(protoID, cb); }