12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- using System.Collections.Concurrent;
- using NetCore;
- using NetCore.Protocol.MemoryPack;
- namespace NetServer.InternalServer;
- public class SendInternalServerManager
- {
- public class ResponeseCallBack
- {
- public long sendCount;
- public long sendTime;
- public System.Action<InternalMemoryRequst> callBack;
- }
- public static SendInternalServerManager Instance
- {
- get
- {
- if (_sendInternalServerManager == null)
- {
- _sendInternalServerManager = new SendInternalServerManager();
- }
- return _sendInternalServerManager;
- }
- }
- public static SendInternalServerManager _sendInternalServerManager;
- private long sendCount;
- private ConcurrentDictionary<long, ResponeseCallBack> _responeseCallBacks = new ConcurrentDictionary<long, ResponeseCallBack>();
- public void NoticeResponeseCallBack(InternalMemoryRequst internalMemoryRequst)
- {
- if (_responeseCallBacks.Remove(internalMemoryRequst.ResponeseSendSequence, out ResponeseCallBack callBack))
- {
- callBack.callBack?.Invoke(internalMemoryRequst);
- }
- }
- public void SendInternalServer(ServerType serverType, InternalMemoryResponese internalMemoryResponese,
- System.Action<InternalMemoryRequst> callBack)
- {
- long currSendCount = sendCount++;
- ResponeseCallBack responeseCallBack = new ResponeseCallBack();
- responeseCallBack.sendTime = System.DateTime.Now.Ticks;
- responeseCallBack.sendCount= currSendCount;
- responeseCallBack.callBack= callBack;
- internalMemoryResponese.sendSequence = currSendCount;
- _responeseCallBacks.TryAdd(currSendCount, responeseCallBack);
- IConnection connection= ServerLinkMnager.Instance.GetServerConnection(serverType);
- connection.SendData(internalMemoryResponese);
- }
- }
|