12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- using System;
- using System.Collections.Generic;
- using XGame.Framework.Interfaces;
- namespace XGame.Framework.Network
- {
- public class MsgContextCache : IReset, IDisposable
- {
- private Dictionary<int, MsgContextInfo> _mapContext = new Dictionary<int, MsgContextInfo>();
- public void Push(int instanceID, int protocol, object context)
- {
- MsgContextInfo info = ObjectPool.Acquire<MsgContextInfo>();
- info.protocolID = protocol;
- info.context = context;
- _mapContext[instanceID] = info;
- }
- public bool Pop(int instanceID, out int protocol, out object context)
- {
- if (_mapContext.TryGetValue(instanceID, out MsgContextInfo info))
- {
- _mapContext.Remove(instanceID);
- protocol = info.protocolID;
- context = info.context;
- ObjectPool.Recycle(info);
- return true;
- }
- protocol = 0;
- context = null;
- return false;
- }
- public void Reset()
- {
- foreach (var item in _mapContext)
- {
- ObjectPool.Recycle(item.Value);
- }
- _mapContext.Clear();
- }
- //public void CheckRecv(IMessage message)
- //{
- // if (message is IMsgPush)
- // {
- // var args = ObjectPool.Acquire<SessionPushRecvdEventArgs>();
- // args.protocolID = message.ProtocolID;
- // args.PushMsg = message;
- // node.Notify(EventDefine.SESSION_PUSH_RECVED, args);
- // ObjectPool.Recycle(args);
- // }
- // else
- // {
- // var args = ObjectPool.Acquire<SessionResponseRecvdEventArgs>();
- // args.protocolID = message.ProtocolID;
- // args.context = message.Context;
- // args.seq = message.InstanceID;
- // args.ResponseMsg = message;
- // if (LastID == message.InstanceID)
- // {
- // CanSend = true;
- // args.IsFilter = true;
- // }
- // else
- // {
- // args.IsFilter = false;
- // }
- // node.Notify(EventDefine.SESSION_RESPONSE_RECVED, args);
- // ObjectPool.Recycle(args);
- // }
- //}
- public void Dispose()
- {
- Reset();
- }
- public class MsgContextInfo : IReference
- {
- public int protocolID;
- public object context;
- public void Clear()
- {
- protocolID = 0;
- context = null;
- }
- }
- }
- }
|