using System.Collections.Concurrent; using Fort23.UTool; using NetCore; using NetCore.ContentParse; using NetCore.Protocol.MemoryPack; using NetServer.InternalServer; using NetServerCore.NetLink; namespace NetServer.ServerLogic; public class PublicLogicManager : LogicManagerBaisc { private ConcurrentDictionary _concurrentDictionary = new ConcurrentDictionary(); public override void Logic(object data, IConnection iConnection) { LogTool.Log("收到一个客户端请求"); byte[] databyte = data as byte[]; int index = 0; byte[] serverType = new byte[4]; serverType[0] = databyte[index++]; serverType[1] = databyte[index++]; serverType[2] = databyte[index++]; serverType[3] = databyte[index++]; ServerType serverTypeEnum = (ServerType)BitConverter.ToInt32(serverType, 0); byte[] TransparentData = new byte[databyte.Length - 4]; Array.Copy(databyte, 4, TransparentData, 0, TransparentData.Length); InternalMemoryResponese internalMemoryResponese = new InternalMemoryResponese(); internalMemoryResponese.SendType = InternalSendType.Transparent; internalMemoryResponese.ClinetConnectionId = iConnection.ConnectionId; internalMemoryResponese.TransitData = TransparentData; SendInternalServerManager.Instance.SendInternalServer(serverTypeEnum, internalMemoryResponese, ResponeseCallBack); } private void ResponeseCallBack(InternalMemoryRequst internalMemoryRequst) { if (_concurrentDictionary.TryGetValue(internalMemoryRequst.ResponeseClinetConnectionId, out IConnection iConnection)) { iConnection.SendData(internalMemoryRequst.TransitData); } } public override void AddConnection(IConnection iConnection) { _concurrentDictionary.TryAdd(iConnection.ConnectionId, iConnection); } public override void RemoveConnection(IConnection iConnection) { _concurrentDictionary.TryRemove(iConnection.ConnectionId, out _); } }