| 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);    }}
 |