From 8e45469c834c45822f9e8af877c52ba516c52296 Mon Sep 17 00:00:00 2001 From: bob <605277374@qq.com> Date: Mon, 30 Jun 2025 10:51:37 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A5=AD=E5=A4=AA=E7=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 35 + Entity/AssemblyHelper.cs | 41 + Entity/Entity.csproj | 24 + .../Generate/ConfigTable/Entity/UnitConfig.cs | 99 + .../ConfigTable/Partial/UnitConfigData.cs | 10 + Entity/Generate/CustomExport/SceneType.cs | 27 + .../Generate/NetworkProtocol/InnerMessage.cs | 333 ++ .../Generate/NetworkProtocol/InnerOpcode.cs | 22 + .../Generate/NetworkProtocol/OuterMessage.cs | 787 ++++ .../Generate/NetworkProtocol/OuterOpcode.cs | 44 + .../Generate/NetworkProtocol/RoamingType.cs | 18 + Entity/Generate/NetworkProtocol/RouteType.cs | 9 + Entity/Model/Addressable/Unit.cs | 8 + Entity/Model/RouteMessage/ChatUnit.cs | 19 + .../SubScene/GateSubSceneFlagComponent.cs | 14 + Fantasy/Fantasy.Benchmark/ConsoleLog.cs | 138 + .../Fantasy.Benchmark.csproj | 33 + Fantasy/Fantasy.Benchmark/NetworkBenchmark.cs | 45 + Fantasy/Fantasy.Benchmark/Program.cs | 2 + Fantasy/Fantasy.Benchmark/README.md | 6 + Fantasy/Fantasy.Net/Fantasy.Net.sln | 16 + .../Fantasy.Net/Fantasy-Net.targets | 34 + .../Fantasy.Net/Fantasy.Net.csproj | 61 + Fantasy/Fantasy.Net/Fantasy.Net/LICENSE | 14 + Fantasy/Fantasy.Net/Fantasy.Net/README.md | 34 + .../Runtime/Core/Assembly/AssemblyInfo.cs | 89 + .../Runtime/Core/Assembly/AssemblySystem.cs | 285 ++ .../Runtime/Core/Assembly/IAssembly.cs | 27 + .../Handler/BenchmarkRequestHandler.cs | 25 + .../Runtime/Core/DataBase/DataBaseType.cs | 20 + .../Runtime/Core/DataBase/IDataBase.cs | 210 + .../Runtime/Core/DataBase/MongoDataBase.cs | 1081 +++++ .../Runtime/Core/DataBase/World.cs | 77 + .../Collection/CircularBuffer.cs | 346 ++ .../Collection/ConcurrentOneToManyListPool.cs | 197 + .../ConcurrentOneToManyQueuePool.cs | 194 + .../DataStructure/Collection/HashSetPool.cs | 134 + .../Core/DataStructure/Collection/ListPool.cs | 101 + .../Collection/OneToManyHashSetPool.cs | 208 + .../Collection/OneToManyListPool.cs | 232 ++ .../Collection/OneToManyQueuePool.cs | 204 + .../DataStructure/Collection/ReuseList.cs | 69 + .../SortedConcurrentOneToManyListPool.cs | 226 ++ .../Collection/SortedOneToManyHashSetPool.cs | 192 + .../Collection/SortedOneToManyListPool.cs | 217 + .../Dictionary/DictionaryExtensions.cs | 31 + .../Dictionary/DictionaryPool.cs | 70 + .../Dictionary/DoubleMapDictionaryPool.cs | 289 ++ .../Dictionary/EntityDictionary.cs | 91 + .../Dictionary/OneToManyDictionaryPool.cs | 247 ++ .../OneToManySortedDictionaryPool.cs | 250 ++ .../Dictionary/ReuseDictionary.cs | 70 + .../Dictionary/SortedDictionaryPool.cs | 70 + .../PriorityQueue/PriorityQueueGenerics.cs | 121 + .../PriorityQueue/PriorityQueueItem.cs | 30 + .../PriorityQueue/PriorityQueueSimple.cs | 116 + .../Core/DataStructure/SkipTable/SkipTable.cs | 190 + .../DataStructure/SkipTable/SkipTableBase.cs | 282 ++ .../DataStructure/SkipTable/SkipTableDesc.cs | 188 + .../DataStructure/SkipTable/SkipTableNode.cs | 68 + .../Component/CoroutineLock/CoroutineLock.cs | 140 + .../CoroutineLock/CoroutineLockComponent.cs | 100 + .../CoroutineLock/CoroutineLockQueue.cs | 35 + .../CoroutineLock/WaitCoroutineLock.cs | 146 + .../Core/Entitas/Component/EntityComponent.cs | 471 +++ .../EventComponent/EventComponent.cs | 252 ++ .../EventComponent/Interface/IEvent.cs | 112 + .../Entitas/Component/MessagePoolComponent.cs | 139 + .../SingleCollectionComponent.cs | 167 + .../TimerComponent/Interface/TimerHandler.cs | 10 + .../TimerComponent/TimeWheel/ScheduledTask.cs | 49 + .../TimerComponent/TimeWheel/TimeWheel.cs | 134 + .../Component/TimerComponent/TimerAction.cs | 27 + .../TimerComponent/TimerComponent.cs | 52 + .../TimerScheduler/TimerSchedulerNet.cs | 390 ++ .../TimerScheduler/TimerSchedulerNetUnity.cs | 372 ++ .../Component/TimerComponent/TimerType.cs | 25 + .../Runtime/Core/Entitas/Entity.cs | 1051 +++++ .../Runtime/Core/Entitas/EntityPool.cs | 66 + .../Runtime/Core/Entitas/EntityReference.cs | 59 + .../Supported/ISingleCollectionRoot.cs | 17 + .../Interface/Supported/ISupportedDataBase.cs | 19 + .../Supported/ISupportedMultiEntity.cs | 20 + .../Supported/ISupportedSingleCollection.cs | 47 + .../Interface/Supported/ISupportedTransfer.cs | 19 + .../Entitas/Interface/System/IAwakeSystem.cs | 32 + .../Interface/System/ICustomEntitiesSystem.cs | 59 + .../Interface/System/IDeserializeSystem.cs | 32 + .../Interface/System/IDestroySystem.cs | 32 + .../Interface/System/IEntitiesSystem.cs | 22 + .../Interface/System/IFrameUpdateSystem.cs | 31 + .../Entitas/Interface/System/IUpdateSystem.cs | 31 + .../AsyncFTaskCompletedMethodBuilder.cs | 52 + .../FTask/Builder/AsyncFTaskMethodBuilder.cs | 140 + .../FTask/Builder/AsyncFVoidMethodBuilder.cs | 62 + .../FCancellationToken/FCancellationToken.cs | 121 + .../FTask/FTask.Extension/FTask.Factory.cs | 115 + .../Core/FTask/FTask.Extension/FTask.Tools.cs | 345 ++ .../Runtime/Core/FTask/Task/FTask.cs | 263 ++ .../Runtime/Core/FTask/Task/FTaskCompleted.cs | 31 + .../Runtime/Core/FTask/Task/FVoid.cs | 29 + .../Runtime/Core/Helper/ByteHelper.cs | 388 ++ .../Runtime/Core/Helper/Download/ADownload.cs | 50 + .../Core/Helper/Download/ADownload.cs.meta | 3 + .../Runtime/Core/Helper/Download/Download.cs | 72 + .../Core/Helper/Download/Download.cs.meta | 3 + .../Helper/Download/DownloadAssetBundle.cs | 54 + .../Download/DownloadAssetBundle.cs.meta | 3 + .../Core/Helper/Download/DownloadAudioClip.cs | 54 + .../Helper/Download/DownloadAudioClip.cs.meta | 3 + .../Core/Helper/Download/DownloadByte.cs | 52 + .../Core/Helper/Download/DownloadByte.cs.meta | 3 + .../Core/Helper/Download/DownloadSprite.cs | 55 + .../Helper/Download/DownloadSprite.cs.meta | 3 + .../Core/Helper/Download/DownloadText.cs | 52 + .../Core/Helper/Download/DownloadText.cs.meta | 3 + .../Core/Helper/Download/DownloadTexture.cs | 54 + .../Helper/Download/DownloadTexture.cs.meta | 3 + .../Runtime/Core/Helper/EncryptHelper.cs | 63 + .../Runtime/Core/Helper/FileHelper.cs | 186 + .../Runtime/Core/Helper/HashCodeHelper.cs | 229 ++ .../Helper/HttpClient/HttpClientHelper.cs | 144 + .../HttpClient/HttpClientHelper.cs.meta | 3 + .../Core/Helper/HttpClient/HttpClientPool.cs | 44 + .../Helper/HttpClient/HttpClientPool.cs.meta | 3 + .../Core/Helper/HttpClient/IJsonRpcRequest.cs | 20 + .../Helper/HttpClient/IJsonRpcRequest.cs.meta | 3 + .../Runtime/Core/Helper/JsonHelper.cs | 57 + .../Runtime/Core/Helper/NetworkHelper.cs | 443 +++ .../Runtime/Core/Helper/RandomHelper.cs | 311 ++ .../Runtime/Core/Helper/RandomHelperWebgl.cs | 295 ++ .../Runtime/Core/Helper/SocketHelper.cs | 74 + .../Runtime/Core/Helper/TimeHelper.cs | 83 + .../UnityWebRequest/UnityWebRequestHelper.cs | 244 ++ .../UnityWebRequestHelper.cs.meta | 3 + .../Runtime/Core/Helper/WebSocketHelper.cs | 38 + .../Runtime/Core/Helper/WinPeriod.cs | 24 + .../Core/IdFactory/Default/EntityIdStruct.cs | 136 + .../Core/IdFactory/Default/RuntimeIdStruct.cs | 137 + .../Runtime/Core/IdFactory/IdFactoryHelper.cs | 132 + .../Runtime/Core/IdFactory/IdFactoryType.cs | 23 + .../Core/IdFactory/Interface/IIdFactory.cs | 24 + .../IdFactory/Interface/IIdFactoryTool.cs | 27 + .../IdFactory/World/WorldEntityIdFactory.cs | 153 + .../IdFactory/World/WorldRuntimeIdFactory.cs | 155 + .../Runtime/Core/InnerErrorCode.cs | 66 + .../Runtime/Core/Log/ConsoleLog.cs | 144 + .../Fantasy.Net/Runtime/Core/Log/ILog.cs | 74 + .../Fantasy.Net/Runtime/Core/Log/Log.cs | 189 + .../Fantasy.Net/Runtime/Core/Log/UnityLog.cs | 74 + .../Runtime/Core/LowLevel/FantasyMemory.cs | 267 ++ .../Runtime/Core/LowLevel/FixedBytes.cs | 107 + .../Runtime/Core/LowLevel/XxHash.cs | 171 + .../Network/Addressable/AddressableHelper.cs | 141 + .../Addressable/AddressableManageComponent.cs | 144 + .../AddressableMessageComponent.cs | 91 + .../Addressable/AddressableRouteComponent.cs | 218 ++ .../Network/Addressable/AddressableScene.cs | 31 + .../Handler/I_AddressableAddHandler.cs | 26 + .../Handler/I_AddressableGetHandler.cs | 26 + .../Handler/I_AddressableLockHandler.cs | 26 + .../Handler/I_AddressableRemoveHandler.cs | 26 + .../Handler/I_AddressableUnLockHandler.cs | 27 + .../Core/Network/MemoryStreamBufferPool.cs | 96 + .../Dispatcher/Interface/IMessageHandler.cs | 220 ++ .../Interface/IRouteMessageHandler.cs | 490 +++ .../Dispatcher/MessageDispatcherComponent.cs | 426 ++ .../Runtime/Core/Network/Message/IMessage.cs | 95 + .../Core/Network/Message/InnerMessage.cs | 319 ++ .../Handler/BufferPacketParser.cs | 386 ++ .../Handler/CircularBufferPacketParser.cs | 170 + .../Handler/OuterBufferPacketParserHelper.cs | 72 + .../Handler/ReadOnlyMemoryPacketParser.cs | 357 ++ .../PacketParser/Interface/APackInfo.cs | 61 + .../PacketParser/Interface/APacketParser.cs | 30 + .../Network/Message/PacketParser/OpCode.cs | 125 + .../PacketParser/Pack/InnerPackInfo.cs | 79 + .../PacketParser/Pack/OuterPackInfo.cs | 73 + .../PacketParser/Pack/ProcessPackInfo.cs | 160 + .../Network/Message/PacketParser/Packet.cs | 49 + .../PacketParser/PacketParserFactory.cs | 173 + .../Scheduler/ClientMessageScheduler.cs | 96 + .../Scheduler/InnerMessageScheduler.cs | 211 + .../Interface/ANetworkMessageScheduler.cs | 30 + .../Scheduler/MessageHelper/MessageSender.cs | 107 + .../NetworkMessagingComponent.cs | 273 ++ .../OnNetworkMessageUpdateCheckTimeout.cs | 60 + .../Scheduler/OuterMessageScheduler.cs | 366 ++ .../Protocol/Exception/ScanException.cs | 21 + .../Protocol/HTTP/HTTPServerNetwork.cs | 128 + .../Protocol/HTTP/SceneContextFilter.cs | 54 + .../Protocol/Interface/AClientNetwork.cs | 38 + .../Network/Protocol/Interface/ANetwork.cs | 149 + .../Interface/ANetworkServerChannel.cs | 55 + .../Protocol/Interface/INetworkChannel.cs | 14 + .../Core/Network/Protocol/KCP/Base/Kcp.cs | 451 +++ .../Core/Network/Protocol/KCP/Base/c/kcp.cs | 1367 +++++++ .../Protocol/KCP/Base/define/system.cs | 41 + .../Network/Protocol/KCP/Base/include/kcp.cs | 127 + .../Protocol/KCP/Client/KCPClientNetwork.cs | 697 ++++ .../Core/Network/Protocol/KCP/KCPSettings.cs | 91 + .../Core/Network/Protocol/KCP/KcpHeader.cs | 14 + .../KCP/Server/KCPServerNetworkByArrayPool.cs | 575 +++ .../KCP/Server/KCPServerNetworkByPipe.cs | 619 +++ .../KCP/Server/KCPServerNetworkChannel.cs | 165 + .../Protocol/NetworkProtocolFactory.cs | 95 + .../Network/Protocol/NetworkProtocolType.cs | 69 + .../Protocol/NetworkThreadComponent.cs | 100 + .../Protocol/TCP/Client/TCPClientNetwork.cs | 413 ++ .../Protocol/TCP/Server/TCPServerNetwork.cs | 161 + .../TCP/Server/TCPServerNetworkChannel.cs | 294 ++ .../Client/WebSocketClientNetwork.cs | 345 ++ .../Client/WebSocketClientNetworkWebgl.cs | 190 + .../Server/WebSocketServerNetwork.cs | 112 + .../Server/WebSocketServerNetworkChannel.cs | 253 ++ .../Roaming/Component/RoamingComponent.cs | 254 ++ .../Component/SessionRoamingComponent.cs | 279 ++ .../Component/SessionRoamingFlgComponent.cs | 23 + .../Roaming/Component/TerminusComponent.cs | 138 + .../Core/Network/Roaming/Entity/Roaming.cs | 132 + .../Core/Network/Roaming/Entity/Terminus.cs | 338 ++ .../Handler/I_GetTerminusIdRequestHandler.cs | 32 + .../Handler/I_LinkRoamingRequestHandler.cs | 26 + .../Handler/I_LockTerminusIdRequestHandler.cs | 35 + .../I_TransferTerminusRequestHandler.cs | 22 + .../Handler/I_UnLinkRoamingRequestHandler.cs | 16 + .../I_UnLockTerminusIdRequestHandler.cs | 36 + .../Core/Network/Route/RouteComponent.cs | 82 + .../ConsoleSessionHeartbeatComponent.cs | 156 + .../Component/SessionIdleCheckerComponent.cs | 104 + .../UnitySessionHeartbeatComponent.cs | 156 + .../ProcessSession/ProcessScheduler.cs | 269 ++ .../Session/ProcessSession/ProcessSession.cs | 124 + .../ProcessSession/ProcessSessionInfo.cs | 17 + .../Runtime/Core/Network/Session/Session.cs | 272 ++ .../Runtime/Core/Platform/Console/Entry.cs | 101 + .../Console/ThreadSynchronizationContext.cs | 38 + .../Platform/Net/ConfigTable/MachineConfig.cs | 88 + .../Platform/Net/ConfigTable/ProcessConfig.cs | 100 + .../Platform/Net/ConfigTable/SceneConfig.cs | 196 + .../Platform/Net/ConfigTable/WorldConfig.cs | 93 + .../Runtime/Core/Platform/Net/Entry.cs | 124 + .../Runtime/Core/Platform/Net/Process.cs | 156 + .../Core/Platform/Net/ProcessDefine.cs | 99 + .../Net/ThreadSynchronizationContext.cs | 52 + .../Runtime/Core/Platform/Unity/AppDefine.cs | 19 + .../Attributes/BsonDefaultValueAttribute.cs | 11 + .../Unity/Attributes/BsonElementAttribute.cs | 13 + .../Unity/Attributes/BsonIdAttribute.cs | 11 + .../Unity/Attributes/BsonIgnoreAttribute.cs | 11 + .../BsonIgnoreIfDefaultAttribute.cs | 13 + .../Attributes/BsonIgnoreIfNullAttribute.cs | 11 + .../Runtime/Core/Platform/Unity/Entry.cs | 102 + .../Runtime/Core/Platform/Unity/Temp.cs | 108 + .../Unity/ThreadSynchronizationContext.cs | 104 + .../Core/Pool/Concurrent/MultiThreadPool.cs | 37 + .../Pool/Concurrent/MultiThreadPoolQueue.cs | 76 + .../Runtime/Core/Pool/Interface/IPool.cs | 18 + .../Runtime/Core/Pool/Normal/Pool.cs | 77 + .../Runtime/Core/Pool/Normal/PoolCore.cs | 203 + .../Core/Pool/Normal/PoolWithDisposable.cs | 140 + .../Runtime/Core/Pool/PoolHelper.cs | 79 + .../Runtime/Core/Scene/ISceneUpdate.cs | 15 + .../Fantasy.Net/Runtime/Core/Scene/Scene.cs | 619 +++ .../Runtime/Core/Scene/SceneRuntimeMode.cs | 21 + .../Runtime/Core/Scene/SceneRuntimeType.cs | 21 + .../Core/Scene/Scheduler/ISceneScheduler.cs | 11 + .../Core/Scene/Scheduler/MainScheduler.cs | 83 + .../Scene/Scheduler/MultiThreadScheduler.cs | 103 + .../Scene/Scheduler/ThreadPoolScheduler.cs | 140 + .../Core/Scene/Scheduler/ThreadScheduler.cs | 66 + .../Runtime/Core/Scene/SubScene.cs | 171 + .../Serialize/BsonPack/BsonPackHelperNet.cs | 311 ++ .../Serialize/BsonPack/BsonPackHelperUnity.cs | 60 + .../Serialize/BsonPack/StructBsonSerialize.cs | 65 + .../BsonPack/SupportInitializeChecker.cs | 17 + .../Core/Serialize/Interface/ASerialize.cs | 60 + .../Core/Serialize/Interface/ISerialize.cs | 87 + .../Core/Serialize/MemoryStreamBuffer.cs | 73 + .../Serialize/ProtoBufPackHelper/IProto.cs | 9 + .../ProtoBufPackHelperNet.cs | 223 ++ .../ProtoBufPackHelperUnity.cs | 202 + .../Core/Serialize/SerializerManager.cs | 152 + Fantasy/Fantasy.Net/Fantasy.Net/icon.png | Bin 0 -> 246 bytes .../Fantasy.Config/Config/Excel/Custom.txt | 1 + .../Config/Excel/Server/MachineConfig.xlsx | Bin 0 -> 10108 bytes .../Config/Excel/Server/ProcessConfig.xlsx | Bin 0 -> 10189 bytes .../Config/Excel/Server/SceneConfig.xlsx | Bin 0 -> 18543 bytes .../Config/Excel/Server/WorldConfig.xlsx | Bin 0 -> 10127 bytes .../Fantasy.Config/Config/Excel/Version.txt | 1 + .../Config/Json/Server/MachineConfigData.Json | 3 + .../Config/Json/Server/ProcessConfigData.Json | 3 + .../Config/Json/Server/SceneConfigData.Json | 6 + .../Config/Json/Server/WorldConfigData.Json | 3 + .../NetworkProtocol/Inner/InnerMessage.proto | 27 + .../Config/NetworkProtocol/OpCode.Cache | 1 + .../NetworkProtocol/Outer/OuterMessage.proto | 64 + .../Config/NetworkProtocol/RouteType.Config | 3 + .../Fantasy.Config/Fantasy-Net.Config.targets | 25 + .../Fantasy.Config/Fantasy.Config.csproj | 37 + .../Fantasy.Packages/Fantasy.Config/README.md | 16 + .../Fantasy.Packages/Fantasy.Config/icon.png | Bin 0 -> 246 bytes .../Net/ConfigTableHelper.cs | 94 + .../Net/Dictionary/IntDictionaryConfig.cs | 33 + .../Net/Dictionary/StringDictionaryConfig.cs | 35 + .../Net/Fantasy.ConfigTable.csproj | 34 + .../Net/Interface/IConfigTable.cs | 7 + .../Fantasy.ConfigTable/Net/icon.png | Bin 0 -> 246 bytes .../Fantasy.ConfigTable/README.md | 74 + .../Unity/Fantasy.ConfigTable.asmdef | 16 + .../Unity/Fantasy.ConfigTable.asmdef.meta | 7 + .../Fantasy.ConfigTable/Unity/Runtime.meta | 8 + .../Unity/Runtime/ConfigTableHelper.cs | 78 + .../Unity/Runtime/ConfigTableHelper.cs.meta | 11 + .../Unity/Runtime/Dictionary.meta | 8 + .../Runtime/Dictionary/IntDictionaryConfig.cs | 33 + .../Dictionary/IntDictionaryConfig.cs.meta | 11 + .../Dictionary/StringDictionaryConfig.cs | 35 + .../Dictionary/StringDictionaryConfig.cs.meta | 11 + .../Unity/Runtime/Interface.meta | 8 + .../Unity/Runtime/Interface/IConfigTable.cs | 7 + .../Runtime/Interface/IConfigTable.cs.meta | 11 + .../Interface/IConfigTableAssetBundle.cs | 16 + .../Interface/IConfigTableAssetBundle.cs.meta | 3 + .../Fantasy.ConfigTable/Unity/package.json | 23 + .../Unity/package.json.meta | 7 + .../Net/MemoryPack/MemoryPackHelper.cs | 212 + .../Fantasy.MemoryPack/README.md | 25 + .../Unity/Fantays.MemoryPack.unitypackage | Bin 0 -> 6266033 bytes .../Fantasy.NLog/Fantasy-Net.NLog.targets | 24 + .../Fantasy.NLog/Fantasy.NLog.csproj | 38 + .../Fantasy.Packages/Fantasy.NLog/NLog.config | 91 + Fantasy/Fantasy.Packages/Fantasy.NLog/NLog.cs | 167 + .../Fantasy.Packages/Fantasy.NLog/NLog.xsd | 3483 +++++++++++++++++ .../Fantasy.Packages/Fantasy.NLog/icon.png | Bin 0 -> 246 bytes .../Fantays.Console/Fantasy.Console.csproj | 31 + .../Runtime/Core/Assembly/AssemblyInfo.cs | 89 + .../Runtime/Core/Assembly/AssemblySystem.cs | 285 ++ .../Runtime/Core/Assembly/IAssembly.cs | 27 + .../Handler/BenchmarkRequestHandler.cs | 25 + .../Runtime/Core/DataBase/DataBaseType.cs | 20 + .../Runtime/Core/DataBase/IDataBase.cs | 210 + .../Runtime/Core/DataBase/MongoDataBase.cs | 1081 +++++ .../Runtime/Core/DataBase/World.cs | 77 + .../Collection/CircularBuffer.cs | 346 ++ .../Collection/ConcurrentOneToManyListPool.cs | 197 + .../ConcurrentOneToManyQueuePool.cs | 194 + .../DataStructure/Collection/HashSetPool.cs | 134 + .../Core/DataStructure/Collection/ListPool.cs | 101 + .../Collection/OneToManyHashSetPool.cs | 208 + .../Collection/OneToManyListPool.cs | 232 ++ .../Collection/OneToManyQueuePool.cs | 204 + .../DataStructure/Collection/ReuseList.cs | 69 + .../SortedConcurrentOneToManyListPool.cs | 226 ++ .../Collection/SortedOneToManyHashSetPool.cs | 192 + .../Collection/SortedOneToManyListPool.cs | 217 + .../Dictionary/DictionaryExtensions.cs | 31 + .../Dictionary/DictionaryPool.cs | 70 + .../Dictionary/DoubleMapDictionaryPool.cs | 289 ++ .../Dictionary/EntityDictionary.cs | 91 + .../Dictionary/OneToManyDictionaryPool.cs | 247 ++ .../OneToManySortedDictionaryPool.cs | 250 ++ .../Dictionary/ReuseDictionary.cs | 70 + .../Dictionary/SortedDictionaryPool.cs | 70 + .../PriorityQueue/PriorityQueueGenerics.cs | 121 + .../PriorityQueue/PriorityQueueItem.cs | 30 + .../PriorityQueue/PriorityQueueSimple.cs | 116 + .../Core/DataStructure/SkipTable/SkipTable.cs | 190 + .../DataStructure/SkipTable/SkipTableBase.cs | 282 ++ .../DataStructure/SkipTable/SkipTableDesc.cs | 188 + .../DataStructure/SkipTable/SkipTableNode.cs | 68 + .../Component/CoroutineLock/CoroutineLock.cs | 140 + .../CoroutineLock/CoroutineLockComponent.cs | 100 + .../CoroutineLock/CoroutineLockQueue.cs | 35 + .../CoroutineLock/WaitCoroutineLock.cs | 146 + .../Core/Entitas/Component/EntityComponent.cs | 471 +++ .../EventComponent/EventComponent.cs | 252 ++ .../EventComponent/Interface/IEvent.cs | 112 + .../Entitas/Component/MessagePoolComponent.cs | 139 + .../SingleCollectionComponent.cs | 167 + .../TimerComponent/Interface/TimerHandler.cs | 10 + .../TimerComponent/TimeWheel/ScheduledTask.cs | 49 + .../TimerComponent/TimeWheel/TimeWheel.cs | 134 + .../Component/TimerComponent/TimerAction.cs | 27 + .../TimerComponent/TimerComponent.cs | 52 + .../TimerScheduler/TimerSchedulerNet.cs | 390 ++ .../TimerScheduler/TimerSchedulerNetUnity.cs | 372 ++ .../Component/TimerComponent/TimerType.cs | 25 + .../Runtime/Core/Entitas/Entity.cs | 1051 +++++ .../Runtime/Core/Entitas/EntityPool.cs | 66 + .../Runtime/Core/Entitas/EntityReference.cs | 59 + .../Supported/ISingleCollectionRoot.cs | 17 + .../Interface/Supported/ISupportedDataBase.cs | 19 + .../Supported/ISupportedMultiEntity.cs | 20 + .../Supported/ISupportedSingleCollection.cs | 47 + .../Interface/Supported/ISupportedTransfer.cs | 19 + .../Entitas/Interface/System/IAwakeSystem.cs | 32 + .../Interface/System/ICustomEntitiesSystem.cs | 59 + .../Interface/System/IDeserializeSystem.cs | 32 + .../Interface/System/IDestroySystem.cs | 32 + .../Interface/System/IEntitiesSystem.cs | 22 + .../Interface/System/IFrameUpdateSystem.cs | 31 + .../Entitas/Interface/System/IUpdateSystem.cs | 31 + .../AsyncFTaskCompletedMethodBuilder.cs | 52 + .../FTask/Builder/AsyncFTaskMethodBuilder.cs | 140 + .../FTask/Builder/AsyncFVoidMethodBuilder.cs | 62 + .../FCancellationToken/FCancellationToken.cs | 121 + .../FTask/FTask.Extension/FTask.Factory.cs | 115 + .../Core/FTask/FTask.Extension/FTask.Tools.cs | 345 ++ .../Runtime/Core/FTask/Task/FTask.cs | 263 ++ .../Runtime/Core/FTask/Task/FTaskCompleted.cs | 31 + .../Runtime/Core/FTask/Task/FVoid.cs | 29 + .../Runtime/Core/Helper/ByteHelper.cs | 388 ++ .../Runtime/Core/Helper/Download/ADownload.cs | 50 + .../Core/Helper/Download/ADownload.cs.meta | 3 + .../Runtime/Core/Helper/Download/Download.cs | 72 + .../Core/Helper/Download/Download.cs.meta | 3 + .../Helper/Download/DownloadAssetBundle.cs | 54 + .../Download/DownloadAssetBundle.cs.meta | 3 + .../Core/Helper/Download/DownloadAudioClip.cs | 54 + .../Helper/Download/DownloadAudioClip.cs.meta | 3 + .../Core/Helper/Download/DownloadByte.cs | 52 + .../Core/Helper/Download/DownloadByte.cs.meta | 3 + .../Core/Helper/Download/DownloadSprite.cs | 55 + .../Helper/Download/DownloadSprite.cs.meta | 3 + .../Core/Helper/Download/DownloadText.cs | 52 + .../Core/Helper/Download/DownloadText.cs.meta | 3 + .../Core/Helper/Download/DownloadTexture.cs | 54 + .../Helper/Download/DownloadTexture.cs.meta | 3 + .../Runtime/Core/Helper/EncryptHelper.cs | 63 + .../Runtime/Core/Helper/FileHelper.cs | 186 + .../Runtime/Core/Helper/HashCodeHelper.cs | 229 ++ .../Helper/HttpClient/HttpClientHelper.cs | 144 + .../HttpClient/HttpClientHelper.cs.meta | 3 + .../Core/Helper/HttpClient/HttpClientPool.cs | 44 + .../Helper/HttpClient/HttpClientPool.cs.meta | 3 + .../Core/Helper/HttpClient/IJsonRpcRequest.cs | 20 + .../Helper/HttpClient/IJsonRpcRequest.cs.meta | 3 + .../Runtime/Core/Helper/JsonHelper.cs | 57 + .../Runtime/Core/Helper/NetworkHelper.cs | 443 +++ .../Runtime/Core/Helper/RandomHelper.cs | 311 ++ .../Runtime/Core/Helper/RandomHelperWebgl.cs | 295 ++ .../Runtime/Core/Helper/SocketHelper.cs | 74 + .../Runtime/Core/Helper/TimeHelper.cs | 83 + .../UnityWebRequest/UnityWebRequestHelper.cs | 244 ++ .../UnityWebRequestHelper.cs.meta | 3 + .../Runtime/Core/Helper/WebSocketHelper.cs | 38 + .../Runtime/Core/Helper/WinPeriod.cs | 24 + .../Core/IdFactory/Default/EntityIdStruct.cs | 136 + .../Core/IdFactory/Default/RuntimeIdStruct.cs | 137 + .../Runtime/Core/IdFactory/IdFactoryHelper.cs | 132 + .../Runtime/Core/IdFactory/IdFactoryType.cs | 23 + .../Core/IdFactory/Interface/IIdFactory.cs | 24 + .../IdFactory/Interface/IIdFactoryTool.cs | 27 + .../IdFactory/World/WorldEntityIdFactory.cs | 153 + .../IdFactory/World/WorldRuntimeIdFactory.cs | 155 + .../Runtime/Core/InnerErrorCode.cs | 66 + .../Runtime/Core/Log/ConsoleLog.cs | 144 + .../Fantays.Console/Runtime/Core/Log/ILog.cs | 74 + .../Fantays.Console/Runtime/Core/Log/Log.cs | 189 + .../Runtime/Core/Log/UnityLog.cs | 74 + .../Runtime/Core/LowLevel/FantasyMemory.cs | 267 ++ .../Runtime/Core/LowLevel/FixedBytes.cs | 107 + .../Runtime/Core/LowLevel/XxHash.cs | 171 + .../Network/Addressable/AddressableHelper.cs | 141 + .../Addressable/AddressableManageComponent.cs | 144 + .../AddressableMessageComponent.cs | 91 + .../Addressable/AddressableRouteComponent.cs | 218 ++ .../Network/Addressable/AddressableScene.cs | 31 + .../Handler/I_AddressableAddHandler.cs | 26 + .../Handler/I_AddressableGetHandler.cs | 26 + .../Handler/I_AddressableLockHandler.cs | 26 + .../Handler/I_AddressableRemoveHandler.cs | 26 + .../Handler/I_AddressableUnLockHandler.cs | 27 + .../Core/Network/MemoryStreamBufferPool.cs | 96 + .../Dispatcher/Interface/IMessageHandler.cs | 220 ++ .../Interface/IRouteMessageHandler.cs | 490 +++ .../Dispatcher/MessageDispatcherComponent.cs | 426 ++ .../Runtime/Core/Network/Message/IMessage.cs | 95 + .../Core/Network/Message/InnerMessage.cs | 319 ++ .../Handler/BufferPacketParser.cs | 386 ++ .../Handler/CircularBufferPacketParser.cs | 170 + .../Handler/OuterBufferPacketParserHelper.cs | 72 + .../Handler/ReadOnlyMemoryPacketParser.cs | 357 ++ .../PacketParser/Interface/APackInfo.cs | 61 + .../PacketParser/Interface/APacketParser.cs | 30 + .../Network/Message/PacketParser/OpCode.cs | 125 + .../PacketParser/Pack/InnerPackInfo.cs | 79 + .../PacketParser/Pack/OuterPackInfo.cs | 73 + .../PacketParser/Pack/ProcessPackInfo.cs | 160 + .../Network/Message/PacketParser/Packet.cs | 49 + .../PacketParser/PacketParserFactory.cs | 173 + .../Scheduler/ClientMessageScheduler.cs | 96 + .../Scheduler/InnerMessageScheduler.cs | 211 + .../Interface/ANetworkMessageScheduler.cs | 30 + .../Scheduler/MessageHelper/MessageSender.cs | 107 + .../NetworkMessagingComponent.cs | 273 ++ .../OnNetworkMessageUpdateCheckTimeout.cs | 60 + .../Scheduler/OuterMessageScheduler.cs | 366 ++ .../Protocol/Exception/ScanException.cs | 21 + .../Protocol/HTTP/HTTPServerNetwork.cs | 128 + .../Protocol/HTTP/SceneContextFilter.cs | 54 + .../Protocol/Interface/AClientNetwork.cs | 38 + .../Network/Protocol/Interface/ANetwork.cs | 149 + .../Interface/ANetworkServerChannel.cs | 55 + .../Protocol/Interface/INetworkChannel.cs | 14 + .../Core/Network/Protocol/KCP/Base/Kcp.cs | 451 +++ .../Core/Network/Protocol/KCP/Base/c/kcp.cs | 1367 +++++++ .../Protocol/KCP/Base/define/system.cs | 41 + .../Network/Protocol/KCP/Base/include/kcp.cs | 127 + .../Protocol/KCP/Client/KCPClientNetwork.cs | 697 ++++ .../Core/Network/Protocol/KCP/KCPSettings.cs | 91 + .../Core/Network/Protocol/KCP/KcpHeader.cs | 14 + .../KCP/Server/KCPServerNetworkByArrayPool.cs | 575 +++ .../KCP/Server/KCPServerNetworkByPipe.cs | 619 +++ .../KCP/Server/KCPServerNetworkChannel.cs | 165 + .../Protocol/NetworkProtocolFactory.cs | 95 + .../Network/Protocol/NetworkProtocolType.cs | 69 + .../Protocol/NetworkThreadComponent.cs | 100 + .../Protocol/TCP/Client/TCPClientNetwork.cs | 413 ++ .../Protocol/TCP/Server/TCPServerNetwork.cs | 161 + .../TCP/Server/TCPServerNetworkChannel.cs | 294 ++ .../Client/WebSocketClientNetwork.cs | 345 ++ .../Client/WebSocketClientNetworkWebgl.cs | 190 + .../Server/WebSocketServerNetwork.cs | 112 + .../Server/WebSocketServerNetworkChannel.cs | 253 ++ .../Roaming/Component/RoamingComponent.cs | 254 ++ .../Component/SessionRoamingComponent.cs | 279 ++ .../Component/SessionRoamingFlgComponent.cs | 23 + .../Roaming/Component/TerminusComponent.cs | 138 + .../Core/Network/Roaming/Entity/Roaming.cs | 132 + .../Core/Network/Roaming/Entity/Terminus.cs | 338 ++ .../Handler/I_GetTerminusIdRequestHandler.cs | 32 + .../Handler/I_LinkRoamingRequestHandler.cs | 26 + .../Handler/I_LockTerminusIdRequestHandler.cs | 35 + .../I_TransferTerminusRequestHandler.cs | 22 + .../Handler/I_UnLinkRoamingRequestHandler.cs | 16 + .../I_UnLockTerminusIdRequestHandler.cs | 36 + .../Core/Network/Route/RouteComponent.cs | 82 + .../ConsoleSessionHeartbeatComponent.cs | 156 + .../Component/SessionIdleCheckerComponent.cs | 104 + .../UnitySessionHeartbeatComponent.cs | 156 + .../ProcessSession/ProcessScheduler.cs | 269 ++ .../Session/ProcessSession/ProcessSession.cs | 124 + .../ProcessSession/ProcessSessionInfo.cs | 17 + .../Runtime/Core/Network/Session/Session.cs | 272 ++ .../Runtime/Core/Platform/Console/Entry.cs | 101 + .../Console/ThreadSynchronizationContext.cs | 38 + .../Platform/Net/ConfigTable/MachineConfig.cs | 88 + .../Platform/Net/ConfigTable/ProcessConfig.cs | 100 + .../Platform/Net/ConfigTable/SceneConfig.cs | 196 + .../Platform/Net/ConfigTable/WorldConfig.cs | 93 + .../Runtime/Core/Platform/Net/Entry.cs | 124 + .../Runtime/Core/Platform/Net/Process.cs | 156 + .../Core/Platform/Net/ProcessDefine.cs | 99 + .../Net/ThreadSynchronizationContext.cs | 52 + .../Runtime/Core/Platform/Unity/AppDefine.cs | 19 + .../Attributes/BsonDefaultValueAttribute.cs | 11 + .../Unity/Attributes/BsonElementAttribute.cs | 13 + .../Unity/Attributes/BsonIdAttribute.cs | 11 + .../Unity/Attributes/BsonIgnoreAttribute.cs | 11 + .../BsonIgnoreIfDefaultAttribute.cs | 13 + .../Attributes/BsonIgnoreIfNullAttribute.cs | 11 + .../Runtime/Core/Platform/Unity/Entry.cs | 102 + .../Runtime/Core/Platform/Unity/Temp.cs | 108 + .../Unity/ThreadSynchronizationContext.cs | 104 + .../Core/Pool/Concurrent/MultiThreadPool.cs | 37 + .../Pool/Concurrent/MultiThreadPoolQueue.cs | 76 + .../Runtime/Core/Pool/Interface/IPool.cs | 18 + .../Runtime/Core/Pool/Normal/Pool.cs | 77 + .../Runtime/Core/Pool/Normal/PoolCore.cs | 203 + .../Core/Pool/Normal/PoolWithDisposable.cs | 140 + .../Runtime/Core/Pool/PoolHelper.cs | 79 + .../Runtime/Core/Scene/ISceneUpdate.cs | 15 + .../Runtime/Core/Scene/Scene.cs | 619 +++ .../Runtime/Core/Scene/SceneRuntimeMode.cs | 21 + .../Runtime/Core/Scene/SceneRuntimeType.cs | 21 + .../Core/Scene/Scheduler/ISceneScheduler.cs | 11 + .../Core/Scene/Scheduler/MainScheduler.cs | 83 + .../Scene/Scheduler/MultiThreadScheduler.cs | 103 + .../Scene/Scheduler/ThreadPoolScheduler.cs | 140 + .../Core/Scene/Scheduler/ThreadScheduler.cs | 66 + .../Runtime/Core/Scene/SubScene.cs | 171 + .../Serialize/BsonPack/BsonPackHelperNet.cs | 311 ++ .../Serialize/BsonPack/BsonPackHelperUnity.cs | 60 + .../Serialize/BsonPack/StructBsonSerialize.cs | 65 + .../BsonPack/SupportInitializeChecker.cs | 17 + .../Core/Serialize/Interface/ASerialize.cs | 60 + .../Core/Serialize/Interface/ISerialize.cs | 87 + .../Core/Serialize/MemoryStreamBuffer.cs | 73 + .../Serialize/ProtoBufPackHelper/IProto.cs | 9 + .../ProtoBufPackHelperNet.cs | 223 ++ .../ProtoBufPackHelperUnity.cs | 202 + .../Core/Serialize/SerializerManager.cs | 152 + Hotfix/CustomSystem/IRunSystem.cs | 50 + Hotfix/HTTPHandler/HelloController.cs | 31 + Hotfix/HTTPHandler/ProductsController.cs | 21 + Hotfix/HTTPHandler/UsersController.cs | 45 + Hotfix/Hotfix.csproj | 20 + .../G2M_RequestAddressableIdHandler.cs | 22 + Hotfix/Inner/G2A_TestMessageHandler.cs | 15 + Hotfix/Inner/G2A_TestRequestHandler.cs | 19 + .../G2Chat_CreateRouteRequestHandler.cs | 23 + .../G2M_CreateSubSceneRequestHandler.cs | 17 + .../G2SubScene_AddressableIdRequestHandler.cs | 21 + .../SubScene/G2SubScene_SentMessageHandler.cs | 13 + Hotfix/OnCreateSceneEvent.cs | 108 + .../C2G_CreateAddressableRequestHandler.cs | 29 + .../C2G_SendAddressableToMapHandler.cs | 28 + .../Addresable/C2M_MoveToMapRequestHandler.cs | 40 + .../Addresable/C2M_TestMessageHandler.cs | 13 + .../Addresable/C2M_TestRequestHandler.cs | 15 + .../G2M_SendAddressableMessageHandler.cs | 13 + .../Addresable/M2M_SendUnitRequestHandler.cs | 21 + .../Gate/C2G_TestMessageHandler.cs | 16 + .../Gate/C2G_TestRequestHandler.cs | 16 + .../Gate/C2G_TestRequestPushMessageHandler.cs | 20 + .../C2Chat_TestRPCRoamingRequestHandler.cs | 15 + .../Chat/C2Chat_TestRoamingMessageHandler.cs | 15 + .../Chat/C2Chat_TestSendMapMessageHandler.cs | 18 + .../Gate/C2G_ConnectRoamingRequestHandler.cs | 62 + .../Map/C2Map_PushMessageToClientHandler.cs | 17 + .../Map/C2Map_TestRoamingMessageHandler.cs | 15 + .../Map/C2Map_TestTransferRequestHandler.cs | 17 + .../Roaming/Map/Chat2M_TestMessageHandler.cs | 15 + .../RouteMessage/C2Chat_TestMessageHandler.cs | 13 + .../C2Chat_TestMessageRequestHandler.cs | 15 + .../C2Chat_TestRequestPushMessageHandler.cs | 22 + .../C2G_CreateChatRouteRequestHandler.cs | 46 + ...CreateSubSceneAddressableRequestHandler.cs | 21 + .../C2G_CreateSubSceneRequestHandler.cs | 26 + .../C2G_SendToSubSceneMessageHandler.cs | 18 + .../C2SubScene_TestDisposeMessageHandler.cs | 16 + .../SubScene/C2SubScene_TestMessageHandler.cs | 14 + Main/Fantasy.json | 9 + Main/Main.csproj | 38 + Main/NLog.config | 91 + Main/NLog.cs | 167 + Main/NLog.xsd | 3483 +++++++++++++++++ Main/Program.cs | 34 + Main/Properties/launchSettings.json | 10 + Server.sln | 40 + Server.sln.DotSettings.user | 65 + Tools/Exporter/ConfigTable/CommandLine.dll | Bin 0 -> 225280 bytes .../ConfigTable/EPPlus.Interfaces.dll | Bin 0 -> 19960 bytes .../ConfigTable/EPPlus.System.Drawing.dll | Bin 0 -> 7680 bytes Tools/Exporter/ConfigTable/EPPlus.dll | Bin 0 -> 4268048 bytes .../ConfigTable/ExporterSettings.json | 44 + .../ConfigTable/Fantasy.Tools.ConfigTable | Bin 0 -> 123600 bytes .../Fantasy.Tools.ConfigTable.deps.json | 433 ++ .../ConfigTable/Fantasy.Tools.ConfigTable.dll | Bin 0 -> 66048 bytes .../ConfigTable/Fantasy.Tools.ConfigTable.pdb | Bin 0 -> 38436 bytes ...ntasy.Tools.ConfigTable.runtimeconfig.json | 12 + .../Microsoft.CodeAnalysis.CSharp.dll | Bin 0 -> 6697768 bytes .../ConfigTable/Microsoft.CodeAnalysis.dll | Bin 0 -> 3029800 bytes ....Extensions.Configuration.Abstractions.dll | Bin 0 -> 29448 bytes ...xtensions.Configuration.FileExtensions.dll | Bin 0 -> 29496 bytes ...icrosoft.Extensions.Configuration.Json.dll | Bin 0 -> 28456 bytes .../Microsoft.Extensions.Configuration.dll | Bin 0 -> 45336 bytes ....Extensions.FileProviders.Abstractions.dll | Bin 0 -> 23816 bytes ...soft.Extensions.FileProviders.Physical.dll | Bin 0 -> 46368 bytes ...icrosoft.Extensions.FileSystemGlobbing.dll | Bin 0 -> 46872 bytes .../Microsoft.Extensions.Primitives.dll | Bin 0 -> 45320 bytes .../Microsoft.IO.RecyclableMemoryStream.dll | Bin 0 -> 65968 bytes .../Microsoft.Win32.SystemEvents.dll | Bin 0 -> 26752 bytes .../Exporter/ConfigTable/Newtonsoft.Json.dll | Bin 0 -> 712464 bytes Tools/Exporter/ConfigTable/Run.bat | 33 + Tools/Exporter/ConfigTable/Run.sh | 34 + .../System.Collections.Immutable.dll | Bin 0 -> 251160 bytes .../ConfigTable/System.Drawing.Common.dll | Bin 0 -> 173696 bytes .../ConfigTable/System.IO.Pipelines.dll | Bin 0 -> 77616 bytes .../System.Reflection.Metadata.dll | Bin 0 -> 501000 bytes .../System.Security.Cryptography.Pkcs.dll | Bin 0 -> 265528 bytes .../System.Security.Cryptography.Xml.dll | Bin 0 -> 201016 bytes .../System.Text.Encoding.CodePages.dll | Bin 0 -> 741128 bytes .../ConfigTable/System.Text.Encodings.Web.dll | Bin 0 -> 70968 bytes .../Exporter/ConfigTable/System.Text.Json.dll | Bin 0 -> 643848 bytes .../ConfigTable/protobuf-net.Core.dll | Bin 0 -> 299520 bytes Tools/Exporter/ConfigTable/protobuf-net.dll | Bin 0 -> 284672 bytes .../lib/net8.0/System.Text.Encodings.Web.dll | Bin 0 -> 70936 bytes .../net7.0/Microsoft.Win32.SystemEvents.dll | Bin 0 -> 58496 bytes .../win/lib/net7.0/System.Drawing.Common.dll | Bin 0 -> 614536 bytes .../System.Security.Cryptography.Pkcs.dll | Bin 0 -> 319784 bytes .../System.Security.Cryptography.Pkcs.dll | Bin 0 -> 319272 bytes .../net9.0/System.Text.Encoding.CodePages.dll | Bin 0 -> 742704 bytes .../Exporter/NetworkProtocol/CommandLine.dll | Bin 0 -> 225280 bytes .../NetworkProtocol/ExporterSettings.json | 29 + .../Fantasy.Tools.NetworkProtocol | Bin 0 -> 123264 bytes .../Fantasy.Tools.NetworkProtocol.deps.json | 264 ++ .../Fantasy.Tools.NetworkProtocol.dll | Bin 0 -> 51200 bytes .../Fantasy.Tools.NetworkProtocol.pdb | Bin 0 -> 25840 bytes ...y.Tools.NetworkProtocol.runtimeconfig.json | 12 + ....Extensions.Configuration.Abstractions.dll | Bin 0 -> 28424 bytes ...xtensions.Configuration.FileExtensions.dll | Bin 0 -> 28432 bytes ...icrosoft.Extensions.Configuration.Json.dll | Bin 0 -> 27400 bytes .../Microsoft.Extensions.Configuration.dll | Bin 0 -> 44328 bytes ....Extensions.FileProviders.Abstractions.dll | Bin 0 -> 22832 bytes ...soft.Extensions.FileProviders.Physical.dll | Bin 0 -> 45336 bytes ...icrosoft.Extensions.FileSystemGlobbing.dll | Bin 0 -> 45832 bytes .../Microsoft.Extensions.Primitives.dll | Bin 0 -> 44336 bytes .../NetworkProtocol/Newtonsoft.Json.dll | Bin 0 -> 712464 bytes Tools/Exporter/NetworkProtocol/Run.bat | 21 + Tools/Exporter/NetworkProtocol/Run.sh | 24 + .../NetworkProtocol/System.IO.Pipelines.dll | Bin 0 -> 77616 bytes .../System.Text.Encodings.Web.dll | Bin 0 -> 70968 bytes .../NetworkProtocol/System.Text.Json.dll | Bin 0 -> 643848 bytes .../lib/net8.0/System.Text.Encodings.Web.dll | Bin 0 -> 70936 bytes ...tasy-Net.Tools.ExporterConfigTable.targets | 9 + .../Fantasy.Tools.ExporterConfigTable.csproj | 32 + .../icon.png | Bin 0 -> 246 bytes ...-Net.Tools.ExporterNetworkProtocol.targets | 9 + ...ntasy.Tools.ExporterNetworkProtocol.csproj | 32 + .../icon.png | Bin 0 -> 246 bytes .../Core/Base/ExportType.cs | 24 + .../CustomExport/ConstValueToConst.cs | 158 + .../CustomExport/SceneTypeConfigToEnum.cs | 62 + .../Exporter/ConfigTableHelper.cs | 13 + .../DynamicAssembly/DynamicAssembly.cs | 170 + .../DynamicAssembly/DynamicConfigDataType.cs | 36 + .../DynamicAssembly/OneDynamicAssembly.cs | 70 + .../Exporter/ExcelExporter.cs | 1054 +++++ .../Exporter/ExcelHelper.cs | 47 + .../Exporter/ExcelTable.cs | 28 + .../Exporter/ExcelTemplate.cs | 98 + .../Exporter/ExcelWorksheets.cs | 25 + .../Exporter/ExportInfo.cs | 17 + .../Exporter/ICustomExport.cs | 148 + .../Exporter/VersionInfo.cs | 7 + .../Fantasy.Tools.ConfigTable/ExporterAges.cs | 21 + .../ExporterSettings.json | 44 + .../ExporterSettingsHelper.cs | 43 + .../Fantasy.Tools.ConfigTable.csproj | 118 + .../Fantasy.Tools.ConfigTable/Program.cs | 67 + .../Properties/launchSettings.json | 10 + .../Fantasy.Tools.ConfigTable/Run.bat | 33 + .../Fantasy.Tools.ConfigTable/Run.sh | 34 + .../Core/Base/ConsoleLog.cs | 176 + .../Core/Base/CustomSerialize.cs | 13 + .../Core/Base/ExportPlatform.cs | 13 + .../Exporter/NetworkProtocolTemplate.cs | 40 + .../Exporter/OpCodeCache.cs | 58 + .../Exporter/ProtocolExporter.cs | 891 +++++ .../Exporter/ProtocolOpCode.cs | 38 + .../ExporterAges.cs | 18 + .../ExporterSettings.json | 29 + .../ExporterSettingsHelper.cs | 63 + .../Fantasy.Tools.NetworkProtocol.csproj | 64 + .../Fantasy.Tools.NetworkProtocol/Program.cs | 28 + .../Properties/launchSettings.json | 10 + .../Fantasy.Tools.NetworkProtocol/Run.bat | 21 + .../Fantasy.Tools.NetworkProtocol/Run.sh | 24 + Tools/SourceCode/Fantasy.Tools.SourceCode.sln | 44 + ...tasy.Tools.SourceCode.sln.DotSettings.user | 21 + 753 files changed, 87652 insertions(+) create mode 100644 .gitignore create mode 100644 Entity/AssemblyHelper.cs create mode 100644 Entity/Entity.csproj create mode 100644 Entity/Generate/ConfigTable/Entity/UnitConfig.cs create mode 100644 Entity/Generate/ConfigTable/Partial/UnitConfigData.cs create mode 100644 Entity/Generate/CustomExport/SceneType.cs create mode 100644 Entity/Generate/NetworkProtocol/InnerMessage.cs create mode 100644 Entity/Generate/NetworkProtocol/InnerOpcode.cs create mode 100644 Entity/Generate/NetworkProtocol/OuterMessage.cs create mode 100644 Entity/Generate/NetworkProtocol/OuterOpcode.cs create mode 100644 Entity/Generate/NetworkProtocol/RoamingType.cs create mode 100644 Entity/Generate/NetworkProtocol/RouteType.cs create mode 100644 Entity/Model/Addressable/Unit.cs create mode 100644 Entity/Model/RouteMessage/ChatUnit.cs create mode 100644 Entity/Model/SubScene/GateSubSceneFlagComponent.cs create mode 100644 Fantasy/Fantasy.Benchmark/ConsoleLog.cs create mode 100644 Fantasy/Fantasy.Benchmark/Fantasy.Benchmark.csproj create mode 100644 Fantasy/Fantasy.Benchmark/NetworkBenchmark.cs create mode 100644 Fantasy/Fantasy.Benchmark/Program.cs create mode 100644 Fantasy/Fantasy.Benchmark/README.md create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net.sln create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Fantasy-Net.targets create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Fantasy.Net.csproj create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/LICENSE create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/README.md create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/AssemblyInfo.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/AssemblySystem.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/IAssembly.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/DataBaseType.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/IDataBase.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/MongoDataBase.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/World.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/CircularBuffer.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ConcurrentOneToManyListPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ConcurrentOneToManyQueuePool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/HashSetPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ListPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/OneToManyHashSetPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/OneToManyListPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/OneToManyQueuePool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ReuseList.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/SortedConcurrentOneToManyListPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/SortedOneToManyHashSetPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/SortedOneToManyListPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/DictionaryExtensions.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/DictionaryPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/DoubleMapDictionaryPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/EntityDictionary.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/OneToManyDictionaryPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/OneToManySortedDictionaryPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/ReuseDictionary.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/SortedDictionaryPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/PriorityQueue/PriorityQueueGenerics.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/PriorityQueue/PriorityQueueItem.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/PriorityQueue/PriorityQueueSimple.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTable.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTableBase.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTableDesc.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTableNode.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/CoroutineLock.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/CoroutineLockComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/CoroutineLockQueue.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/WaitCoroutineLock.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/EntityComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/EventComponent/EventComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/EventComponent/Interface/IEvent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/MessagePoolComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/SingleCollectionComponent/SingleCollectionComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/Interface/TimerHandler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimeWheel/ScheduledTask.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimeWheel/TimeWheel.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerAction.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerScheduler/TimerSchedulerNet.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerScheduler/TimerSchedulerNetUnity.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerType.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Entity.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/EntityPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/EntityReference.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISingleCollectionRoot.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedDataBase.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedMultiEntity.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedSingleCollection.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedTransfer.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IAwakeSystem.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/ICustomEntitiesSystem.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IDeserializeSystem.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IDestroySystem.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IEntitiesSystem.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IFrameUpdateSystem.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IUpdateSystem.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Builder/AsyncFTaskCompletedMethodBuilder.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Builder/AsyncFTaskMethodBuilder.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Builder/AsyncFVoidMethodBuilder.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/FCancellationToken/FCancellationToken.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/FTask.Extension/FTask.Factory.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/FTask.Extension/FTask.Tools.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Task/FTask.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Task/FTaskCompleted.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Task/FVoid.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/ByteHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/ADownload.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/ADownload.cs.meta create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/Download.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/Download.cs.meta create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAssetBundle.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAssetBundle.cs.meta create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAudioClip.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAudioClip.cs.meta create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadByte.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadByte.cs.meta create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadSprite.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadSprite.cs.meta create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadText.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadText.cs.meta create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadTexture.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadTexture.cs.meta create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/EncryptHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/FileHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HashCodeHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientHelper.cs.meta create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientPool.cs.meta create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/IJsonRpcRequest.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/IJsonRpcRequest.cs.meta create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/JsonHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/NetworkHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/RandomHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/RandomHelperWebgl.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/SocketHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/TimeHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/UnityWebRequest/UnityWebRequestHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/UnityWebRequest/UnityWebRequestHelper.cs.meta create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/WebSocketHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/WinPeriod.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Default/EntityIdStruct.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Default/RuntimeIdStruct.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/IdFactoryHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/IdFactoryType.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Interface/IIdFactory.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Interface/IIdFactoryTool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/World/WorldEntityIdFactory.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/World/WorldRuntimeIdFactory.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/InnerErrorCode.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/ConsoleLog.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/ILog.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/Log.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/UnityLog.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/LowLevel/FantasyMemory.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/LowLevel/FixedBytes.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/LowLevel/XxHash.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableManageComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableMessageComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableRouteComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableScene.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableAddHandler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableGetHandler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableLockHandler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableRemoveHandler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableUnLockHandler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/MemoryStreamBufferPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Dispatcher/Interface/IMessageHandler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Dispatcher/Interface/IRouteMessageHandler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Dispatcher/MessageDispatcherComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/IMessage.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/InnerMessage.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/BufferPacketParser.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/CircularBufferPacketParser.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/OuterBufferPacketParserHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/ReadOnlyMemoryPacketParser.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Interface/APackInfo.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Interface/APacketParser.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/OpCode.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Pack/InnerPackInfo.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Pack/OuterPackInfo.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Pack/ProcessPackInfo.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Packet.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/PacketParserFactory.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/ClientMessageScheduler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/InnerMessageScheduler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/Interface/ANetworkMessageScheduler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/MessageHelper/MessageSender.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/MessageHelper/NetworkMessagingComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/MessageHelper/OnNetworkMessageUpdateCheckTimeout.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/OuterMessageScheduler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Exception/ScanException.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/HTTP/HTTPServerNetwork.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/HTTP/SceneContextFilter.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/AClientNetwork.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/ANetwork.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/ANetworkServerChannel.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/INetworkChannel.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/Kcp.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/c/kcp.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/define/system.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/include/kcp.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Client/KCPClientNetwork.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/KCPSettings.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/KcpHeader.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Server/KCPServerNetworkByArrayPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Server/KCPServerNetworkByPipe.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Server/KCPServerNetworkChannel.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/NetworkProtocolFactory.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/NetworkProtocolType.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/NetworkThreadComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/TCP/Client/TCPClientNetwork.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/TCP/Server/TCPServerNetwork.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/TCP/Server/TCPServerNetworkChannel.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Client/WebSocketClientNetwork.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Client/WebSocketClientNetworkWebgl.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Server/WebSocketServerNetwork.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Server/WebSocketServerNetworkChannel.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/RoamingComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/SessionRoamingComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/SessionRoamingFlgComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/TerminusComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Entity/Roaming.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Entity/Terminus.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_GetTerminusIdRequestHandler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_LinkRoamingRequestHandler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_LockTerminusIdRequestHandler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_TransferTerminusRequestHandler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_UnLinkRoamingRequestHandler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_UnLockTerminusIdRequestHandler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Route/RouteComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Component/ConsoleSessionHeartbeatComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Component/SessionIdleCheckerComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Component/UnitySessionHeartbeatComponent.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/ProcessSession/ProcessScheduler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/ProcessSession/ProcessSession.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/ProcessSession/ProcessSessionInfo.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Session.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Console/Entry.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Console/ThreadSynchronizationContext.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/MachineConfig.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/ProcessConfig.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/SceneConfig.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/WorldConfig.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/Entry.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/Process.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ProcessDefine.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ThreadSynchronizationContext.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/AppDefine.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonDefaultValueAttribute.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonElementAttribute.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIdAttribute.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIgnoreAttribute.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIgnoreIfDefaultAttribute.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIgnoreIfNullAttribute.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Entry.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Temp.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/ThreadSynchronizationContext.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Concurrent/MultiThreadPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Concurrent/MultiThreadPoolQueue.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Interface/IPool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Normal/Pool.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Normal/PoolCore.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Normal/PoolWithDisposable.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/PoolHelper.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/ISceneUpdate.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scene.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/SceneRuntimeMode.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/SceneRuntimeType.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/ISceneScheduler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/MainScheduler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/MultiThreadScheduler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/ThreadPoolScheduler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/ThreadScheduler.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/SubScene.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/BsonPackHelperNet.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/BsonPackHelperUnity.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/StructBsonSerialize.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/SupportInitializeChecker.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/Interface/ASerialize.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/Interface/ISerialize.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/MemoryStreamBuffer.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/ProtoBufPackHelper/IProto.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/ProtoBufPackHelper/ProtoBufPackHelperNet.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/ProtoBufPackHelper/ProtoBufPackHelperUnity.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/SerializerManager.cs create mode 100644 Fantasy/Fantasy.Net/Fantasy.Net/icon.png create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Custom.txt create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Server/MachineConfig.xlsx create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Server/ProcessConfig.xlsx create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Server/SceneConfig.xlsx create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Server/WorldConfig.xlsx create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Version.txt create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/MachineConfigData.Json create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/ProcessConfigData.Json create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/SceneConfigData.Json create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/WorldConfigData.Json create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/Inner/InnerMessage.proto create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/OpCode.Cache create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/Outer/OuterMessage.proto create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/RouteType.Config create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Fantasy-Net.Config.targets create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/Fantasy.Config.csproj create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/README.md create mode 100644 Fantasy/Fantasy.Packages/Fantasy.Config/icon.png create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/ConfigTableHelper.cs create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Dictionary/IntDictionaryConfig.cs create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Dictionary/StringDictionaryConfig.cs create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Fantasy.ConfigTable.csproj create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Interface/IConfigTable.cs create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/icon.png create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/README.md create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Fantasy.ConfigTable.asmdef create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Fantasy.ConfigTable.asmdef.meta create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime.meta create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/ConfigTableHelper.cs create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/ConfigTableHelper.cs.meta create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary.meta create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/IntDictionaryConfig.cs create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/IntDictionaryConfig.cs.meta create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/StringDictionaryConfig.cs create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/StringDictionaryConfig.cs.meta create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface.meta create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTable.cs create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTable.cs.meta create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTableAssetBundle.cs create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTableAssetBundle.cs.meta create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/package.json create mode 100644 Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/package.json.meta create mode 100644 Fantasy/Fantasy.Packages/Fantasy.MemoryPack/Net/MemoryPack/MemoryPackHelper.cs create mode 100644 Fantasy/Fantasy.Packages/Fantasy.MemoryPack/README.md create mode 100644 Fantasy/Fantasy.Packages/Fantasy.MemoryPack/Unity/Fantays.MemoryPack.unitypackage create mode 100644 Fantasy/Fantasy.Packages/Fantasy.NLog/Fantasy-Net.NLog.targets create mode 100644 Fantasy/Fantasy.Packages/Fantasy.NLog/Fantasy.NLog.csproj create mode 100644 Fantasy/Fantasy.Packages/Fantasy.NLog/NLog.config create mode 100644 Fantasy/Fantasy.Packages/Fantasy.NLog/NLog.cs create mode 100644 Fantasy/Fantasy.Packages/Fantasy.NLog/NLog.xsd create mode 100644 Fantasy/Fantasy.Packages/Fantasy.NLog/icon.png create mode 100644 Fantasy/Fantays.Console/Fantasy.Console.csproj create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Assembly/AssemblyInfo.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Assembly/AssemblySystem.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Assembly/IAssembly.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataBase/DataBaseType.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataBase/IDataBase.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataBase/MongoDataBase.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataBase/World.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Collection/CircularBuffer.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Collection/ConcurrentOneToManyListPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Collection/ConcurrentOneToManyQueuePool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Collection/HashSetPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Collection/ListPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Collection/OneToManyHashSetPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Collection/OneToManyListPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Collection/OneToManyQueuePool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Collection/ReuseList.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Collection/SortedConcurrentOneToManyListPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Collection/SortedOneToManyHashSetPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Collection/SortedOneToManyListPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Dictionary/DictionaryExtensions.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Dictionary/DictionaryPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Dictionary/DoubleMapDictionaryPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Dictionary/EntityDictionary.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Dictionary/OneToManyDictionaryPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Dictionary/OneToManySortedDictionaryPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Dictionary/ReuseDictionary.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/Dictionary/SortedDictionaryPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/PriorityQueue/PriorityQueueGenerics.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/PriorityQueue/PriorityQueueItem.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/PriorityQueue/PriorityQueueSimple.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/SkipTable/SkipTable.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/SkipTable/SkipTableBase.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/SkipTable/SkipTableDesc.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/DataStructure/SkipTable/SkipTableNode.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/CoroutineLock/CoroutineLock.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/CoroutineLock/CoroutineLockComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/CoroutineLock/CoroutineLockQueue.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/CoroutineLock/WaitCoroutineLock.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/EntityComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/EventComponent/EventComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/EventComponent/Interface/IEvent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/MessagePoolComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/SingleCollectionComponent/SingleCollectionComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/TimerComponent/Interface/TimerHandler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/TimerComponent/TimeWheel/ScheduledTask.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/TimerComponent/TimeWheel/TimeWheel.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/TimerComponent/TimerAction.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/TimerComponent/TimerComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/TimerComponent/TimerScheduler/TimerSchedulerNet.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/TimerComponent/TimerScheduler/TimerSchedulerNetUnity.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Component/TimerComponent/TimerType.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Entity.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/EntityPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/EntityReference.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Interface/Supported/ISingleCollectionRoot.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Interface/Supported/ISupportedDataBase.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Interface/Supported/ISupportedMultiEntity.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Interface/Supported/ISupportedSingleCollection.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Interface/Supported/ISupportedTransfer.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Interface/System/IAwakeSystem.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Interface/System/ICustomEntitiesSystem.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Interface/System/IDeserializeSystem.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Interface/System/IDestroySystem.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Interface/System/IEntitiesSystem.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Interface/System/IFrameUpdateSystem.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Entitas/Interface/System/IUpdateSystem.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/FTask/Builder/AsyncFTaskCompletedMethodBuilder.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/FTask/Builder/AsyncFTaskMethodBuilder.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/FTask/Builder/AsyncFVoidMethodBuilder.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/FTask/FCancellationToken/FCancellationToken.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/FTask/FTask.Extension/FTask.Factory.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/FTask/FTask.Extension/FTask.Tools.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/FTask/Task/FTask.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/FTask/Task/FTaskCompleted.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/FTask/Task/FVoid.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/ByteHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/ADownload.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/ADownload.cs.meta create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/Download.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/Download.cs.meta create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/DownloadAssetBundle.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/DownloadAssetBundle.cs.meta create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/DownloadAudioClip.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/DownloadAudioClip.cs.meta create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/DownloadByte.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/DownloadByte.cs.meta create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/DownloadSprite.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/DownloadSprite.cs.meta create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/DownloadText.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/DownloadText.cs.meta create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/DownloadTexture.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/Download/DownloadTexture.cs.meta create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/EncryptHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/FileHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/HashCodeHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/HttpClient/HttpClientHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/HttpClient/HttpClientHelper.cs.meta create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/HttpClient/HttpClientPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/HttpClient/HttpClientPool.cs.meta create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/HttpClient/IJsonRpcRequest.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/HttpClient/IJsonRpcRequest.cs.meta create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/JsonHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/NetworkHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/RandomHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/RandomHelperWebgl.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/SocketHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/TimeHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/UnityWebRequest/UnityWebRequestHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/UnityWebRequest/UnityWebRequestHelper.cs.meta create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/WebSocketHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Helper/WinPeriod.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/IdFactory/Default/EntityIdStruct.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/IdFactory/Default/RuntimeIdStruct.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/IdFactory/IdFactoryHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/IdFactory/IdFactoryType.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/IdFactory/Interface/IIdFactory.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/IdFactory/Interface/IIdFactoryTool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/IdFactory/World/WorldEntityIdFactory.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/IdFactory/World/WorldRuntimeIdFactory.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/InnerErrorCode.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Log/ConsoleLog.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Log/ILog.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Log/Log.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Log/UnityLog.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/LowLevel/FantasyMemory.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/LowLevel/FixedBytes.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/LowLevel/XxHash.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Addressable/AddressableHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Addressable/AddressableManageComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Addressable/AddressableMessageComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Addressable/AddressableRouteComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Addressable/AddressableScene.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Addressable/Handler/I_AddressableAddHandler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Addressable/Handler/I_AddressableGetHandler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Addressable/Handler/I_AddressableLockHandler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Addressable/Handler/I_AddressableRemoveHandler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Addressable/Handler/I_AddressableUnLockHandler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/MemoryStreamBufferPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/Dispatcher/Interface/IMessageHandler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/Dispatcher/Interface/IRouteMessageHandler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/Dispatcher/MessageDispatcherComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/IMessage.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/InnerMessage.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/PacketParser/Handler/BufferPacketParser.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/PacketParser/Handler/CircularBufferPacketParser.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/PacketParser/Handler/OuterBufferPacketParserHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/PacketParser/Handler/ReadOnlyMemoryPacketParser.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/PacketParser/Interface/APackInfo.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/PacketParser/Interface/APacketParser.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/PacketParser/OpCode.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/PacketParser/Pack/InnerPackInfo.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/PacketParser/Pack/OuterPackInfo.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/PacketParser/Pack/ProcessPackInfo.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/PacketParser/Packet.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/PacketParser/PacketParserFactory.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/Scheduler/ClientMessageScheduler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/Scheduler/InnerMessageScheduler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/Scheduler/Interface/ANetworkMessageScheduler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/Scheduler/MessageHelper/MessageSender.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/Scheduler/MessageHelper/NetworkMessagingComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/Scheduler/MessageHelper/OnNetworkMessageUpdateCheckTimeout.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Message/Scheduler/OuterMessageScheduler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/Exception/ScanException.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/HTTP/HTTPServerNetwork.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/HTTP/SceneContextFilter.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/Interface/AClientNetwork.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/Interface/ANetwork.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/Interface/ANetworkServerChannel.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/Interface/INetworkChannel.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/KCP/Base/Kcp.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/KCP/Base/c/kcp.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/KCP/Base/define/system.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/KCP/Base/include/kcp.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/KCP/Client/KCPClientNetwork.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/KCP/KCPSettings.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/KCP/KcpHeader.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/KCP/Server/KCPServerNetworkByArrayPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/KCP/Server/KCPServerNetworkByPipe.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/KCP/Server/KCPServerNetworkChannel.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/NetworkProtocolFactory.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/NetworkProtocolType.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/NetworkThreadComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/TCP/Client/TCPClientNetwork.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/TCP/Server/TCPServerNetwork.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/TCP/Server/TCPServerNetworkChannel.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/WebSocket/Client/WebSocketClientNetwork.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/WebSocket/Client/WebSocketClientNetworkWebgl.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/WebSocket/Server/WebSocketServerNetwork.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Protocol/WebSocket/Server/WebSocketServerNetworkChannel.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Roaming/Component/RoamingComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Roaming/Component/SessionRoamingComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Roaming/Component/SessionRoamingFlgComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Roaming/Component/TerminusComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Roaming/Entity/Roaming.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Roaming/Entity/Terminus.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Roaming/Handler/I_GetTerminusIdRequestHandler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Roaming/Handler/I_LinkRoamingRequestHandler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Roaming/Handler/I_LockTerminusIdRequestHandler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Roaming/Handler/I_TransferTerminusRequestHandler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Roaming/Handler/I_UnLinkRoamingRequestHandler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Roaming/Handler/I_UnLockTerminusIdRequestHandler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Route/RouteComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Session/Component/ConsoleSessionHeartbeatComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Session/Component/SessionIdleCheckerComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Session/Component/UnitySessionHeartbeatComponent.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Session/ProcessSession/ProcessScheduler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Session/ProcessSession/ProcessSession.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Session/ProcessSession/ProcessSessionInfo.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Network/Session/Session.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Console/Entry.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Console/ThreadSynchronizationContext.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Net/ConfigTable/MachineConfig.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Net/ConfigTable/ProcessConfig.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Net/ConfigTable/SceneConfig.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Net/ConfigTable/WorldConfig.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Net/Entry.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Net/Process.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Net/ProcessDefine.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Net/ThreadSynchronizationContext.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Unity/AppDefine.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Unity/Attributes/BsonDefaultValueAttribute.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Unity/Attributes/BsonElementAttribute.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Unity/Attributes/BsonIdAttribute.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Unity/Attributes/BsonIgnoreAttribute.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Unity/Attributes/BsonIgnoreIfDefaultAttribute.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Unity/Attributes/BsonIgnoreIfNullAttribute.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Unity/Entry.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Unity/Temp.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Platform/Unity/ThreadSynchronizationContext.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Pool/Concurrent/MultiThreadPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Pool/Concurrent/MultiThreadPoolQueue.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Pool/Interface/IPool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Pool/Normal/Pool.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Pool/Normal/PoolCore.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Pool/Normal/PoolWithDisposable.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Pool/PoolHelper.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Scene/ISceneUpdate.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Scene/Scene.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Scene/SceneRuntimeMode.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Scene/SceneRuntimeType.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Scene/Scheduler/ISceneScheduler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Scene/Scheduler/MainScheduler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Scene/Scheduler/MultiThreadScheduler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Scene/Scheduler/ThreadPoolScheduler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Scene/Scheduler/ThreadScheduler.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Scene/SubScene.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Serialize/BsonPack/BsonPackHelperNet.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Serialize/BsonPack/BsonPackHelperUnity.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Serialize/BsonPack/StructBsonSerialize.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Serialize/BsonPack/SupportInitializeChecker.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Serialize/Interface/ASerialize.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Serialize/Interface/ISerialize.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Serialize/MemoryStreamBuffer.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Serialize/ProtoBufPackHelper/IProto.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Serialize/ProtoBufPackHelper/ProtoBufPackHelperNet.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Serialize/ProtoBufPackHelper/ProtoBufPackHelperUnity.cs create mode 100644 Fantasy/Fantays.Console/Runtime/Core/Serialize/SerializerManager.cs create mode 100644 Hotfix/CustomSystem/IRunSystem.cs create mode 100644 Hotfix/HTTPHandler/HelloController.cs create mode 100644 Hotfix/HTTPHandler/ProductsController.cs create mode 100644 Hotfix/HTTPHandler/UsersController.cs create mode 100644 Hotfix/Hotfix.csproj create mode 100644 Hotfix/Inner/Addressable/G2M_RequestAddressableIdHandler.cs create mode 100644 Hotfix/Inner/G2A_TestMessageHandler.cs create mode 100644 Hotfix/Inner/G2A_TestRequestHandler.cs create mode 100644 Hotfix/Inner/RouteMessage/G2Chat_CreateRouteRequestHandler.cs create mode 100644 Hotfix/Inner/SubScene/G2M_CreateSubSceneRequestHandler.cs create mode 100644 Hotfix/Inner/SubScene/G2SubScene_AddressableIdRequestHandler.cs create mode 100644 Hotfix/Inner/SubScene/G2SubScene_SentMessageHandler.cs create mode 100644 Hotfix/OnCreateSceneEvent.cs create mode 100644 Hotfix/Outer/Addresable/C2G_CreateAddressableRequestHandler.cs create mode 100644 Hotfix/Outer/Addresable/C2G_SendAddressableToMapHandler.cs create mode 100644 Hotfix/Outer/Addresable/C2M_MoveToMapRequestHandler.cs create mode 100644 Hotfix/Outer/Addresable/C2M_TestMessageHandler.cs create mode 100644 Hotfix/Outer/Addresable/C2M_TestRequestHandler.cs create mode 100644 Hotfix/Outer/Addresable/G2M_SendAddressableMessageHandler.cs create mode 100644 Hotfix/Outer/Addresable/M2M_SendUnitRequestHandler.cs create mode 100644 Hotfix/Outer/NormalMessage/Gate/C2G_TestMessageHandler.cs create mode 100644 Hotfix/Outer/NormalMessage/Gate/C2G_TestRequestHandler.cs create mode 100644 Hotfix/Outer/NormalMessage/Gate/C2G_TestRequestPushMessageHandler.cs create mode 100644 Hotfix/Outer/Roaming/Chat/C2Chat_TestRPCRoamingRequestHandler.cs create mode 100644 Hotfix/Outer/Roaming/Chat/C2Chat_TestRoamingMessageHandler.cs create mode 100644 Hotfix/Outer/Roaming/Chat/C2Chat_TestSendMapMessageHandler.cs create mode 100644 Hotfix/Outer/Roaming/Gate/C2G_ConnectRoamingRequestHandler.cs create mode 100644 Hotfix/Outer/Roaming/Map/C2Map_PushMessageToClientHandler.cs create mode 100644 Hotfix/Outer/Roaming/Map/C2Map_TestRoamingMessageHandler.cs create mode 100644 Hotfix/Outer/Roaming/Map/C2Map_TestTransferRequestHandler.cs create mode 100644 Hotfix/Outer/Roaming/Map/Chat2M_TestMessageHandler.cs create mode 100644 Hotfix/Outer/RouteMessage/C2Chat_TestMessageHandler.cs create mode 100644 Hotfix/Outer/RouteMessage/C2Chat_TestMessageRequestHandler.cs create mode 100644 Hotfix/Outer/RouteMessage/C2Chat_TestRequestPushMessageHandler.cs create mode 100644 Hotfix/Outer/RouteMessage/C2G_CreateChatRouteRequestHandler.cs create mode 100644 Hotfix/Outer/SubScene/C2G_CreateSubSceneAddressableRequestHandler.cs create mode 100644 Hotfix/Outer/SubScene/C2G_CreateSubSceneRequestHandler.cs create mode 100644 Hotfix/Outer/SubScene/C2G_SendToSubSceneMessageHandler.cs create mode 100644 Hotfix/Outer/SubScene/C2SubScene_TestDisposeMessageHandler.cs create mode 100644 Hotfix/Outer/SubScene/C2SubScene_TestMessageHandler.cs create mode 100644 Main/Fantasy.json create mode 100644 Main/Main.csproj create mode 100644 Main/NLog.config create mode 100644 Main/NLog.cs create mode 100644 Main/NLog.xsd create mode 100644 Main/Program.cs create mode 100644 Main/Properties/launchSettings.json create mode 100644 Server.sln create mode 100644 Server.sln.DotSettings.user create mode 100644 Tools/Exporter/ConfigTable/CommandLine.dll create mode 100644 Tools/Exporter/ConfigTable/EPPlus.Interfaces.dll create mode 100644 Tools/Exporter/ConfigTable/EPPlus.System.Drawing.dll create mode 100644 Tools/Exporter/ConfigTable/EPPlus.dll create mode 100644 Tools/Exporter/ConfigTable/ExporterSettings.json create mode 100644 Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable create mode 100644 Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.deps.json create mode 100644 Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.dll create mode 100644 Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.pdb create mode 100644 Tools/Exporter/ConfigTable/Fantasy.Tools.ConfigTable.runtimeconfig.json create mode 100644 Tools/Exporter/ConfigTable/Microsoft.CodeAnalysis.CSharp.dll create mode 100644 Tools/Exporter/ConfigTable/Microsoft.CodeAnalysis.dll create mode 100644 Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.Abstractions.dll create mode 100644 Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.FileExtensions.dll create mode 100644 Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.Json.dll create mode 100644 Tools/Exporter/ConfigTable/Microsoft.Extensions.Configuration.dll create mode 100644 Tools/Exporter/ConfigTable/Microsoft.Extensions.FileProviders.Abstractions.dll create mode 100644 Tools/Exporter/ConfigTable/Microsoft.Extensions.FileProviders.Physical.dll create mode 100644 Tools/Exporter/ConfigTable/Microsoft.Extensions.FileSystemGlobbing.dll create mode 100644 Tools/Exporter/ConfigTable/Microsoft.Extensions.Primitives.dll create mode 100644 Tools/Exporter/ConfigTable/Microsoft.IO.RecyclableMemoryStream.dll create mode 100644 Tools/Exporter/ConfigTable/Microsoft.Win32.SystemEvents.dll create mode 100644 Tools/Exporter/ConfigTable/Newtonsoft.Json.dll create mode 100644 Tools/Exporter/ConfigTable/Run.bat create mode 100644 Tools/Exporter/ConfigTable/Run.sh create mode 100644 Tools/Exporter/ConfigTable/System.Collections.Immutable.dll create mode 100644 Tools/Exporter/ConfigTable/System.Drawing.Common.dll create mode 100644 Tools/Exporter/ConfigTable/System.IO.Pipelines.dll create mode 100644 Tools/Exporter/ConfigTable/System.Reflection.Metadata.dll create mode 100644 Tools/Exporter/ConfigTable/System.Security.Cryptography.Pkcs.dll create mode 100644 Tools/Exporter/ConfigTable/System.Security.Cryptography.Xml.dll create mode 100644 Tools/Exporter/ConfigTable/System.Text.Encoding.CodePages.dll create mode 100644 Tools/Exporter/ConfigTable/System.Text.Encodings.Web.dll create mode 100644 Tools/Exporter/ConfigTable/System.Text.Json.dll create mode 100644 Tools/Exporter/ConfigTable/protobuf-net.Core.dll create mode 100644 Tools/Exporter/ConfigTable/protobuf-net.dll create mode 100644 Tools/Exporter/ConfigTable/runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll create mode 100644 Tools/Exporter/ConfigTable/runtimes/win/lib/net7.0/Microsoft.Win32.SystemEvents.dll create mode 100644 Tools/Exporter/ConfigTable/runtimes/win/lib/net7.0/System.Drawing.Common.dll create mode 100644 Tools/Exporter/ConfigTable/runtimes/win/lib/net8.0/System.Security.Cryptography.Pkcs.dll create mode 100644 Tools/Exporter/ConfigTable/runtimes/win/lib/net9.0/System.Security.Cryptography.Pkcs.dll create mode 100644 Tools/Exporter/ConfigTable/runtimes/win/lib/net9.0/System.Text.Encoding.CodePages.dll create mode 100644 Tools/Exporter/NetworkProtocol/CommandLine.dll create mode 100644 Tools/Exporter/NetworkProtocol/ExporterSettings.json create mode 100644 Tools/Exporter/NetworkProtocol/Fantasy.Tools.NetworkProtocol create mode 100644 Tools/Exporter/NetworkProtocol/Fantasy.Tools.NetworkProtocol.deps.json create mode 100644 Tools/Exporter/NetworkProtocol/Fantasy.Tools.NetworkProtocol.dll create mode 100644 Tools/Exporter/NetworkProtocol/Fantasy.Tools.NetworkProtocol.pdb create mode 100644 Tools/Exporter/NetworkProtocol/Fantasy.Tools.NetworkProtocol.runtimeconfig.json create mode 100644 Tools/Exporter/NetworkProtocol/Microsoft.Extensions.Configuration.Abstractions.dll create mode 100644 Tools/Exporter/NetworkProtocol/Microsoft.Extensions.Configuration.FileExtensions.dll create mode 100644 Tools/Exporter/NetworkProtocol/Microsoft.Extensions.Configuration.Json.dll create mode 100644 Tools/Exporter/NetworkProtocol/Microsoft.Extensions.Configuration.dll create mode 100644 Tools/Exporter/NetworkProtocol/Microsoft.Extensions.FileProviders.Abstractions.dll create mode 100644 Tools/Exporter/NetworkProtocol/Microsoft.Extensions.FileProviders.Physical.dll create mode 100644 Tools/Exporter/NetworkProtocol/Microsoft.Extensions.FileSystemGlobbing.dll create mode 100644 Tools/Exporter/NetworkProtocol/Microsoft.Extensions.Primitives.dll create mode 100644 Tools/Exporter/NetworkProtocol/Newtonsoft.Json.dll create mode 100644 Tools/Exporter/NetworkProtocol/Run.bat create mode 100644 Tools/Exporter/NetworkProtocol/Run.sh create mode 100644 Tools/Exporter/NetworkProtocol/System.IO.Pipelines.dll create mode 100644 Tools/Exporter/NetworkProtocol/System.Text.Encodings.Web.dll create mode 100644 Tools/Exporter/NetworkProtocol/System.Text.Json.dll create mode 100644 Tools/Exporter/NetworkProtocol/runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll create mode 100644 Tools/NuGet/Fantasy.Tools.ExporterConfigTable/Fantasy-Net.Tools.ExporterConfigTable.targets create mode 100644 Tools/NuGet/Fantasy.Tools.ExporterConfigTable/Fantasy.Tools.ExporterConfigTable.csproj create mode 100644 Tools/NuGet/Fantasy.Tools.ExporterConfigTable/icon.png create mode 100644 Tools/NuGet/Fantasy.Tools.ExporterNetworkProtocol/Fantasy-Net.Tools.ExporterNetworkProtocol.targets create mode 100644 Tools/NuGet/Fantasy.Tools.ExporterNetworkProtocol/Fantasy.Tools.ExporterNetworkProtocol.csproj create mode 100644 Tools/NuGet/Fantasy.Tools.ExporterNetworkProtocol/icon.png create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Core/Base/ExportType.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/CustomExport/ConstValueToConst.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/CustomExport/SceneTypeConfigToEnum.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Exporter/ConfigTableHelper.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Exporter/DynamicAssembly/DynamicAssembly.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Exporter/DynamicAssembly/DynamicConfigDataType.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Exporter/DynamicAssembly/OneDynamicAssembly.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Exporter/ExcelExporter.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Exporter/ExcelHelper.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Exporter/ExcelTable.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Exporter/ExcelTemplate.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Exporter/ExcelWorksheets.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Exporter/ExportInfo.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Exporter/ICustomExport.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Exporter/VersionInfo.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/ExporterAges.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/ExporterSettings.json create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/ExporterSettingsHelper.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Fantasy.Tools.ConfigTable.csproj create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Program.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Properties/launchSettings.json create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Run.bat create mode 100644 Tools/SourceCode/Fantasy.Tools.ConfigTable/Run.sh create mode 100644 Tools/SourceCode/Fantasy.Tools.NetworkProtocol/Core/Base/ConsoleLog.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.NetworkProtocol/Core/Base/CustomSerialize.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.NetworkProtocol/Core/Base/ExportPlatform.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.NetworkProtocol/Exporter/NetworkProtocolTemplate.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.NetworkProtocol/Exporter/OpCodeCache.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.NetworkProtocol/Exporter/ProtocolExporter.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.NetworkProtocol/Exporter/ProtocolOpCode.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.NetworkProtocol/ExporterAges.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.NetworkProtocol/ExporterSettings.json create mode 100644 Tools/SourceCode/Fantasy.Tools.NetworkProtocol/ExporterSettingsHelper.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.NetworkProtocol/Fantasy.Tools.NetworkProtocol.csproj create mode 100644 Tools/SourceCode/Fantasy.Tools.NetworkProtocol/Program.cs create mode 100644 Tools/SourceCode/Fantasy.Tools.NetworkProtocol/Properties/launchSettings.json create mode 100644 Tools/SourceCode/Fantasy.Tools.NetworkProtocol/Run.bat create mode 100644 Tools/SourceCode/Fantasy.Tools.NetworkProtocol/Run.sh create mode 100644 Tools/SourceCode/Fantasy.Tools.SourceCode.sln create mode 100644 Tools/SourceCode/Fantasy.Tools.SourceCode.sln.DotSettings.user diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d9b4e5d --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +# Specify filepatterns you want git to ignore. +obj/ +Bin/ +bin/ +Temp/ +Library/ +Logs/ +temp/ +DocFx/ +global.json + +# 项目素材 +ResLibrary/ +# Unity项目文件 +examples/**/Unity/*.sln +examples/**/Unity/*.csproj +examples/**/Unity/.vsconfig + +# Client-Unity +HybridCLRData/ +AssetBundles/ +UserSettings/ +# 忽略Packages.Unity包下的.meta +Packages.Unity/**/*.meta + + +# Other +.idea +.vs +.vscode +*.DS_Store +# 不排除示例项目的.vscode +!examples/**/.vscode +!Tools/**/.vscode +examples/**/Unity/.vscode diff --git a/Entity/AssemblyHelper.cs b/Entity/AssemblyHelper.cs new file mode 100644 index 0000000..cac01c5 --- /dev/null +++ b/Entity/AssemblyHelper.cs @@ -0,0 +1,41 @@ +using System.Reflection; +using System.Runtime.Loader; + +namespace Fantasy +{ + public static class AssemblyHelper + { + private const string HotfixDll = "Hotfix"; + private static AssemblyLoadContext? _assemblyLoadContext = null; + + public static System.Reflection.Assembly[] Assemblies + { + get + { + var assemblies = new System.Reflection.Assembly[2]; + assemblies[0] = LoadEntityAssembly(); + assemblies[1] = LoadHotfixAssembly(); + return assemblies; + } + } + + private static System.Reflection.Assembly LoadEntityAssembly() + { + return typeof(AssemblyHelper).Assembly; + } + + private static System.Reflection.Assembly LoadHotfixAssembly() + { + if (_assemblyLoadContext != null) + { + _assemblyLoadContext.Unload(); + System.GC.Collect(); + } + + _assemblyLoadContext = new AssemblyLoadContext(HotfixDll, true); + var dllBytes = File.ReadAllBytes(Path.Combine(Environment.CurrentDirectory, $"{HotfixDll}.dll")); + var pdbBytes = File.ReadAllBytes(Path.Combine(Environment.CurrentDirectory, $"{HotfixDll}.pdb")); + return _assemblyLoadContext.LoadFromStream(new MemoryStream(dllBytes), new MemoryStream(pdbBytes)); + } + } +} \ No newline at end of file diff --git a/Entity/Entity.csproj b/Entity/Entity.csproj new file mode 100644 index 0000000..5030fc6 --- /dev/null +++ b/Entity/Entity.csproj @@ -0,0 +1,24 @@ + + + + enable + enable + Linux + net8.0;net9.0 + default + + + + TRACE;FANTASY_NET + + + + TRACE;FANTASY_NET + + + + + + + + diff --git a/Entity/Generate/ConfigTable/Entity/UnitConfig.cs b/Entity/Generate/ConfigTable/Entity/UnitConfig.cs new file mode 100644 index 0000000..c0f11d9 --- /dev/null +++ b/Entity/Generate/ConfigTable/Entity/UnitConfig.cs @@ -0,0 +1,99 @@ +using System; +using ProtoBuf; +using Fantasy; +using System.Linq; +using System.Reflection; +using System.Collections.Generic; +using System.Collections.Concurrent; +using Fantasy.ConfigTable; +using Fantasy.Serialize; +// ReSharper disable CollectionNeverUpdated.Global +// ReSharper disable UnusedAutoPropertyAccessor.Global +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS0169 +#pragma warning disable CS8618 +#pragma warning disable CS8625 +#pragma warning disable CS8603 + +namespace Fantasy +{ + [ProtoContract] + public sealed partial class UnitConfigData : ASerialize, IConfigTable, IProto + { + [ProtoMember(1)] + public List List { get; set; } = new List(); +#if FANTASY_NET + [ProtoIgnore] + private readonly ConcurrentDictionary _configs = new ConcurrentDictionary(); +#else + [ProtoIgnore] + private readonly Dictionary _configs = new Dictionary(); +#endif + private static UnitConfigData _instance = null; + + public static UnitConfigData Instance + { + get { return _instance ??= ConfigTableHelper.Load(); } + private set => _instance = value; + } + + public UnitConfig Get(uint id, bool check = true) + { + if (_configs.ContainsKey(id)) + { + return _configs[id]; + } + + if (check) + { + throw new Exception($"UnitConfig not find {id} Id"); + } + + return null; + } + public bool TryGet(uint id, out UnitConfig config) + { + config = null; + + if (!_configs.ContainsKey(id)) + { + return false; + } + + config = _configs[id]; + return true; + } + public override void AfterDeserialization() + { + foreach (var config in List) + { +#if FANTASY_NET + _configs.TryAdd(config.Id, config); +#else + _configs.Add(config.Id, config); +#endif + config.AfterDeserialization(); + } + + EndInit(); + } + + public override void Dispose() + { + Instance = null; + } + } + + [ProtoContract] + public sealed partial class UnitConfig : ASerialize, IProto + { + [ProtoMember(1)] + public uint Id { get; set; } // Id + [ProtoMember(2)] + public string Name { get; set; } // 名称 + [ProtoMember(3)] + public string Model { get; set; } // 数据库类型 + [ProtoMember(4)] + public StringDictionaryConfig Dic { get; set; } // 字典类型 + } +} \ No newline at end of file diff --git a/Entity/Generate/ConfigTable/Partial/UnitConfigData.cs b/Entity/Generate/ConfigTable/Partial/UnitConfigData.cs new file mode 100644 index 0000000..36e9c93 --- /dev/null +++ b/Entity/Generate/ConfigTable/Partial/UnitConfigData.cs @@ -0,0 +1,10 @@ +namespace Fantasy; + +public sealed partial class UnitConfigData +{ + public override void EndInit() + { + Log.Debug("UnitConfigData EndInit"); + base.EndInit(); + } +} \ No newline at end of file diff --git a/Entity/Generate/CustomExport/SceneType.cs b/Entity/Generate/CustomExport/SceneType.cs new file mode 100644 index 0000000..de34ed9 --- /dev/null +++ b/Entity/Generate/CustomExport/SceneType.cs @@ -0,0 +1,27 @@ +namespace Fantasy +{ + // 生成器自动生成,请不要手动编辑。 + public static class SceneType + { + public const int Authentication = 1; + public const int Addressable = 2; + public const int Gate = 3; + public const int Map = 4; + public const int CopyDispatcher = 5; + public const int CopyManager = 6; + public const int Copy = 7; + public const int Chat = 8; + + public static readonly Dictionary SceneTypeDic = new Dictionary() + { + { "Authentication", 1 }, + { "Addressable", 2 }, + { "Gate", 3 }, + { "Map", 4 }, + { "CopyDispatcher", 5 }, + { "CopyManager", 6 }, + { "Copy", 7 }, + { "Chat", 8 }, + }; + } +} diff --git a/Entity/Generate/NetworkProtocol/InnerMessage.cs b/Entity/Generate/NetworkProtocol/InnerMessage.cs new file mode 100644 index 0000000..48aa0d7 --- /dev/null +++ b/Entity/Generate/NetworkProtocol/InnerMessage.cs @@ -0,0 +1,333 @@ +using ProtoBuf; + +using System.Collections.Generic; +using MongoDB.Bson.Serialization.Attributes; +using Fantasy; +using Fantasy.Network.Interface; +using Fantasy.Serialize; +// ReSharper disable InconsistentNaming +// ReSharper disable RedundantUsingDirective +// ReSharper disable RedundantOverriddenMember +// ReSharper disable PartialTypeWithSinglePart +// ReSharper disable UnusedAutoPropertyAccessor.Global +// ReSharper disable MemberCanBePrivate.Global +// ReSharper disable CheckNamespace +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 + +namespace Fantasy +{ + [ProtoContract] + public partial class G2A_TestMessage : AMessage, IRouteMessage, IProto + { + public static G2A_TestMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return InnerOpcode.G2A_TestMessage; } + [ProtoMember(1)] + public string Tag { get; set; } + } + [ProtoContract] + public partial class G2A_TestRequest : AMessage, IRouteRequest, IProto + { + public static G2A_TestRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public G2A_TestResponse ResponseType { get; set; } + public uint OpCode() { return InnerOpcode.G2A_TestRequest; } + } + [ProtoContract] + public partial class G2A_TestResponse : AMessage, IRouteResponse, IProto + { + public static G2A_TestResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return InnerOpcode.G2A_TestResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } + [ProtoContract] + public partial class G2M_RequestAddressableId : AMessage, IRouteRequest, IProto + { + public static G2M_RequestAddressableId Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public M2G_ResponseAddressableId ResponseType { get; set; } + public uint OpCode() { return InnerOpcode.G2M_RequestAddressableId; } + } + [ProtoContract] + public partial class M2G_ResponseAddressableId : AMessage, IRouteResponse, IProto + { + public static M2G_ResponseAddressableId Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; + AddressableId = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return InnerOpcode.M2G_ResponseAddressableId; } + [ProtoMember(1)] + public long AddressableId { get; set; } + [ProtoMember(2)] + public uint ErrorCode { get; set; } + } + /// + /// 通知Chat服务器创建一个RouteId + /// + [ProtoContract] + public partial class G2Chat_CreateRouteRequest : AMessage, IRouteRequest, IProto + { + public static G2Chat_CreateRouteRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + GateRouteId = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public Chat2G_CreateRouteResponse ResponseType { get; set; } + public uint OpCode() { return InnerOpcode.G2Chat_CreateRouteRequest; } + [ProtoMember(1)] + public long GateRouteId { get; set; } + } + [ProtoContract] + public partial class Chat2G_CreateRouteResponse : AMessage, IRouteResponse, IProto + { + public static Chat2G_CreateRouteResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; + ChatRouteId = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return InnerOpcode.Chat2G_CreateRouteResponse; } + [ProtoMember(1)] + public long ChatRouteId { get; set; } + [ProtoMember(2)] + public uint ErrorCode { get; set; } + } + /// + /// Map给另外一个Map发送Unit数据 + /// + public partial class M2M_SendUnitRequest : AMessage, IRouteRequest + { + public static M2M_SendUnitRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Unit = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [BsonIgnore] + public M2M_SendUnitResponse ResponseType { get; set; } + public uint OpCode() { return InnerOpcode.M2M_SendUnitRequest; } + public Unit Unit { get; set; } + } + public partial class M2M_SendUnitResponse : AMessage, IRouteResponse + { + public static M2M_SendUnitResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return InnerOpcode.M2M_SendUnitResponse; } + public uint ErrorCode { get; set; } + } + /// + /// Gate发送Addressable消息给MAP + /// + [ProtoContract] + public partial class G2M_SendAddressableMessage : AMessage, IAddressableRouteMessage, IProto + { + public static G2M_SendAddressableMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return InnerOpcode.G2M_SendAddressableMessage; } + [ProtoMember(1)] + public string Tag { get; set; } + } + [ProtoContract] + public partial class G2M_CreateSubSceneRequest : AMessage, IRouteRequest, IProto + { + public static G2M_CreateSubSceneRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public M2G_CreateSubSceneResponse ResponseType { get; set; } + public uint OpCode() { return InnerOpcode.G2M_CreateSubSceneRequest; } + } + [ProtoContract] + public partial class M2G_CreateSubSceneResponse : AMessage, IRouteResponse, IProto + { + public static M2G_CreateSubSceneResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; + SubSceneRouteId = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return InnerOpcode.M2G_CreateSubSceneResponse; } + [ProtoMember(1)] + public long SubSceneRouteId { get; set; } + [ProtoMember(2)] + public uint ErrorCode { get; set; } + } + [ProtoContract] + public partial class G2SubScene_SentMessage : AMessage, IRouteMessage, IProto + { + public static G2SubScene_SentMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return InnerOpcode.G2SubScene_SentMessage; } + [ProtoMember(1)] + public string Tag { get; set; } + } + /// + /// Gate通知SubScene创建一个Addressable消息 + /// + [ProtoContract] + public partial class G2SubScene_AddressableIdRequest : AMessage, IRouteRequest, IProto + { + public static G2SubScene_AddressableIdRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public SubScene2G_AddressableIdResponse ResponseType { get; set; } + public uint OpCode() { return InnerOpcode.G2SubScene_AddressableIdRequest; } + } + [ProtoContract] + public partial class SubScene2G_AddressableIdResponse : AMessage, IRouteResponse, IProto + { + public static SubScene2G_AddressableIdResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; + AddressableId = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return InnerOpcode.SubScene2G_AddressableIdResponse; } + [ProtoMember(1)] + public long AddressableId { get; set; } + [ProtoMember(2)] + public uint ErrorCode { get; set; } + } + /// + /// Chat发送一个漫游消息给Map + /// + [ProtoContract] + public partial class Chat2M_TestMessage : AMessage, IRoamingMessage, IProto + { + public static Chat2M_TestMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return InnerOpcode.Chat2M_TestMessage; } + [ProtoIgnore] + public int RouteType => Fantasy.RoamingType.MapRoamingType; + [ProtoMember(1)] + public string Tag { get; set; } + } +} diff --git a/Entity/Generate/NetworkProtocol/InnerOpcode.cs b/Entity/Generate/NetworkProtocol/InnerOpcode.cs new file mode 100644 index 0000000..a6128fe --- /dev/null +++ b/Entity/Generate/NetworkProtocol/InnerOpcode.cs @@ -0,0 +1,22 @@ +namespace Fantasy +{ + public static partial class InnerOpcode + { + public const uint G2A_TestMessage = 939534097; + public const uint G2A_TestRequest = 1073751825; + public const uint G2A_TestResponse = 1207969553; + public const uint G2M_RequestAddressableId = 1073751826; + public const uint M2G_ResponseAddressableId = 1207969554; + public const uint G2Chat_CreateRouteRequest = 1073751827; + public const uint Chat2G_CreateRouteResponse = 1207969555; + public const uint M2M_SendUnitRequest = 1082140436; + public const uint M2M_SendUnitResponse = 1216358164; + public const uint G2M_SendAddressableMessage = 1744840465; + public const uint G2M_CreateSubSceneRequest = 1073751829; + public const uint M2G_CreateSubSceneResponse = 1207969557; + public const uint G2SubScene_SentMessage = 939534098; + public const uint G2SubScene_AddressableIdRequest = 1073751830; + public const uint SubScene2G_AddressableIdResponse = 1207969558; + public const uint Chat2M_TestMessage = 2952800017; + } +} diff --git a/Entity/Generate/NetworkProtocol/OuterMessage.cs b/Entity/Generate/NetworkProtocol/OuterMessage.cs new file mode 100644 index 0000000..0b19540 --- /dev/null +++ b/Entity/Generate/NetworkProtocol/OuterMessage.cs @@ -0,0 +1,787 @@ +using ProtoBuf; + +using System.Collections.Generic; +using MongoDB.Bson.Serialization.Attributes; +using Fantasy; +using Fantasy.Network.Interface; +using Fantasy.Serialize; +// ReSharper disable InconsistentNaming +// ReSharper disable RedundantUsingDirective +// ReSharper disable RedundantOverriddenMember +// ReSharper disable PartialTypeWithSinglePart +// ReSharper disable UnusedAutoPropertyAccessor.Global +// ReSharper disable MemberCanBePrivate.Global +// ReSharper disable CheckNamespace +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 + +namespace Fantasy +{ + [ProtoContract] + public partial class C2G_TestMessage : AMessage, IMessage, IProto + { + public static C2G_TestMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.C2G_TestMessage; } + [ProtoMember(1)] + public string Tag { get; set; } + } + [ProtoContract] + public partial class C2G_TestRequest : AMessage, IRequest, IProto + { + public static C2G_TestRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public G2C_TestResponse ResponseType { get; set; } + public uint OpCode() { return OuterOpcode.C2G_TestRequest; } + [ProtoMember(1)] + public string Tag { get; set; } + } + [ProtoContract] + public partial class G2C_TestResponse : AMessage, IResponse, IProto + { + public static G2C_TestResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.G2C_TestResponse; } + [ProtoMember(1)] + public string Tag { get; set; } + [ProtoMember(2)] + public uint ErrorCode { get; set; } + } + [ProtoContract] + public partial class C2G_TestRequestPushMessage : AMessage, IMessage, IProto + { + public static C2G_TestRequestPushMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.C2G_TestRequestPushMessage; } + } + /// + /// Gate服务器推送一个消息给客户端 + /// + [ProtoContract] + public partial class G2C_PushMessage : AMessage, IMessage, IProto + { + public static G2C_PushMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.G2C_PushMessage; } + [ProtoMember(1)] + public string Tag { get; set; } + } + [ProtoContract] + public partial class C2G_CreateAddressableRequest : AMessage, IRequest, IProto + { + public static C2G_CreateAddressableRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public G2C_CreateAddressableResponse ResponseType { get; set; } + public uint OpCode() { return OuterOpcode.C2G_CreateAddressableRequest; } + } + [ProtoContract] + public partial class G2C_CreateAddressableResponse : AMessage, IResponse, IProto + { + public static G2C_CreateAddressableResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.G2C_CreateAddressableResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } + [ProtoContract] + public partial class C2M_TestMessage : AMessage, IAddressableRouteMessage, IProto + { + public static C2M_TestMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.C2M_TestMessage; } + [ProtoMember(1)] + public string Tag { get; set; } + } + [ProtoContract] + public partial class C2M_TestRequest : AMessage, IAddressableRouteRequest, IProto + { + public static C2M_TestRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public M2C_TestResponse ResponseType { get; set; } + public uint OpCode() { return OuterOpcode.C2M_TestRequest; } + [ProtoMember(1)] + public string Tag { get; set; } + } + [ProtoContract] + public partial class M2C_TestResponse : AMessage, IAddressableRouteResponse, IProto + { + public static M2C_TestResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.M2C_TestResponse; } + [ProtoMember(1)] + public string Tag { get; set; } + [ProtoMember(2)] + public uint ErrorCode { get; set; } + } + /// + /// 通知Gate服务器创建一个Chat的Route连接 + /// + [ProtoContract] + public partial class C2G_CreateChatRouteRequest : AMessage, IRequest, IProto + { + public static C2G_CreateChatRouteRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public G2C_CreateChatRouteResponse ResponseType { get; set; } + public uint OpCode() { return OuterOpcode.C2G_CreateChatRouteRequest; } + } + [ProtoContract] + public partial class G2C_CreateChatRouteResponse : AMessage, IResponse, IProto + { + public static G2C_CreateChatRouteResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.G2C_CreateChatRouteResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } + /// + /// 发送一个Route消息给Chat + /// + [ProtoContract] + public partial class C2Chat_TestMessage : AMessage, ICustomRouteMessage, IProto + { + public static C2Chat_TestMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.C2Chat_TestMessage; } + [ProtoIgnore] + public int RouteType => Fantasy.RouteType.ChatRoute; + [ProtoMember(1)] + public string Tag { get; set; } + } + /// + /// 发送一个RPCRoute消息给Chat + /// + [ProtoContract] + public partial class C2Chat_TestMessageRequest : AMessage, ICustomRouteRequest, IProto + { + public static C2Chat_TestMessageRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public Chat2C_TestMessageResponse ResponseType { get; set; } + public uint OpCode() { return OuterOpcode.C2Chat_TestMessageRequest; } + [ProtoIgnore] + public int RouteType => Fantasy.RouteType.ChatRoute; + [ProtoMember(1)] + public string Tag { get; set; } + } + [ProtoContract] + public partial class Chat2C_TestMessageResponse : AMessage, ICustomRouteResponse, IProto + { + public static Chat2C_TestMessageResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.Chat2C_TestMessageResponse; } + [ProtoMember(1)] + public string Tag { get; set; } + [ProtoMember(2)] + public uint ErrorCode { get; set; } + } + /// + /// 发送一个RPC消息给Map,让Map里的Entity转移到另外一个Map上 + /// + [ProtoContract] + public partial class C2M_MoveToMapRequest : AMessage, IAddressableRouteRequest, IProto + { + public static C2M_MoveToMapRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public M2C_MoveToMapResponse ResponseType { get; set; } + public uint OpCode() { return OuterOpcode.C2M_MoveToMapRequest; } + } + [ProtoContract] + public partial class M2C_MoveToMapResponse : AMessage, IAddressableRouteResponse, IProto + { + public static M2C_MoveToMapResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.M2C_MoveToMapResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } + /// + /// 发送一个消息给Gate,让Gate发送一个Addressable消息给MAP + /// + [ProtoContract] + public partial class C2G_SendAddressableToMap : AMessage, IMessage, IProto + { + public static C2G_SendAddressableToMap Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.C2G_SendAddressableToMap; } + [ProtoMember(1)] + public string Tag { get; set; } + } + /// + /// 发送一个消息给Chat,让Chat服务器主动推送一个RouteMessage消息给客户端 + /// + [ProtoContract] + public partial class C2Chat_TestRequestPushMessage : AMessage, ICustomRouteMessage, IProto + { + public static C2Chat_TestRequestPushMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.C2Chat_TestRequestPushMessage; } + [ProtoIgnore] + public int RouteType => Fantasy.RouteType.ChatRoute; + } + /// + /// Chat服务器主动推送一个消息给客户端 + /// + [ProtoContract] + public partial class Chat2C_PushMessage : AMessage, ICustomRouteMessage, IProto + { + public static Chat2C_PushMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.Chat2C_PushMessage; } + [ProtoIgnore] + public int RouteType => Fantasy.RouteType.ChatRoute; + [ProtoMember(1)] + public string Tag { get; set; } + } + /// + /// 客户端发送给Gate服务器通知map服务器创建一个SubScene + /// + [ProtoContract] + public partial class C2G_CreateSubSceneRequest : AMessage, IRequest, IProto + { + public static C2G_CreateSubSceneRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public G2C_CreateSubSceneResponse ResponseType { get; set; } + public uint OpCode() { return OuterOpcode.C2G_CreateSubSceneRequest; } + } + [ProtoContract] + public partial class G2C_CreateSubSceneResponse : AMessage, IResponse, IProto + { + public static G2C_CreateSubSceneResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.G2C_CreateSubSceneResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } + /// + /// 客户端通知Gate服务器给SubScene发送一个消息 + /// + [ProtoContract] + public partial class C2G_SendToSubSceneMessage : AMessage, IMessage, IProto + { + public static C2G_SendToSubSceneMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.C2G_SendToSubSceneMessage; } + } + /// + /// 客户端通知Gate服务器创建一个SubScene的Address消息 + /// + [ProtoContract] + public partial class C2G_CreateSubSceneAddressableRequest : AMessage, IRequest, IProto + { + public static C2G_CreateSubSceneAddressableRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public G2C_CreateSubSceneAddressableResponse ResponseType { get; set; } + public uint OpCode() { return OuterOpcode.C2G_CreateSubSceneAddressableRequest; } + } + [ProtoContract] + public partial class G2C_CreateSubSceneAddressableResponse : AMessage, IResponse, IProto + { + public static G2C_CreateSubSceneAddressableResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.G2C_CreateSubSceneAddressableResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } + /// + /// 客户端向SubScene发送一个测试消息 + /// + [ProtoContract] + public partial class C2SubScene_TestMessage : AMessage, IAddressableRouteMessage, IProto + { + public static C2SubScene_TestMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.C2SubScene_TestMessage; } + [ProtoMember(1)] + public string Tag { get; set; } + } + /// + /// 客户端向SubScene发送一个销毁测试消息 + /// + [ProtoContract] + public partial class C2SubScene_TestDisposeMessage : AMessage, IAddressableRouteMessage, IProto + { + public static C2SubScene_TestDisposeMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.C2SubScene_TestDisposeMessage; } + } + /// + /// 客户端向服务器发送连接消息(Roaming) + /// + [ProtoContract] + public partial class C2G_ConnectRoamingRequest : AMessage, IRequest, IProto + { + public static C2G_ConnectRoamingRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public G2C_ConnectRoamingResponse ResponseType { get; set; } + public uint OpCode() { return OuterOpcode.C2G_ConnectRoamingRequest; } + } + [ProtoContract] + public partial class G2C_ConnectRoamingResponse : AMessage, IResponse, IProto + { + public static G2C_ConnectRoamingResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.G2C_ConnectRoamingResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } + /// + /// 测试一个Chat漫游普通消息 + /// + [ProtoContract] + public partial class C2Chat_TestRoamingMessage : AMessage, IRoamingMessage, IProto + { + public static C2Chat_TestRoamingMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.C2Chat_TestRoamingMessage; } + [ProtoIgnore] + public int RouteType => Fantasy.RoamingType.ChatRoamingType; + [ProtoMember(1)] + public string Tag { get; set; } + } + /// + /// 测试一个Map漫游普通消息 + /// + [ProtoContract] + public partial class C2Map_TestRoamingMessage : AMessage, IRoamingMessage, IProto + { + public static C2Map_TestRoamingMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.C2Map_TestRoamingMessage; } + [ProtoIgnore] + public int RouteType => Fantasy.RoamingType.MapRoamingType; + [ProtoMember(1)] + public string Tag { get; set; } + } + /// + /// 测试一个Chat漫游RPC消息 + /// + [ProtoContract] + public partial class C2Chat_TestRPCRoamingRequest : AMessage, IRoamingRequest, IProto + { + public static C2Chat_TestRPCRoamingRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public Chat2C_TestRPCRoamingResponse ResponseType { get; set; } + public uint OpCode() { return OuterOpcode.C2Chat_TestRPCRoamingRequest; } + [ProtoIgnore] + public int RouteType => Fantasy.RoamingType.ChatRoamingType; + [ProtoMember(1)] + public string Tag { get; set; } + } + [ProtoContract] + public partial class Chat2C_TestRPCRoamingResponse : AMessage, IRoamingResponse, IProto + { + public static Chat2C_TestRPCRoamingResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.Chat2C_TestRPCRoamingResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } + /// + /// 客户端发送一个漫游消息给Map通知Map主动推送一个消息给客户端 + /// + [ProtoContract] + public partial class C2Map_PushMessageToClient : AMessage, IRoamingMessage, IProto + { + public static C2Map_PushMessageToClient Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.C2Map_PushMessageToClient; } + [ProtoIgnore] + public int RouteType => Fantasy.RoamingType.MapRoamingType; + [ProtoMember(1)] + public string Tag { get; set; } + } + /// + /// 漫游端发送一个消息给客户端 + /// + [ProtoContract] + public partial class Map2C_PushMessageToClient : AMessage, IRoamingMessage, IProto + { + public static Map2C_PushMessageToClient Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.Map2C_PushMessageToClient; } + [ProtoIgnore] + public int RouteType => Fantasy.RoamingType.MapRoamingType; + [ProtoMember(1)] + public string Tag { get; set; } + } + /// + /// 测试传送漫游的触发协议 + /// + [ProtoContract] + public partial class C2Map_TestTransferRequest : AMessage, IRoamingRequest, IProto + { + public static C2Map_TestTransferRequest Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + [ProtoIgnore] + public Map2C_TestTransferResponse ResponseType { get; set; } + public uint OpCode() { return OuterOpcode.C2Map_TestTransferRequest; } + [ProtoIgnore] + public int RouteType => Fantasy.RoamingType.MapRoamingType; + } + [ProtoContract] + public partial class Map2C_TestTransferResponse : AMessage, IRoamingResponse, IProto + { + public static Map2C_TestTransferResponse Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + ErrorCode = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.Map2C_TestTransferResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } + /// + /// 测试一个Chat发送到Map之间漫游协议 + /// + [ProtoContract] + public partial class C2Chat_TestSendMapMessage : AMessage, IRoamingMessage, IProto + { + public static C2Chat_TestSendMapMessage Create(Scene scene) + { + return scene.MessagePoolComponent.Rent(); + } + public override void Dispose() + { + Tag = default; +#if FANTASY_NET || FANTASY_UNITY + GetScene().MessagePoolComponent.Return(this); +#endif + } + public uint OpCode() { return OuterOpcode.C2Chat_TestSendMapMessage; } + [ProtoIgnore] + public int RouteType => Fantasy.RoamingType.ChatRoamingType; + [ProtoMember(1)] + public string Tag { get; set; } + } +} diff --git a/Entity/Generate/NetworkProtocol/OuterOpcode.cs b/Entity/Generate/NetworkProtocol/OuterOpcode.cs new file mode 100644 index 0000000..c37210e --- /dev/null +++ b/Entity/Generate/NetworkProtocol/OuterOpcode.cs @@ -0,0 +1,44 @@ +namespace Fantasy +{ + public static partial class OuterOpcode + { + public const uint C2G_TestMessage = 134227729; + public const uint C2G_TestRequest = 268445457; + public const uint G2C_TestResponse = 402663185; + public const uint C2G_TestRequestPushMessage = 134227730; + public const uint G2C_PushMessage = 134227731; + public const uint C2G_CreateAddressableRequest = 268445458; + public const uint G2C_CreateAddressableResponse = 402663186; + public const uint C2M_TestMessage = 1342187281; + public const uint C2M_TestRequest = 1476405009; + public const uint M2C_TestResponse = 1610622737; + public const uint C2G_CreateChatRouteRequest = 268445459; + public const uint G2C_CreateChatRouteResponse = 402663187; + public const uint C2Chat_TestMessage = 2147493649; + public const uint C2Chat_TestMessageRequest = 2281711377; + public const uint Chat2C_TestMessageResponse = 2415929105; + public const uint C2M_MoveToMapRequest = 1476405010; + public const uint M2C_MoveToMapResponse = 1610622738; + public const uint C2G_SendAddressableToMap = 134227732; + public const uint C2Chat_TestRequestPushMessage = 2147493650; + public const uint Chat2C_PushMessage = 2147493651; + public const uint C2G_CreateSubSceneRequest = 268445460; + public const uint G2C_CreateSubSceneResponse = 402663188; + public const uint C2G_SendToSubSceneMessage = 134227733; + public const uint C2G_CreateSubSceneAddressableRequest = 268445461; + public const uint G2C_CreateSubSceneAddressableResponse = 402663189; + public const uint C2SubScene_TestMessage = 1342187282; + public const uint C2SubScene_TestDisposeMessage = 1342187283; + public const uint C2G_ConnectRoamingRequest = 268445462; + public const uint G2C_ConnectRoamingResponse = 402663190; + public const uint C2Chat_TestRoamingMessage = 2550146833; + public const uint C2Map_TestRoamingMessage = 2550146834; + public const uint C2Chat_TestRPCRoamingRequest = 2684364561; + public const uint Chat2C_TestRPCRoamingResponse = 2818582289; + public const uint C2Map_PushMessageToClient = 2550146835; + public const uint Map2C_PushMessageToClient = 2550146836; + public const uint C2Map_TestTransferRequest = 2684364562; + public const uint Map2C_TestTransferResponse = 2818582290; + public const uint C2Chat_TestSendMapMessage = 2550146837; + } +} diff --git a/Entity/Generate/NetworkProtocol/RoamingType.cs b/Entity/Generate/NetworkProtocol/RoamingType.cs new file mode 100644 index 0000000..96d932c --- /dev/null +++ b/Entity/Generate/NetworkProtocol/RoamingType.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +namespace Fantasy +{ + // Roaming协议定义(需要定义10000以上、因为10000以内的框架预留) + public static class RoamingType + { + public const int MapRoamingType = 10001; + public const int ChatRoamingType = 10002; + public static IEnumerable RoamingTypes + { + get + { + yield return 10001; + yield return 10002; + } + } + } +} diff --git a/Entity/Generate/NetworkProtocol/RouteType.cs b/Entity/Generate/NetworkProtocol/RouteType.cs new file mode 100644 index 0000000..cdd0df0 --- /dev/null +++ b/Entity/Generate/NetworkProtocol/RouteType.cs @@ -0,0 +1,9 @@ +namespace Fantasy +{ + // Route协议定义(需要定义1000以上、因为1000以内的框架预留) + public static class RouteType + { + public const int GateRoute = 1001; // Gate + public const int ChatRoute = 1002; // Chat + } +} diff --git a/Entity/Model/Addressable/Unit.cs b/Entity/Model/Addressable/Unit.cs new file mode 100644 index 0000000..189609d --- /dev/null +++ b/Entity/Model/Addressable/Unit.cs @@ -0,0 +1,8 @@ +using Fantasy.Entitas; + +namespace Fantasy; + +public sealed class Unit : Entity +{ + +} \ No newline at end of file diff --git a/Entity/Model/RouteMessage/ChatUnit.cs b/Entity/Model/RouteMessage/ChatUnit.cs new file mode 100644 index 0000000..4120d1f --- /dev/null +++ b/Entity/Model/RouteMessage/ChatUnit.cs @@ -0,0 +1,19 @@ +using Fantasy.Entitas; + +namespace Fantasy; + +public sealed class ChatUnit : Entity +{ + public long GateRouteId; + + public override void Dispose() + { + if (IsDisposed) + { + return; + } + + GateRouteId = 0; + base.Dispose(); + } +} \ No newline at end of file diff --git a/Entity/Model/SubScene/GateSubSceneFlagComponent.cs b/Entity/Model/SubScene/GateSubSceneFlagComponent.cs new file mode 100644 index 0000000..bd7fda7 --- /dev/null +++ b/Entity/Model/SubScene/GateSubSceneFlagComponent.cs @@ -0,0 +1,14 @@ +using Fantasy.Entitas; + +namespace Fantasy; + +public sealed class GateSubSceneFlagComponent : Entity +{ + public long SubSceneRouteId; + + public override void Dispose() + { + SubSceneRouteId = 0; + base.Dispose(); + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Benchmark/ConsoleLog.cs b/Fantasy/Fantasy.Benchmark/ConsoleLog.cs new file mode 100644 index 0000000..4fa540f --- /dev/null +++ b/Fantasy/Fantasy.Benchmark/ConsoleLog.cs @@ -0,0 +1,138 @@ + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy +{ + /// + /// 标准的控制台Log + /// + public sealed class ConsoleLog : ILog + { + + /// + /// 记录跟踪级别的日志消息。 + /// + /// 日志消息。 + public void Trace(string message) + { + System.Console.ForegroundColor = ConsoleColor.White; + System.Console.WriteLine(message); + } + + /// + /// 记录警告级别的日志消息。 + /// + /// 日志消息。 + public void Warning(string message) + { + System.Console.ForegroundColor = ConsoleColor.Yellow; + System.Console.WriteLine(message); + } + + /// + /// 记录信息级别的日志消息。 + /// + /// 日志消息。 + public void Info(string message) + { + System.Console.ForegroundColor = ConsoleColor.Gray; + System.Console.WriteLine(message); + } + + /// + /// 记录调试级别的日志消息。 + /// + /// 日志消息。 + public void Debug(string message) + { + System.Console.ForegroundColor = ConsoleColor.DarkGreen; + System.Console.WriteLine(message); + } + + /// + /// 记录错误级别的日志消息。 + /// + /// 日志消息。 + public void Error(string message) + { + System.Console.ForegroundColor = ConsoleColor.DarkRed; + System.Console.WriteLine(message); + } + + /// + /// 记录严重错误级别的日志消息。 + /// + /// 日志消息。 + public void Fatal(string message) + { + System.Console.ForegroundColor = ConsoleColor.Red; + System.Console.WriteLine(message); + } + + /// + /// 记录跟踪级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public void Trace(string message, params object[] args) + { + System.Console.ForegroundColor = ConsoleColor.White; + System.Console.WriteLine(message, args); + } + + /// + /// 记录警告级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public void Warning(string message, params object[] args) + { + System.Console.ForegroundColor = ConsoleColor.Yellow; + System.Console.WriteLine(message, args); + } + + /// + /// 记录信息级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public void Info(string message, params object[] args) + { + System.Console.ForegroundColor = ConsoleColor.Gray; + System.Console.WriteLine(message, args); + } + + /// + /// 记录调试级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public void Debug(string message, params object[] args) + { + System.Console.ForegroundColor = ConsoleColor.DarkGreen; + System.Console.WriteLine(message, args); + } + + /// + /// 记录错误级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public void Error(string message, params object[] args) + { + System.Console.ForegroundColor = ConsoleColor.DarkRed; + System.Console.WriteLine(message, args); + } + + /// + /// 记录严重错误级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public void Fatal(string message, params object[] args) + { + System.Console.ForegroundColor = ConsoleColor.Red; + System.Console.WriteLine(message, args); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Benchmark/Fantasy.Benchmark.csproj b/Fantasy/Fantasy.Benchmark/Fantasy.Benchmark.csproj new file mode 100644 index 0000000..d44402a --- /dev/null +++ b/Fantasy/Fantasy.Benchmark/Fantasy.Benchmark.csproj @@ -0,0 +1,33 @@ + + + + Exe + enable + enable + net8.0;net9.0 + default + + + + TRACE;FANTASY_CONSOLE + true + + + + TRACE;FANTASY_CONSOLE + true + + + + + + + + + + + + + + + diff --git a/Fantasy/Fantasy.Benchmark/NetworkBenchmark.cs b/Fantasy/Fantasy.Benchmark/NetworkBenchmark.cs new file mode 100644 index 0000000..18e3ea1 --- /dev/null +++ b/Fantasy/Fantasy.Benchmark/NetworkBenchmark.cs @@ -0,0 +1,45 @@ +using BenchmarkDotNet.Attributes; +using BenchmarkDotNet.Jobs; +using BenchmarkDotNet.Running; +using Fantasy.Async; +using Fantasy.InnerMessage; +using Fantasy.Network; +using Fantasy.Platform.Console; + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +namespace Fantasy.Benchmark; +[SimpleJob(RuntimeMoniker.Net80, baseline: true)] +public class NetworkBenchmark +{ + private static Scene _scene; + private static Session _session; + private readonly BenchmarkRequest _benchmarkRequest = new BenchmarkRequest(); + + public static async FTask Initialize() + { + // 注册日志实例到框架中 + Log.Register(new ConsoleLog()); + // 初始化框架 + await Entry.Initialize(); + // 执行StartUpdate方法 + Entry.StartUpdate(); + _scene = await Entry.CreateScene(); + // 创建远程连接 + _session = _scene.Connect("127.0.0.1:20000", NetworkProtocolType.WebSocket, + () => + { + Log.Debug("连接到目标服务器成功"); + var summary = BenchmarkRunner.Run(); + Console.WriteLine(summary); + }, + () => { Log.Debug("无法连接到目标服务器"); }, + () => { Log.Debug("与服务器断开连接"); }, false); + } + + [Benchmark] + public async FTask Call() + { + await _session.Call(_benchmarkRequest); + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Benchmark/Program.cs b/Fantasy/Fantasy.Benchmark/Program.cs new file mode 100644 index 0000000..30d8cf3 --- /dev/null +++ b/Fantasy/Fantasy.Benchmark/Program.cs @@ -0,0 +1,2 @@ +Fantasy.Benchmark.NetworkBenchmark.Initialize().Coroutine(); +Console.ReadKey(); \ No newline at end of file diff --git a/Fantasy/Fantasy.Benchmark/README.md b/Fantasy/Fantasy.Benchmark/README.md new file mode 100644 index 0000000..8315cc4 --- /dev/null +++ b/Fantasy/Fantasy.Benchmark/README.md @@ -0,0 +1,6 @@ +# Fantasy.Benchmark +使用 Fantasy.Benchmark 工具,我们能够快速评估框架网络的处理性能。目前,该工具提供的基准测试主要集中在 RPC(远程过程调用)消息 方面。这一项测试能够有效测量系统在处理远程调用时的响应时间、吞吐量和资源利用率,帮助开发者优化网络通信性能,确保在高负载情况下系统依然能够稳定运行 +## 操作步骤 +- 1.打开位于 Examples/Server/Server.sln 的解决方案文件。 +- 2.在解决方案中选择并启动 Main 项目。 +- 3.接着,启动 Fantasy.Benchmark 应用程序,并耐心等待其测试结果的生成。 diff --git a/Fantasy/Fantasy.Net/Fantasy.Net.sln b/Fantasy/Fantasy.Net/Fantasy.Net.sln new file mode 100644 index 0000000..1abdc06 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net.sln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Fantasy.Net", "Fantasy.Net\Fantasy.Net.csproj", "{636FBF87-A6D2-4A31-86FF-F4157F558C95}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {636FBF87-A6D2-4A31-86FF-F4157F558C95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {636FBF87-A6D2-4A31-86FF-F4157F558C95}.Debug|Any CPU.Build.0 = Debug|Any CPU + {636FBF87-A6D2-4A31-86FF-F4157F558C95}.Release|Any CPU.ActiveCfg = Release|Any CPU + {636FBF87-A6D2-4A31-86FF-F4157F558C95}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Fantasy-Net.targets b/Fantasy/Fantasy.Net/Fantasy.Net/Fantasy-Net.targets new file mode 100644 index 0000000..5426ed6 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Fantasy-Net.targets @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Fantasy.Net.csproj b/Fantasy/Fantasy.Net/Fantasy.Net/Fantasy.Net.csproj new file mode 100644 index 0000000..732718c --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Fantasy.Net.csproj @@ -0,0 +1,61 @@ + + + + Fantasy-Net + 2024.2.26 + Fantasy-Net + qq362946 + qq362946 + ../../nupkg + false + + Fantasy is a high-performance network development framework based on .NET, supporting mainstream protocols. It is designed for development teams or individuals needing a quick start, scalability, and a distributed, cross-platform solution at the commercial level. Fantasy aims to provide easy-to-use tools while ensuring high system performance and scalability. + Copyright 2026 qq362946 + LICENSE + README.md + https://www.code-fantasy.com/ + https://github.com/qq362946/Fantasy + git + Net, c#, Server, Game, GameServer, Fantasy , Network + icon.png + enable + enable + Fantasy-Net + net8.0;net9.0 + default + + + + TRACE;FANTASY_NET + true + true + bin\Debug\net8.0\Fantasy.Net.xml + + + + TRACE;FANTASY_NET + true + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/LICENSE b/Fantasy/Fantasy.Net/Fantasy.Net/LICENSE new file mode 100644 index 0000000..24a69b2 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/LICENSE @@ -0,0 +1,14 @@ +MIT License + +Copyright (c) 2023 qq362946 + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +However, the following entity is explicitly prohibited from using, copying, modifying, or distributing the Software or any of its portions: + +泰课在线(https://www.taikr.com/) +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/README.md b/Fantasy/Fantasy.Net/Fantasy.Net/README.md new file mode 100644 index 0000000..582e668 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/README.md @@ -0,0 +1,34 @@ +# Fantasy +#### 框架支持TCP\KCP\WebSocket\http(支持Unity发布成H5)三种网络协议,采用的Protobuf/MemoryPack/Bson做为消息的序列化方案。 +#### Fantasy是基于.NET的高性能网络开发框架,支持主流协议,前后端分离,适合需要快速上手、可扩展、分布式全平台商业级解决方案的开发团队或个人。它旨在提供易用工具,同时保证系统的高性能和扩展性。 +## 导航 +* [Fantasy介绍网站](https://www.code-fantasy.com/) +* [Fantasy的API文档](https://www.code-fantasy.com/doc/api/Fantasy.html) +* [入门视频观看地址](https://space.bilibili.com/382126312) +## 快速上手 +* 01.快速入门 + * [1.1.获得Fantasy](https://www.code-fantasy.com/top/download-fantasy/) + * [1.2.安装Fantasy](https://www.code-fantasy.com/top/creating-your-app/) + * [1.3.Fantasy的网络](https://www.code-fantasy.com/top/use-network/) + * [1.4.Fantasy的配置文件](https://www.code-fantasy.com/top/config-file/) + * [1.5.Fantasy的命令行参数](https://www.code-fantasy.com/top/command-line-parameter/) + * [1.6.Fantasy的导表工具](https://www.code-fantasy.com/top/guidance/) + * [1.7.如何升级到最新版](https://www.code-fantasy.com/top/upgrade/) +* 02.网络通信 + * [2.1.客户端服务器之间发送消息](https://www.code-fantasy.com/network/session/) + * [2.2.服务器之间发送消息](https://www.code-fantasy.com/network/networkmessagingomponent/) + * [2.3.定义通信协议](https://www.code-fantasy.com/network/network-protocols/) + * [2.4.Route通信协议](https://www.code-fantasy.com/network/network-route/) + * [2.5.Addressable通信协议](https://www.code-fantasy.com/network/network-addressable/) +* 03.系统组件 + * [3.1.ECS系统](https://www.code-fantasy.com/core/ecs/) + * [3.2.事件系统](https://www.code-fantasy.com/core/event/) + * [3.3.任务系统](https://www.code-fantasy.com/core/task/) + * [3.4.异步协程锁](https://www.code-fantasy.com/core/lock/) + * [3.5.数据库](https://www.code-fantasy.com/core/db/) +* [更新日志](https://www.code-fantasy.com/changelog/) +* [API文档](https://www.code-fantasy.com/doc/api/Fantasy.html) +* [常见问题](https://www.code-fantasy.com/question/) + +## 交流与讨论: +__讨论QQ群 : Fantasy服务器开发交流群 569888673 __ \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/AssemblyInfo.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/AssemblyInfo.cs new file mode 100644 index 0000000..3957539 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/AssemblyInfo.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using Fantasy.DataStructure.Collection; + +// ReSharper disable CollectionNeverQueried.Global +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +namespace Fantasy.Assembly +{ + /// + /// AssemblyInfo提供有关程序集和类型的信息 + /// + public sealed class AssemblyInfo + { + /// + /// 唯一标识 + /// + public readonly long AssemblyIdentity; + /// + /// 获取或设置与此程序集相关联的 实例。 + /// + public System.Reflection.Assembly Assembly { get; private set; } + /// + /// 程序集类型集合,获取一个列表,包含从程序集加载的所有类型。 + /// + public readonly List AssemblyTypeList = new List(); + /// + /// 程序集类型分组集合,获取一个分组列表,将接口类型映射到实现这些接口的类型。 + /// + public readonly OneToManyList AssemblyTypeGroupList = new OneToManyList(); + + /// + /// 初始化 类的新实例。 + /// + /// + public AssemblyInfo(long assemblyIdentity) + { + AssemblyIdentity = assemblyIdentity; + } + + /// + /// 从指定的程序集加载类型信息并进行分类。 + /// + /// 要加载信息的程序集。 + public void Load(System.Reflection.Assembly assembly) + { + Assembly = assembly; + var assemblyTypes = assembly.GetTypes().ToList(); + + foreach (var type in assemblyTypes) + { + if (type.IsAbstract || type.IsInterface) + { + continue; + } + + var interfaces = type.GetInterfaces(); + + foreach (var interfaceType in interfaces) + { + AssemblyTypeGroupList.Add(interfaceType, type); + } + } + + AssemblyTypeList.AddRange(assemblyTypes); + } + + /// + /// 重新加载程序集的类型信息。 + /// + /// + public void ReLoad(System.Reflection.Assembly assembly) + { + Unload(); + Load(assembly); + } + + /// + /// 卸载程序集的类型信息。 + /// + public void Unload() + { + AssemblyTypeList.Clear(); + AssemblyTypeGroupList.Clear(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/AssemblySystem.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/AssemblySystem.cs new file mode 100644 index 0000000..deb9da6 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/AssemblySystem.cs @@ -0,0 +1,285 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Security.Cryptography; +using System.Text; +using Fantasy.Async; +using Fantasy.Helper; +#pragma warning disable CS8604 // Possible null reference argument. +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS8603 +#pragma warning disable CS8618 +namespace Fantasy.Assembly +{ + /// + /// 管理程序集加载和卸载的帮助类。 + /// + public static class AssemblySystem + { +#if FANTASY_WEBGL + private static readonly List AssemblySystems = new List(); + private static readonly Dictionary AssemblyList = new Dictionary(); +#else + private static readonly ConcurrentQueue AssemblySystems = new ConcurrentQueue(); + private static readonly ConcurrentDictionary AssemblyList = new ConcurrentDictionary(); +#endif + /// + /// 初始化 AssemblySystem。(仅限内部) + /// + /// + internal static async FTask InnerInitialize(params System.Reflection.Assembly[] assemblies) + { + await LoadAssembly(typeof(AssemblySystem).Assembly); + foreach (var assembly in assemblies) + { + await LoadAssembly(assembly); + } + } + + /// + /// 加载指定的程序集,并触发相应的事件。 + /// + /// 要加载的程序集。 + /// 如果当前Domain中已经存在同名的Assembly,使用Domain中的程序集。 + public static async FTask LoadAssembly(System.Reflection.Assembly assembly, bool isCurrentDomain = true) + { + if (isCurrentDomain) + { + var currentDomainAssemblies = System.AppDomain.CurrentDomain.GetAssemblies(); + var currentAssembly = currentDomainAssemblies.FirstOrDefault(d => d.GetName().Name == assembly.GetName().Name); + if (currentAssembly != null) + { + assembly = currentAssembly; + } + } + + var assemblyIdentity = AssemblyIdentity(assembly); + + if (AssemblyList.TryGetValue(assemblyIdentity, out var assemblyInfo)) + { + assemblyInfo.ReLoad(assembly); + foreach (var assemblySystem in AssemblySystems) + { + await assemblySystem.ReLoad(assemblyIdentity); + } + } + else + { + assemblyInfo = new AssemblyInfo(assemblyIdentity); + assemblyInfo.Load(assembly); + AssemblyList.TryAdd(assemblyIdentity, assemblyInfo); + foreach (var assemblySystem in AssemblySystems) + { + await assemblySystem.Load(assemblyIdentity); + } + } + } + + /// + /// 卸载程序集 + /// + /// + public static async FTask UnLoadAssembly(System.Reflection.Assembly assembly) + { + var assemblyIdentity = AssemblyIdentity(assembly); + + if (!AssemblyList.Remove(assemblyIdentity, out var assemblyInfo)) + { + return; + } + + assemblyInfo.Unload(); + foreach (var assemblySystem in AssemblySystems) + { + await assemblySystem.OnUnLoad(assemblyIdentity); + } + } + + /// + /// 将AssemblySystem接口的object注册到程序集管理中心 + /// + /// + public static async FTask Register(object obj) + { + if (obj is not IAssembly assemblySystem) + { + return; + } +#if FANTASY_WEBGL + AssemblySystems.Add(assemblySystem); +#else + AssemblySystems.Enqueue(assemblySystem); +#endif + foreach (var (assemblyIdentity, _) in AssemblyList) + { + await assemblySystem.Load(assemblyIdentity); + } + } + + /// + /// 程序集管理中心卸载注册的Load、ReLoad、UnLoad的接口 + /// + /// + public static void UnRegister(object obj) + { + if (obj is not IAssembly assemblySystem) + { + return; + } +#if FANTASY_WEBGL + AssemblySystems.Remove(assemblySystem); +#else + var count = AssemblySystems.Count; + + for (var i = 0; i < count; i++) + { + if (!AssemblySystems.TryDequeue(out var removeAssemblySystem)) + { + continue; + } + + if (removeAssemblySystem == assemblySystem) + { + break; + } + + AssemblySystems.Enqueue(removeAssemblySystem); + } +#endif + } + + /// + /// 获取所有已加载程序集中的所有类型。 + /// + /// 所有已加载程序集中的类型。 + public static IEnumerable ForEach() + { + foreach (var (_, assemblyInfo) in AssemblyList) + { + foreach (var type in assemblyInfo.AssemblyTypeList) + { + yield return type; + } + } + } + + /// + /// 获取指定程序集中的所有类型。 + /// + /// 程序集唯一标识。 + /// 指定程序集中的类型。 + public static IEnumerable ForEach(long assemblyIdentity) + { + if (!AssemblyList.TryGetValue(assemblyIdentity, out var assemblyInfo)) + { + yield break; + } + + foreach (var type in assemblyInfo.AssemblyTypeList) + { + yield return type; + } + } + + /// + /// 获取所有已加载程序集中实现指定类型的所有类型。 + /// + /// 要查找的基类或接口类型。 + /// 所有已加载程序集中实现指定类型的类型。 + public static IEnumerable ForEach(Type findType) + { + foreach (var (_, assemblyInfo) in AssemblyList) + { + if (!assemblyInfo.AssemblyTypeGroupList.TryGetValue(findType, out var assemblyLoad)) + { + continue; + } + + foreach (var type in assemblyLoad) + { + yield return type; + } + } + } + + /// + /// 获取指定程序集中实现指定类型的所有类型。 + /// + /// 程序集唯一标识。 + /// 要查找的基类或接口类型。 + /// 指定程序集中实现指定类型的类型。 + public static IEnumerable ForEach(long assemblyIdentity, Type findType) + { + if (!AssemblyList.TryGetValue(assemblyIdentity, out var assemblyInfo)) + { + yield break; + } + + if (!assemblyInfo.AssemblyTypeGroupList.TryGetValue(findType, out var assemblyLoad)) + { + yield break; + } + + foreach (var type in assemblyLoad) + { + yield return type; + } + } + + /// + /// 获取指定程序集的实例。 + /// + /// 程序集名称。 + /// 指定程序集的实例,如果未加载则返回 null。 + public static System.Reflection.Assembly GetAssembly(long assemblyIdentity) + { + return !AssemblyList.TryGetValue(assemblyIdentity, out var assemblyInfo) ? null : assemblyInfo.Assembly; + } + + /// + /// 获取当前框架注册的Assembly + /// + /// + public static IEnumerable ForEachAssembly + { + get + { + foreach (var (_, assemblyInfo) in AssemblyList) + { + yield return assemblyInfo.Assembly; + } + } + } + + /// + /// 根据Assembly的强命名计算唯一标识。 + /// + /// + /// + private static long AssemblyIdentity(System.Reflection.Assembly assembly) + { + return HashCodeHelper.ComputeHash64(assembly.GetName().Name); + } + + /// + /// 释放资源,卸载所有加载的程序集。 + /// + public static void Dispose() + { + DisposeAsync().Coroutine(); + } + + private static async FTask DisposeAsync() + { + foreach (var (_, assemblyInfo) in AssemblyList.ToArray()) + { + await UnLoadAssembly(assemblyInfo.Assembly); + } + + AssemblyList.Clear(); + AssemblySystems.Clear(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/IAssembly.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/IAssembly.cs new file mode 100644 index 0000000..185e037 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Assembly/IAssembly.cs @@ -0,0 +1,27 @@ +using System; +using Fantasy.Async; + +namespace Fantasy.Assembly +{ + /// + /// 实现这个接口、会再程序集首次加载、卸载、重载的时候调用 + /// + public interface IAssembly : IDisposable + { + /// + /// 程序集加载时调用 + /// + /// 程序集标识 + public FTask Load(long assemblyIdentity); + /// + /// 程序集重新加载的时候调用 + /// + /// 程序集标识 + public FTask ReLoad(long assemblyIdentity); + /// + /// 卸载的时候调用 + /// + /// 程序集标识 + public FTask OnUnLoad(long assemblyIdentity); + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs new file mode 100644 index 0000000..8532547 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs @@ -0,0 +1,25 @@ +using Fantasy.Async; +using Fantasy.InnerMessage; +using Fantasy.Network.Interface; + +#if FANTASY_NET +namespace Fantasy.Network.Benchmark.Handler; + +/// +/// BenchmarkRequestHandler +/// +public sealed class BenchmarkRequestHandler : MessageRPC +{ + /// + /// Run方法 + /// + /// + /// + /// + /// + protected override async FTask Run(Session session, BenchmarkRequest request, BenchmarkResponse response, Action reply) + { + await FTask.CompletedTask; + } +} +#endif diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/DataBaseType.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/DataBaseType.cs new file mode 100644 index 0000000..2fb03ec --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/DataBaseType.cs @@ -0,0 +1,20 @@ +// ReSharper disable CheckNamespace +// ReSharper disable InconsistentNaming +#if FANTASY_NET +namespace Fantasy.DataBase; + +/// +/// 数据库类型 +/// +public enum DataBaseType +{ + /// + /// 默认 + /// + None = 0, + /// + /// MongoDB + /// + MongoDB = 1 +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/IDataBase.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/IDataBase.cs new file mode 100644 index 0000000..6a2fe8b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/IDataBase.cs @@ -0,0 +1,210 @@ +#if FANTASY_NET +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using Fantasy.Async; +using Fantasy.Entitas; +using MongoDB.Driver; +// ReSharper disable InconsistentNaming +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable. + +#pragma warning disable CS8625 + +namespace Fantasy.DataBase +{ + /// + /// 数据库设置助手 + /// + public static class DataBaseSetting + { + /// + /// 初始化自定义委托,当设置了这个委托后,就不会自动创建MongoClient,需要自己在委托里创建MongoClient。 + /// + public static Func? MongoDBCustomInitialize; + } + + /// + /// MongoDB自定义连接参数 + /// + public sealed class DataBaseCustomConfig + { + /// + /// 当前Scene + /// + public Scene Scene; + /// + /// 连接字符串 + /// + public string ConnectionString; + /// + /// 数据库名字 + /// + public string DBName; + } + + /// + /// 表示用于执行各种数据库操作的数据库接口。 + /// + public interface IDataBase : IDisposable + { + /// + /// 获得当前数据的类型 + /// + public DataBaseType GetDataBaseType { get;} + /// + /// 获得对应数据的操作实例 + /// + /// 如MongoDB就是IMongoDatabase + public object GetDataBaseInstance { get;} + /// + /// 初始化数据库连接。 + /// + IDataBase Initialize(Scene scene, string connectionString, string dbName); + /// + /// 在指定的集合中检索类型 的实体数量。 + /// + FTask Count(string collection = null) where T : Entity; + /// + /// 在指定的集合中检索满足给定筛选条件的类型 的实体数量。 + /// + FTask Count(Expression> filter, string collection = null) where T : Entity; + /// + /// 检查指定集合中是否存在类型 的实体。 + /// + FTask Exist(string collection = null) where T : Entity; + /// + /// 检查指定集合中是否存在满足给定筛选条件的类型 的实体。 + /// + FTask Exist(Expression> filter, string collection = null) where T : Entity; + /// + /// 从指定集合中检索指定 ID 的类型 的实体,不锁定。 + /// + FTask QueryNotLock(long id, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 从指定集合中检索指定 ID 的类型 的实体。 + /// + FTask Query(long id, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 按页查询满足给定筛选条件的类型 的实体数量和日期。 + /// + FTask<(int count, List dates)> QueryCountAndDatesByPage(Expression> filter, int pageIndex, int pageSize, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 按页查询满足给定筛选条件的类型 的实体数量和日期。 + /// + FTask<(int count, List dates)> QueryCountAndDatesByPage(Expression> filter, int pageIndex, int pageSize, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 分页查询指定集合中满足给定筛选条件的类型 的实体列表。 + /// + FTask> QueryByPage(Expression> filter, int pageIndex, int pageSize, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 分页查询指定集合中满足给定筛选条件的类型 的实体列表,仅返回指定列的数据。 + /// + FTask> QueryByPage(Expression> filter, int pageIndex, int pageSize, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 从指定集合中按页查询满足给定筛选条件的类型 的实体列表,按指定字段排序。 + /// + FTask> QueryByPageOrderBy(Expression> filter, int pageIndex, int pageSize, Expression> orderByExpression, bool isAsc = true, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 检索满足给定筛选条件的类型 的第一个实体,从指定集合中。 + /// + FTask First(Expression> filter, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 查询指定集合中满足给定 JSON 查询字符串的类型 的第一个实体,仅返回指定列的数据。 + /// + FTask First(string json, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 从指定集合中按页查询满足给定筛选条件的类型 的实体列表,按指定字段排序。 + /// + FTask> QueryOrderBy(Expression> filter, Expression> orderByExpression, bool isAsc = true, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 从指定集合中按页查询满足给定筛选条件的类型 的实体列表。 + /// + FTask> Query(Expression> filter, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 查询指定集合中满足给定筛选条件的类型 实体列表,仅返回指定字段的数据。 + /// + FTask> Query(Expression> filter, Expression>[] cols, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 查询指定 ID 的多个集合,将结果存储在给定的实体列表中。 + /// + FTask Query(long id, List collectionNames, List result, bool isDeserialize = false); + /// + /// 根据给定的 JSON 查询字符串查询指定集合中的类型 实体列表。 + /// + FTask> QueryJson(string json, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 根据给定的 JSON 查询字符串查询指定集合中的类型 实体列表,仅返回指定列的数据。 + /// + FTask> QueryJson(string json, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 根据给定的 JSON 查询字符串查询指定集合中的类型 实体列表,通过指定的任务 ID 进行标识。 + /// + FTask> QueryJson(long taskId, string json, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 查询指定集合中满足给定筛选条件的类型 实体列表,仅返回指定列的数据。 + /// + FTask> Query(Expression> filter, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity; + /// + /// 保存类型 实体到指定集合中,如果集合不存在将自动创建。 + /// + FTask Save(T entity, string collection = null) where T : Entity, new(); + /// + /// 保存一组实体到数据库中,根据实体列表的 ID 进行区分和存储。 + /// + FTask Save(long id, List entities); + /// + /// 通过事务会话将类型 实体保存到指定集合中,如果集合不存在将自动创建。 + /// + FTask Save(object transactionSession, T entity, string collection = null) where T : Entity; + /// + /// 向指定集合中插入一个类型 实体,如果集合不存在将自动创建。 + /// + FTask Insert(T entity, string collection = null) where T : Entity, new(); + /// + /// 批量插入一组类型 实体到指定集合中,如果集合不存在将自动创建。 + /// + FTask InsertBatch(IEnumerable list, string collection = null) where T : Entity, new(); + /// + /// 通过事务会话,批量插入一组类型 实体到指定集合中,如果集合不存在将自动创建。 + /// + FTask InsertBatch(object transactionSession, IEnumerable list, string collection = null) where T : Entity, new(); + /// + /// 通过事务会话,根据指定的 ID 从数据库中删除指定类型 实体。 + /// + FTask Remove(object transactionSession, long id, string collection = null) where T : Entity, new(); + /// + /// 根据指定的 ID 从数据库中删除指定类型 实体。 + /// + FTask Remove(long id, string collection = null) where T : Entity, new(); + /// + /// 通过事务会话,根据给定的筛选条件从数据库中删除指定类型 实体。 + /// + FTask Remove(long coroutineLockQueueKey, object transactionSession, Expression> filter, string collection = null) where T : Entity, new(); + /// + /// 根据给定的筛选条件从数据库中删除指定类型 实体。 + /// + FTask Remove(long coroutineLockQueueKey, Expression> filter, string collection = null) where T : Entity, new(); + /// + /// 根据给定的筛选条件计算指定集合中类型 实体某个属性的总和。 + /// + FTask Sum(Expression> filter, Expression> sumExpression, string collection = null) where T : Entity; + /// + /// 在指定的集合中创建索引,以提高类型 实体的查询性能。 + /// + FTask CreateIndex(string collection, params object[] keys) where T : Entity; + /// + /// 在默认集合中创建索引,以提高类型 实体的查询性能。 + /// + FTask CreateIndex(params object[] keys) where T : Entity; + /// + /// 创建指定类型 的数据库,用于存储实体。 + /// + FTask CreateDB() where T : Entity; + /// + /// 根据指定类型创建数据库,用于存储实体。 + /// + FTask CreateDB(Type type); + } +} + +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/MongoDataBase.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/MongoDataBase.cs new file mode 100644 index 0000000..49948f4 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/MongoDataBase.cs @@ -0,0 +1,1081 @@ +#if FANTASY_NET +using System.Linq.Expressions; +using Fantasy.Async; +using Fantasy.DataStructure.Collection; +using Fantasy.Entitas; +using Fantasy.Helper; +using Fantasy.Serialize; +using MongoDB.Bson; +using MongoDB.Driver; +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +namespace Fantasy.DataBase +{ + /// + /// 使用 MongoDB 数据库的实现。 + /// + public sealed class MongoDataBase : IDataBase + { + private const int DefaultTaskSize = 1024; + private Scene _scene; + private MongoClient _mongoClient; + private ISerialize _serializer; + private IMongoDatabase _mongoDatabase; + private CoroutineLock _dataBaseLock; + private readonly HashSet _collections = new HashSet(); + /// + /// 获得当前数据的类型 + /// + public DataBaseType GetDataBaseType { get; } = DataBaseType.MongoDB; + /// + /// 获得对应数据的操作实例 + /// + public object GetDataBaseInstance => _mongoDatabase; + /// + /// 初始化 MongoDB 数据库连接并记录所有集合名。 + /// + /// 场景对象。 + /// 数据库连接字符串。 + /// 数据库名称。 + /// 初始化后的数据库实例。 + public IDataBase Initialize(Scene scene, string connectionString, string dbName) + { + _scene = scene; + _mongoClient = DataBaseSetting.MongoDBCustomInitialize != null + ? DataBaseSetting.MongoDBCustomInitialize(new DataBaseCustomConfig() + { + Scene = scene, ConnectionString = connectionString, DBName = dbName + }) + : new MongoClient(connectionString); + _mongoDatabase = _mongoClient.GetDatabase(dbName); + _dataBaseLock = scene.CoroutineLockComponent.Create(GetType().TypeHandle.Value.ToInt64()); + // 记录所有集合名 + _collections.UnionWith(_mongoDatabase.ListCollectionNames().ToList()); + _serializer = SerializerManager.GetSerializer(FantasySerializerType.Bson); + return this; + } + + /// + /// 销毁释放资源。 + /// + public void Dispose() + { + // 优先释放协程锁。 + _dataBaseLock.Dispose(); + // 清理资源。 + _scene = null; + _serializer = null; + _mongoDatabase = null; + _dataBaseLock = null; + _collections.Clear(); + _mongoClient.Dispose(); + } + + #region Other + + /// + /// 对满足条件的文档中的某个数值字段进行求和操作。 + /// + /// 实体类型。 + /// 用于筛选文档的表达式。 + /// 要对其进行求和的字段表达式。 + /// 集合名称,可选。如果未指定,将使用实体类型的名称。 + /// 满足条件的文档中指定字段的求和结果。 + public async FTask Sum(Expression> filter, Expression> sumExpression, string collection = null) where T : Entity + { + var member = (MemberExpression)((UnaryExpression)sumExpression.Body).Operand; + var projection = new BsonDocument("_id", "null").Add("Result", new BsonDocument("$sum", $"${member.Member.Name}")); + var data = await GetCollection(collection).Aggregate().Match(filter).Group(projection).FirstOrDefaultAsync(); + return data == null ? 0 : Convert.ToInt64(data["Result"]); + } + + #endregion + + #region GetCollection + + /// + /// 获取指定集合中的 MongoDB 文档的 IMongoCollection 对象。 + /// + /// 实体类型。 + /// 集合名称,可选。如果未指定,将使用实体类型的名称。 + /// IMongoCollection 对象。 + private IMongoCollection GetCollection(string collection = null) + { + return _mongoDatabase.GetCollection(collection ?? typeof(T).Name); + } + + /// + /// 获取指定集合中的 MongoDB 文档的 IMongoCollection 对象,其中实体类型为 Entity。 + /// + /// 集合名称。 + /// IMongoCollection 对象。 + private IMongoCollection GetCollection(string name) + { + return _mongoDatabase.GetCollection(name); + } + + #endregion + + #region Count + + /// + /// 统计指定集合中满足条件的文档数量。 + /// + /// 实体类型。 + /// 集合名称,可选。如果未指定,将使用实体类型的名称。 + /// 满足条件的文档数量。 + public async FTask Count(string collection = null) where T : Entity + { + return await GetCollection(collection).CountDocumentsAsync(d => true); + } + + /// + /// 统计指定集合中满足条件的文档数量。 + /// + /// 实体类型。 + /// 用于筛选文档的表达式。 + /// 集合名称,可选。如果未指定,将使用实体类型的名称。 + /// 满足条件的文档数量。 + public async FTask Count(Expression> filter, string collection = null) where T : Entity + { + return await GetCollection(collection).CountDocumentsAsync(filter); + } + + #endregion + + #region Exist + + /// + /// 判断指定集合中是否存在文档。 + /// + /// 实体类型。 + /// 集合名称,可选。如果未指定,将使用实体类型的名称。 + /// 如果存在文档则返回 true,否则返回 false。 + public async FTask Exist(string collection = null) where T : Entity + { + return await Count(collection) > 0; + } + + /// + /// 判断指定集合中是否存在满足条件的文档。 + /// + /// 实体类型。 + /// 用于筛选文档的表达式。 + /// 集合名称,可选。如果未指定,将使用实体类型的名称。 + /// 如果存在满足条件的文档则返回 true,否则返回 false。 + public async FTask Exist(Expression> filter, string collection = null) where T : Entity + { + return await Count(filter, collection) > 0; + } + + #endregion + + #region Query + + /// + /// 在不加数据库锁定的情况下,查询指定 ID 的文档。 + /// + /// 文档实体类型。 + /// 要查询的文档 ID。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// 查询到的文档。 + public async FTask QueryNotLock(long id, bool isDeserialize = false, string collection = null) where T : Entity + { + var cursor = await GetCollection(collection).FindAsync(d => d.Id == id); + var v = await cursor.FirstOrDefaultAsync(); + + if (isDeserialize && v != null) + { + v.Deserialize(_scene); + } + + return v; + } + + /// + /// 查询指定 ID 的文档,并加数据库锁定以确保数据一致性。 + /// + /// 文档实体类型。 + /// 要查询的文档 ID。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// 查询到的文档。 + public async FTask Query(long id, bool isDeserialize = false, string collection = null) where T : Entity + { + using (await _dataBaseLock.Wait(id)) + { + var cursor = await GetCollection(collection).FindAsync(d => d.Id == id); + var v = await cursor.FirstOrDefaultAsync(); + + if (isDeserialize && v != null) + { + v.Deserialize(_scene); + } + + return v; + } + } + + /// + /// 通过分页查询并返回满足条件的文档数量和日期列表(不加锁)。 + /// + /// 文档实体类型。 + /// 查询过滤条件。 + /// 页码。 + /// 每页大小。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// 满足条件的文档数量和日期列表。 + public async FTask<(int count, List dates)> QueryCountAndDatesByPage(Expression> filter, int pageIndex, int pageSize, bool isDeserialize = false, string collection = null) where T : Entity + { + using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize)) + { + var count = await Count(filter); + var dates = await QueryByPage(filter, pageIndex, pageSize, isDeserialize, collection); + return ((int)count, dates); + } + } + + /// + /// 通过分页查询并返回满足条件的文档数量和日期列表(加锁)。 + /// + /// 文档实体类型。 + /// 查询过滤条件。 + /// 页码。 + /// 每页大小。 + /// 要查询的列名称数组。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// 满足条件的文档数量和日期列表。 + public async FTask<(int count, List dates)> QueryCountAndDatesByPage(Expression> filter, int pageIndex, int pageSize, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity + { + using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize)) + { + var count = await Count(filter); + var dates = await QueryByPage(filter, pageIndex, pageSize, cols, isDeserialize, collection); + return ((int)count, dates); + } + } + + /// + /// 通过分页查询并返回满足条件的文档列表(不加锁)。 + /// + /// 文档实体类型。 + /// 查询过滤条件。 + /// 页码。 + /// 每页大小。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// 满足条件的文档列表。 + public async FTask> QueryByPage(Expression> filter, int pageIndex, int pageSize, bool isDeserialize = false, string collection = null) where T : Entity + { + using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize)) + { + var list = await GetCollection(collection).Find(filter).Skip((pageIndex - 1) * pageSize) + .Limit(pageSize) + .ToListAsync(); + + if (!isDeserialize || list is not { Count: > 0 }) + { + return list; + } + + foreach (var entity in list) + { + entity.Deserialize(_scene); + } + + return list; + } + } + + /// + /// 通过分页查询并返回满足条件的文档列表(加锁)。 + /// + /// 文档实体类型。 + /// 查询过滤条件。 + /// 页码。 + /// 每页大小。 + /// 要查询的列名称数组。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// 满足条件的文档列表。 + public async FTask> QueryByPage(Expression> filter, int pageIndex, int pageSize, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity + { + using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize)) + { + var projection = Builders.Projection.Include(""); + + foreach (var col in cols) + { + projection = projection.Include(col); + } + + var list = await GetCollection(collection).Find(filter).Project(projection) + .Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync(); + + if (!isDeserialize || list is not { Count: > 0 }) + { + return list; + } + + foreach (var entity in list) + { + entity.Deserialize(_scene); + } + + return list; + } + } + + /// + /// 通过分页查询并返回满足条件的文档列表,并按指定表达式进行排序(加锁)。 + /// + /// 文档实体类型。 + /// 查询过滤条件。 + /// 页码。 + /// 每页大小。 + /// 排序表达式。 + /// 是否升序排序。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// 满足条件的文档列表。 + public async FTask> QueryByPageOrderBy(Expression> filter, int pageIndex, int pageSize, Expression> orderByExpression, bool isAsc = true, bool isDeserialize = false, string collection = null) where T : Entity + { + using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize)) + { + List list; + + if (isAsc) + { + list = await GetCollection(collection).Find(filter).SortBy(orderByExpression).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync(); + } + else + { + list = await GetCollection(collection).Find(filter).SortByDescending(orderByExpression).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync(); + } + + if (!isDeserialize || list is not { Count: > 0 }) + { + return list; + } + + foreach (var entity in list) + { + entity.Deserialize(_scene); + } + + return list; + } + } + + /// + /// 通过指定过滤条件查询并返回满足条件的第一个文档(加锁)。 + /// + /// 文档实体类型。 + /// 查询过滤条件。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// 满足条件的第一个文档,如果未找到则为 null。 + public async FTask First(Expression> filter, bool isDeserialize = false, string collection = null) where T : Entity + { + using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize)) + { + var cursor = await GetCollection(collection).FindAsync(filter); + var t = await cursor.FirstOrDefaultAsync(); + + if (isDeserialize && t != null) + { + t.Deserialize(_scene); + } + + return t; + } + } + + /// + /// 通过指定 JSON 格式查询并返回满足条件的第一个文档(加锁)。 + /// + /// 文档实体类型。 + /// JSON 查询条件。 + /// 要查询的列名称数组。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// 满足条件的第一个文档。 + public async FTask First(string json, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity + { + using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize)) + { + var projection = Builders.Projection.Include(""); + + foreach (var col in cols) + { + projection = projection.Include(col); + } + + var options = new FindOptions { Projection = projection }; + + FilterDefinition filterDefinition = new JsonFilterDefinition(json); + + var cursor = await GetCollection(collection).FindAsync(filterDefinition, options); + var t = await cursor.FirstOrDefaultAsync(); + + if (isDeserialize && t != null) + { + t.Deserialize(_scene); + } + + return t; + } + } + + /// + /// 通过指定过滤条件查询并返回满足条件的文档列表,并按指定表达式进行排序(加锁)。 + /// + /// 文档实体类型。 + /// 查询过滤条件。 + /// 排序表达式。 + /// 是否升序排序。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// 满足条件的文档列表。 + public async FTask> QueryOrderBy(Expression> filter, Expression> orderByExpression, bool isAsc = true, bool isDeserialize = false, string collection = null) where T : Entity + { + using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize)) + { + List list; + + if (isAsc) + { + list = await GetCollection(collection).Find(filter).SortBy(orderByExpression).ToListAsync(); + } + else + { + list = await GetCollection(collection).Find(filter).SortByDescending(orderByExpression).ToListAsync(); + } + + if (!isDeserialize || list is not { Count: > 0 }) + { + return list; + } + + foreach (var entity in list) + { + entity.Deserialize(_scene); + } + + return list; + } + } + + /// + /// 通过指定过滤条件查询并返回满足条件的文档列表(加锁)。 + /// + /// 文档实体类型。 + /// 查询过滤条件。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// 满足条件的文档列表。 + public async FTask> Query(Expression> filter, bool isDeserialize = false, string collection = null) where T : Entity + { + using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize)) + { + var cursor = await GetCollection(collection).FindAsync(filter); + var list = await cursor.ToListAsync(); + + if (!isDeserialize || list is not { Count: > 0 }) + { + return list; + } + + foreach (var entity in list) + { + entity.Deserialize(_scene); + } + + return list; + } + } + + /// + /// 根据指定 ID 加锁查询多个集合中的文档。 + /// + /// 文档 ID。 + /// 要查询的集合名称列表。 + /// 查询结果存储列表。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + public async FTask Query(long id, List? collectionNames, List result, bool isDeserialize = false) + { + using (await _dataBaseLock.Wait(id)) + { + if (collectionNames == null || collectionNames.Count == 0) + { + return; + } + + foreach (var collectionName in collectionNames) + { + var cursor = await GetCollection(collectionName).FindAsync(d => d.Id == id); + + var e = await cursor.FirstOrDefaultAsync(); + + if (e == null) + { + continue; + } + + if (isDeserialize) + { + e.Deserialize(_scene); + } + + result.Add(e); + } + } + } + + /// + /// 根据指定的 JSON 查询条件查询并返回满足条件的文档列表(加锁)。 + /// + /// 文档实体类型。 + /// JSON 查询条件。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// 满足条件的文档列表。 + public async FTask> QueryJson(string json, bool isDeserialize = false, string collection = null) where T : Entity + { + using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize)) + { + FilterDefinition filterDefinition = new JsonFilterDefinition(json); + var cursor = await GetCollection(collection).FindAsync(filterDefinition); + var list = await cursor.ToListAsync(); + + if (!isDeserialize || list is not { Count: > 0 }) + { + return list; + } + + foreach (var entity in list) + { + entity.Deserialize(_scene); + } + + return list; + } + } + + /// + /// 根据指定的 JSON 查询条件查询并返回满足条件的文档列表,并选择指定的列(加锁)。 + /// + /// 文档实体类型。 + /// JSON 查询条件。 + /// 要查询的列名称数组。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// 满足条件的文档列表。 + public async FTask> QueryJson(string json, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity + { + using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize)) + { + var projection = Builders.Projection.Include(""); + + foreach (var col in cols) + { + projection = projection.Include(col); + } + + var options = new FindOptions { Projection = projection }; + + FilterDefinition filterDefinition = new JsonFilterDefinition(json); + + var cursor = await GetCollection(collection).FindAsync(filterDefinition, options); + var list = await cursor.ToListAsync(); + + if (!isDeserialize || list is not { Count: > 0 }) + { + return list; + } + + foreach (var entity in list) + { + entity.Deserialize(_scene); + } + + return list; + } + } + + /// + /// 根据指定的 JSON 查询条件和任务 ID 查询并返回满足条件的文档列表(加锁)。 + /// + /// 文档实体类型。 + /// 任务 ID。 + /// JSON 查询条件。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// 满足条件的文档列表。 + public async FTask> QueryJson(long taskId, string json, bool isDeserialize = false, string collection = null) where T : Entity + { + using (await _dataBaseLock.Wait(taskId)) + { + FilterDefinition filterDefinition = new JsonFilterDefinition(json); + var cursor = await GetCollection(collection).FindAsync(filterDefinition); + var list = await cursor.ToListAsync(); + + if (!isDeserialize || list is not { Count: > 0 }) + { + return list; + } + + foreach (var entity in list) + { + entity.Deserialize(_scene); + } + + return list; + } + } + + /// + /// 根据指定过滤条件查询并返回满足条件的文档列表,选择指定的列(加锁)。 + /// + /// 文档实体类型。 + /// 查询过滤条件。 + /// 要查询的列名称数组。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// 满足条件的文档列表。 + public async FTask> Query(Expression> filter, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity + { + using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize)) + { + var projection = Builders.Projection.Include("_id"); + + foreach (var t in cols) + { + projection = projection.Include(t); + } + + var list = await GetCollection(collection).Find(filter).Project(projection).ToListAsync(); + + if (!isDeserialize || list is not { Count: > 0 }) + { + return list; + } + + foreach (var entity in list) + { + entity.Deserialize(_scene); + } + + return list; + } + } + + /// + /// 根据指定过滤条件查询并返回满足条件的文档列表,选择指定的列(加锁)。 + /// + /// 文档实体类型。 + /// 查询过滤条件。 + /// 要查询的列名称数组。 + /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。 + /// 集合名称。 + /// + public async FTask> Query(Expression> filter, Expression>[] cols, bool isDeserialize = false, string collection = null) where T : Entity + { + using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize)) + { + var projection = Builders.Projection.Include("_id"); + + foreach (var col in cols) + { + if (col.Body is not MemberExpression memberExpression) + { + throw new ArgumentException("Lambda expression must be a member access expression."); + } + + projection = projection.Include(memberExpression.Member.Name); + } + + var list = await GetCollection(collection).Find(filter).Project(projection).ToListAsync(); + + if (!isDeserialize || list is not { Count: > 0 }) + { + return list; + } + + foreach (var entity in list) + { + entity.Deserialize(_scene); + } + + return list; + } + } + + #endregion + + #region Save + + /// + /// 保存实体对象到数据库(加锁)。 + /// + /// 实体类型。 + /// 事务会话对象。 + /// 要保存的实体对象。 + /// 集合名称。 + public async FTask Save(object transactionSession, T? entity, string collection = null) where T : Entity + { + if (entity == null) + { + Log.Error($"save entity is null: {typeof(T).Name}"); + return; + } + + var clone = _serializer.Clone(entity); + + using (await _dataBaseLock.Wait(clone.Id)) + { + await GetCollection(collection).ReplaceOneAsync( + (IClientSessionHandle)transactionSession, d => d.Id == clone.Id, clone, + new ReplaceOptions { IsUpsert = true }); + } + } + + /// + /// 保存实体对象到数据库(加锁)。 + /// + /// 实体类型。 + /// 要保存的实体对象。 + /// 集合名称。 + public async FTask Save(T? entity, string collection = null) where T : Entity, new() + { + if (entity == null) + { + Log.Error($"save entity is null: {typeof(T).Name}"); + + return; + } + + var clone = _serializer.Clone(entity); + + using (await _dataBaseLock.Wait(clone.Id)) + { + await GetCollection(collection).ReplaceOneAsync(d => d.Id == clone.Id, clone, new ReplaceOptions { IsUpsert = true }); + } + } + + /// + /// 保存实体对象到数据库(加锁)。 + /// + /// 保存的条件表达式。 + /// 实体类型。 + /// 集合名称。 + /// + public async FTask Save(Expression> filter, T? entity, string collection = null) where T : Entity, new() + { + if (entity == null) + { + Log.Error($"save entity is null: {typeof(T).Name}"); + return; + } + + T clone = _serializer.Clone(entity); + + using (await _dataBaseLock.Wait(clone.Id)) + { + await GetCollection(collection).ReplaceOneAsync(filter, clone, new ReplaceOptions { IsUpsert = true }); + } + } + + /// + /// 保存多个实体对象到数据库(加锁)。 + /// + /// 文档 ID。 + /// 要保存的实体对象列表。 + public async FTask Save(long id, List? entities) + { + if (entities == null || entities.Count == 0) + { + Log.Error("save entity is null"); + return; + } + + using var listPool = ListPool.Create(); + + foreach (var entity in entities) + { + listPool.Add(_serializer.Clone(entity)); + } + + using (await _dataBaseLock.Wait(id)) + { + foreach (var clone in listPool) + { + try + { + await GetCollection(clone.GetType().Name).ReplaceOneAsync(d => d.Id == clone.Id, clone, new ReplaceOptions { IsUpsert = true }); + } + catch (Exception e) + { + Log.Error($"Save List Entity Error: {clone.GetType().Name} {clone}\n{e}"); + } + } + } + } + + #endregion + + #region Insert + + /// + /// 插入单个实体对象到数据库(加锁)。 + /// + /// 实体类型。 + /// 要插入的实体对象。 + /// 集合名称。 + public async FTask Insert(T? entity, string collection = null) where T : Entity, new() + { + if (entity == null) + { + Log.Error($"insert entity is null: {typeof(T).Name}"); + return; + } + + var clone = _serializer.Clone(entity); + + using (await _dataBaseLock.Wait(entity.Id)) + { + await GetCollection(collection).InsertOneAsync(clone); + } + } + + /// + /// 批量插入实体对象列表到数据库(加锁)。 + /// + /// 实体类型。 + /// 要插入的实体对象列表。 + /// 集合名称。 + public async FTask InsertBatch(IEnumerable list, string collection = null) where T : Entity, new() + { + using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize)) + { + await GetCollection(collection).InsertManyAsync(list); + } + } + + /// + /// 批量插入实体对象列表到数据库(加锁)。 + /// + /// 实体类型。 + /// 事务会话对象。 + /// 要插入的实体对象列表。 + /// 集合名称。 + public async FTask InsertBatch(object transactionSession, IEnumerable list, string collection = null) + where T : Entity, new() + { + using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize)) + { + await GetCollection(collection).InsertManyAsync((IClientSessionHandle)transactionSession, list); + } + } + + /// + /// 插入BsonDocument到数据库(加锁)。 + /// + /// + /// + /// + public async Task Insert(BsonDocument bsonDocument, long taskId) where T : Entity + { + using (await _dataBaseLock.Wait(taskId)) + { + await GetCollection(typeof(T).Name).InsertOneAsync(bsonDocument); + } + } + + #endregion + + #region Remove + + /// + /// 根据ID删除单个实体对象(加锁)。 + /// + /// 实体类型。 + /// 事务会话对象。 + /// 要删除的实体的ID。 + /// 集合名称。 + /// 删除的实体数量。 + public async FTask Remove(object transactionSession, long id, string collection = null) + where T : Entity, new() + { + using (await _dataBaseLock.Wait(id)) + { + var result = await GetCollection(collection) + .DeleteOneAsync((IClientSessionHandle)transactionSession, d => d.Id == id); + return result.DeletedCount; + } + } + + /// + /// 根据ID删除单个实体对象(加锁)。 + /// + /// 实体类型。 + /// 要删除的实体的ID。 + /// 集合名称。 + /// 删除的实体数量。 + public async FTask Remove(long id, string collection = null) where T : Entity, new() + { + using (await _dataBaseLock.Wait(id)) + { + var result = await GetCollection(collection).DeleteOneAsync(d => d.Id == id); + return result.DeletedCount; + } + } + + /// + /// 根据ID和筛选条件删除多个实体对象(加锁)。 + /// + /// 实体类型。 + /// 异步锁Id。 + /// 事务会话对象。 + /// 筛选条件。 + /// 集合名称。 + /// 删除的实体数量。 + public async FTask Remove(long coroutineLockQueueKey, object transactionSession, + Expression> filter, string collection = null) where T : Entity, new() + { + using (await _dataBaseLock.Wait(coroutineLockQueueKey)) + { + var result = await GetCollection(collection) + .DeleteManyAsync((IClientSessionHandle)transactionSession, filter); + return result.DeletedCount; + } + } + + /// + /// 根据ID和筛选条件删除多个实体对象(加锁)。 + /// + /// 实体类型。 + /// 异步锁Id。 + /// 筛选条件。 + /// 集合名称。 + /// 删除的实体数量。 + public async FTask Remove(long coroutineLockQueueKey, Expression> filter, + string collection = null) where T : Entity, new() + { + using (await _dataBaseLock.Wait(coroutineLockQueueKey)) + { + var result = await GetCollection(collection).DeleteManyAsync(filter); + return result.DeletedCount; + } + } + + #endregion + + #region Index + + /// + /// 创建数据库索引(加锁)。 + /// + /// + /// + /// + /// + /// 使用例子(可多个): + /// 1 : Builders.IndexKeys.Ascending(d=>d.Id) + /// 2 : Builders.IndexKeys.Descending(d=>d.Id).Ascending(d=>d.Name) + /// 3 : Builders.IndexKeys.Descending(d=>d.Id),Builders.IndexKeys.Descending(d=>d.Name) + /// + public async FTask CreateIndex(string collection, params object[]? keys) where T : Entity + { + if (keys == null || keys.Length <= 0) + { + return; + } + + var indexModels = new List>(); + + foreach (object key in keys) + { + IndexKeysDefinition indexKeysDefinition = (IndexKeysDefinition)key; + + indexModels.Add(new CreateIndexModel(indexKeysDefinition)); + } + + await GetCollection(collection).Indexes.CreateManyAsync(indexModels); + } + + /// + /// 创建数据库的索引(加锁)。 + /// + /// 实体类型。 + /// 索引键定义。 + public async FTask CreateIndex(params object[]? keys) where T : Entity + { + if (keys == null) + { + return; + } + + List> indexModels = new List>(); + + foreach (object key in keys) + { + IndexKeysDefinition indexKeysDefinition = (IndexKeysDefinition)key; + + indexModels.Add(new CreateIndexModel(indexKeysDefinition)); + } + + await GetCollection().Indexes.CreateManyAsync(indexModels); + } + + #endregion + + #region CreateDB + + /// + /// 创建数据库集合(如果不存在)。 + /// + /// 实体类型。 + public async FTask CreateDB() where T : Entity + { + // 已经存在数据库表 + string name = typeof(T).Name; + + if (_collections.Contains(name)) + { + return; + } + + await _mongoDatabase.CreateCollectionAsync(name); + + _collections.Add(name); + } + + /// + /// 创建数据库集合(如果不存在)。 + /// + /// 实体类型。 + public async FTask CreateDB(Type type) + { + string name = type.Name; + + if (_collections.Contains(name)) + { + return; + } + + await _mongoDatabase.CreateCollectionAsync(name); + + _collections.Add(name); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/World.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/World.cs new file mode 100644 index 0000000..c53351f --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataBase/World.cs @@ -0,0 +1,77 @@ +#pragma warning disable CS8603 // Possible null reference return. +#if FANTASY_NET +using Fantasy.Platform.Net; + +namespace Fantasy.DataBase +{ + /// + /// 表示一个游戏世界。 + /// + public sealed class World : IDisposable + { + /// + /// 获取游戏世界的唯一标识。 + /// + public byte Id { get; private init; } + /// + /// 获取游戏世界的数据库接口。 + /// + public IDataBase DataBase { get; private init; } + /// + /// 获取游戏世界的配置信息。 + /// + public WorldConfig Config => WorldConfigData.Instance.Get(Id); + + /// + /// 使用指定的配置信息创建一个游戏世界实例。 + /// + /// + /// + private World(Scene scene, byte worldConfigId) + { + Id = worldConfigId; + var worldConfig = Config; + var dbType = worldConfig.DbType.ToLower(); + + switch (dbType) + { + case "mongodb": + { + DataBase = new MongoDataBase(); + DataBase.Initialize(scene, worldConfig.DbConnection, worldConfig.DbName); + break; + } + default: + { + throw new Exception("No supported database"); + } + } + } + + /// + /// 创建一个指定唯一标识的游戏世界实例。 + /// + /// + /// 游戏世界的唯一标识。 + /// 游戏世界实例。 + internal static World Create(Scene scene, byte id) + { + if (!WorldConfigData.Instance.TryGet(id, out var worldConfigData)) + { + return null; + } + + return string.IsNullOrEmpty(worldConfigData.DbConnection) ? null : new World(scene, id); + } + + /// + /// 释放游戏世界资源。 + /// + public void Dispose() + { + DataBase.Dispose(); + } + } +} + +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/CircularBuffer.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/CircularBuffer.cs new file mode 100644 index 0000000..d80ec55 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/CircularBuffer.cs @@ -0,0 +1,346 @@ +using System; +using System.Collections.Generic; +using System.IO; +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +namespace Fantasy.DataStructure.Collection +{ + /// 环形缓存(自增式缓存,自动扩充、不会收缩缓存、所以不要用这个操作过大的IO流) + /// 1、环大小8192,溢出的会自动增加环的大小。 + /// 2、每个块都是一个环形缓存,当溢出的时候会自动添加到下一个环中。 + /// 3、当读取完成后用过的环会放在缓存中,不会销毁掉。 + /// + /// 自增式缓存类,继承自 Stream 和 IDisposable 接口。 + /// 环形缓存具有自动扩充的特性,但不会收缩,适用于操作不过大的 IO 流。 + /// + public sealed class CircularBuffer : Stream, IDisposable + { + private byte[] _lastBuffer; + /// + /// 环形缓存块的默认大小 + /// + public const int ChunkSize = 8192; + private readonly Queue _bufferCache = new Queue(); + private readonly Queue _bufferQueue = new Queue(); + /// + /// 获取或设置环形缓存的第一个索引位置 + /// + public int FirstIndex { get; set; } + /// + /// 获取或设置环形缓存的最后一个索引位置 + /// + public int LastIndex { get; set; } + /// + /// 获取环形缓存的总长度 + /// + public override long Length + { + get + { + if (_bufferQueue.Count == 0) + { + return 0; + } + + return (_bufferQueue.Count - 1) * ChunkSize + LastIndex - FirstIndex; + } + } + + /// + /// 获取环形缓存的第一个块 + /// + public byte[] First + { + get + { + if (_bufferQueue.Count == 0) + { + AddLast(); + } + + return _bufferQueue.Peek(); + } + } + + /// + /// 获取环形缓存的最后一个块 + /// + public byte[] Last + { + get + { + if (_bufferQueue.Count == 0) + { + AddLast(); + } + + return _lastBuffer; + } + } + /// + /// 向环形缓存中添加一个新的块 + /// + public void AddLast() + { + var buffer = _bufferCache.Count > 0 ? _bufferCache.Dequeue() : new byte[ChunkSize]; + _bufferQueue.Enqueue(buffer); + _lastBuffer = buffer; + } + /// + /// 从环形缓存中移除第一个块 + /// + public void RemoveFirst() + { + _bufferCache.Enqueue(_bufferQueue.Dequeue()); + } + + /// + /// 从流中读取指定数量的数据到缓存。 + /// + /// 源数据流。 + /// 要读取的字节数。 + public void Read(Stream stream, int count) + { + if (count > Length) + { + throw new Exception($"bufferList length < count, {Length} {count}"); + } + + var copyCount = 0; + while (copyCount < count) + { + var n = count - copyCount; + if (ChunkSize - FirstIndex > n) + { + stream.Write(First, FirstIndex, n); + FirstIndex += n; + copyCount += n; + } + else + { + stream.Write(First, FirstIndex, ChunkSize - FirstIndex); + copyCount += ChunkSize - FirstIndex; + FirstIndex = 0; + RemoveFirst(); + } + } + } + + /// + /// 从缓存中读取指定数量的数据到内存。 + /// + /// 目标内存。 + /// 要读取的字节数。 + public void Read(Memory memory, int count) + { + if (count > Length) + { + throw new Exception($"bufferList length < count, {Length} {count}"); + } + + var copyCount = 0; + while (copyCount < count) + { + var n = count - copyCount; + var asMemory = First.AsMemory(); + + if (ChunkSize - FirstIndex > n) + { + var slice = asMemory.Slice(FirstIndex, n); + slice.CopyTo(memory.Slice(copyCount, n)); + FirstIndex += n; + copyCount += n; + } + else + { + var length = ChunkSize - FirstIndex; + var slice = asMemory.Slice(FirstIndex, length); + slice.CopyTo(memory.Slice(copyCount, length)); + copyCount += ChunkSize - FirstIndex; + FirstIndex = 0; + RemoveFirst(); + } + } + } + + /// + /// 从自定义流中读取数据到指定的缓冲区。 + /// + /// 目标缓冲区,用于存储读取的数据。 + /// 目标缓冲区中的起始偏移量。 + /// 要读取的字节数。 + /// 实际读取的字节数。 + public override int Read(byte[] buffer, int offset, int count) + { + if (buffer.Length < offset + count) + { + throw new Exception($"buffer length < count, buffer length: {buffer.Length} {offset} {count}"); + } + + var length = Length; + if (length < count) + { + count = (int) length; + } + + var copyCount = 0; + + // 循环直到成功读取所需的字节数 + while (copyCount < count) + { + var copyLength = count - copyCount; + + if (ChunkSize - FirstIndex > copyLength) + { + // 将数据从当前块的缓冲区复制到目标缓冲区 + Array.Copy(First, FirstIndex, buffer, copyCount + offset, copyLength); + + FirstIndex += copyLength; + copyCount += copyLength; + continue; + } + + // 复制当前块中剩余的数据,并切换到下一个块 + Array.Copy(First, FirstIndex, buffer, copyCount + offset, ChunkSize - FirstIndex); + copyCount += ChunkSize - FirstIndex; + FirstIndex = 0; + + RemoveFirst(); + } + + return count; + } + + /// + /// 将数据从给定的字节数组写入流中。 + /// + /// 包含要写入的数据的字节数组。 + public void Write(byte[] buffer) + { + Write(buffer, 0, buffer.Length); + } + + /// + /// 将数据从给定的流写入流中。 + /// + /// 包含要写入的数据的流。 + public void Write(Stream stream) + { + var copyCount = 0; + var count = (int) (stream.Length - stream.Position); + + while (copyCount < count) + { + if (LastIndex == ChunkSize) + { + AddLast(); + LastIndex = 0; + } + + var n = count - copyCount; + + if (ChunkSize - LastIndex > n) + { + _ = stream.Read(Last, LastIndex, n); + LastIndex += count - copyCount; + copyCount += n; + } + else + { + _ = stream.Read(Last, LastIndex, ChunkSize - LastIndex); + copyCount += ChunkSize - LastIndex; + LastIndex = ChunkSize; + } + } + } + + /// + /// 将数据从给定的字节数组写入流中。 + /// + /// 包含要写入的数据的字节数组。 + /// 开始写入的缓冲区中的索引。 + /// 要写入的字节数。 + public override void Write(byte[] buffer, int offset, int count) + { + var copyCount = 0; + + while (copyCount < count) + { + if (ChunkSize == LastIndex) + { + AddLast(); + LastIndex = 0; + } + + var byteLength = count - copyCount; + + if (ChunkSize - LastIndex > byteLength) + { + Array.Copy(buffer, copyCount + offset, Last, LastIndex, byteLength); + LastIndex += byteLength; + copyCount += byteLength; + } + else + { + Array.Copy(buffer, copyCount + offset, Last, LastIndex, ChunkSize - LastIndex); + copyCount += ChunkSize - LastIndex; + LastIndex = ChunkSize; + } + } + } + + /// + /// 获取一个值,指示流是否支持读取操作。 + /// + public override bool CanRead { get; } = true; + /// + /// 获取一个值,指示流是否支持寻找操作。 + /// + public override bool CanSeek { get; } = false; + /// + /// 获取一个值,指示流是否支持写入操作。 + /// + public override bool CanWrite { get; } = true; + /// + /// 获取或设置流中的位置。 + /// + public override long Position { get; set; } + + /// + /// 刷新流(在此实现中引发未实现异常)。 + /// + public override void Flush() + { + throw new NotImplementedException(); + } + + /// + /// 在流中寻找特定位置(在此实现中引发未实现异常)。 + /// + public override long Seek(long offset, SeekOrigin origin) + { + throw new NotImplementedException(); + } + + /// + /// 设置流的长度(在此实现中引发未实现异常)。 + /// + public override void SetLength(long value) + { + throw new NotImplementedException(); + } + + /// + /// 释放 CustomStream 使用的所有资源。 + /// + public new void Dispose() + { + _bufferQueue.Clear(); + _lastBuffer = null; + FirstIndex = 0; + LastIndex = 0; + base.Dispose(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ConcurrentOneToManyListPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ConcurrentOneToManyListPool.cs new file mode 100644 index 0000000..e110a0b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ConcurrentOneToManyListPool.cs @@ -0,0 +1,197 @@ +#if !FANTASY_WEBGL +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using Fantasy.Pool; + +#pragma warning disable CS8603 // Possible null reference return. + +namespace Fantasy.DataStructure.Collection +{ + /// + /// 并发的一对多列表池,用于维护具有相同键的多个值的关联关系,实现了 接口。 + /// + /// 关键字的类型,不能为空。 + /// 值的类型。 + public class ConcurrentOneToManyListPool : ConcurrentOneToManyList, IDisposable, IPool where TKey : notnull + { + private bool _isPool; + private bool _isDispose; + + /// + /// 创建一个 的实例。 + /// + /// 创建的实例。 + public static ConcurrentOneToManyListPool Create() + { + var a = MultiThreadPool.Rent>(); + a._isDispose = false; + a._isPool = true; + return a; + } + + /// + /// 释放实例占用的资源。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + // 清空实例的数据 + Clear(); + // 将实例返回到池中以便重用 + MultiThreadPool.Return(this); + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } + + /// + /// 并发的一对多列表,用于维护具有相同键的多个值的关联关系。 + /// + /// 关键字的类型,不能为空。 + /// 值的类型。 + public class ConcurrentOneToManyList : ConcurrentDictionary> where TKey : notnull + { + private readonly Queue> _queue = new Queue>(); + private readonly int _recyclingLimit = 120; + + /// + /// 初始化 类的新实例。 + /// + public ConcurrentOneToManyList() + { + } + + /// + /// 设置最大缓存数量 + /// + /// + /// 1:防止数据量过大、所以超过recyclingLimit的数据还是走GC. + /// 2:设置成0不控制数量,全部缓存 + /// + public ConcurrentOneToManyList(int recyclingLimit) + { + _recyclingLimit = recyclingLimit; + } + + /// + /// 判断指定键的列表是否包含指定值。 + /// + /// 要搜索的键。 + /// 要搜索的值。 + /// 如果列表包含值,则为 true;否则为 false。 + public bool Contains(TKey key, TValue value) + { + TryGetValue(key, out var list); + + return list != null && list.Contains(value); + } + + /// + /// 向指定键的列表中添加一个值。 + /// + /// 要添加值的键。 + /// 要添加的值。 + public void Add(TKey key, TValue value) + { + if (!TryGetValue(key, out var list)) + { + list = Fetch(); + list.Add(value); + base[key] = list; + return; + } + + list.Add(value); + } + + /// + /// 获取指定键的列表中的第一个值。 + /// + /// 要获取第一个值的键。 + /// 指定键的列表中的第一个值,如果不存在则为默认值。 + public TValue First(TKey key) + { + return !TryGetValue(key, out var list) ? default : list.FirstOrDefault(); + } + + /// + /// 从指定键的列表中移除一个值。 + /// + /// 要移除值的键。 + /// 要移除的值。 + public void RemoveValue(TKey key, TValue value) + { + if (!TryGetValue(key, out var list)) return; + + list.Remove(value); + + if (list.Count == 0) RemoveKey(key); + } + + /// + /// 从字典中移除指定键以及其关联的列表。 + /// + /// 要移除的键。 + public void RemoveKey(TKey key) + { + if (!TryRemove(key, out var list)) return; + + Recycle(list); + } + + /// + /// 从队列中获取一个列表,如果队列为空则创建一个新的列表。 + /// + /// 获取的列表。 + private List Fetch() + { + return _queue.Count <= 0 ? new List() : _queue.Dequeue(); + } + + /// + /// 将一个列表回收到队列中。 + /// + /// 要回收的列表。 + private void Recycle(List list) + { + list.Clear(); + + if (_recyclingLimit != 0 && _queue.Count > _recyclingLimit) return; + + _queue.Enqueue(list); + } + + /// + /// 清空当前类的数据,包括从基类继承的数据以及自定义的数据队列。 + /// + protected new void Clear() + { + base.Clear(); + _queue.Clear(); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ConcurrentOneToManyQueuePool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ConcurrentOneToManyQueuePool.cs new file mode 100644 index 0000000..59c4367 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ConcurrentOneToManyQueuePool.cs @@ -0,0 +1,194 @@ +#if !FANTASY_WEBGL +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using Fantasy.Pool; + +#pragma warning disable CS8603 + +namespace Fantasy.DataStructure.Collection +{ + /// + /// 表示一个并发的一对多队列池,用于维护具有相同键的多个值的关联关系,实现了 接口。 + /// + /// 关键字的类型,不能为空。 + /// 值的类型。 + public class ConcurrentOneToManyQueuePool : ConcurrentOneToManyQueue, IDisposable, IPool where TKey : notnull + { + private bool _isPool; + private bool _isDispose; + + /// + /// 创建并返回一个 的实例。 + /// + /// 创建的实例。 + public static ConcurrentOneToManyQueuePool Create() + { + var a = MultiThreadPool.Rent>(); + a._isDispose = false; + a._isPool = true; + return a; + } + + /// + /// 释放当前实例所占用的资源,并将实例返回到对象池中,以便重用。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); + // 将实例返回到对象池中,以便重用 + MultiThreadPool.Return(this); + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } + + /// + /// 表示一个并发的一对多队列,用于维护具有相同键的多个值的关联关系。 + /// + /// 关键字的类型,不能为空。 + /// 值的类型。 + public class ConcurrentOneToManyQueue : ConcurrentDictionary> where TKey : notnull + { + private readonly Queue> _queue = new Queue>(); + private readonly int _recyclingLimit; + + /// + /// 设置最大缓存数量 + /// + /// + /// 1:防止数据量过大、所以超过recyclingLimit的数据还是走GC. + /// 2:设置成0不控制数量,全部缓存 + /// + public ConcurrentOneToManyQueue(int recyclingLimit = 0) + { + _recyclingLimit = recyclingLimit; + } + + /// + /// 判断指定键的队列是否包含指定值。 + /// + /// 要搜索的键。 + /// 要搜索的值。 + /// 如果队列包含值,则为 true;否则为 false。 + public bool Contains(TKey key, TValue value) + { + TryGetValue(key, out var list); + + return list != null && list.Contains(value); + } + + /// + /// 向指定键的队列中添加一个值。 + /// + /// 要添加值的键。 + /// 要添加的值。 + public void Enqueue(TKey key, TValue value) + { + if (!TryGetValue(key, out var list)) + { + list = Fetch(); + list.Enqueue(value); + TryAdd(key, list); + return; + } + + list.Enqueue(value); + } + + /// + /// 从指定键的队列中出队并返回一个值。 + /// + /// 要出队的键。 + /// 出队的值,如果队列为空则为默认值。 + public TValue Dequeue(TKey key) + { + if (!TryGetValue(key, out var list) || list.Count == 0) return default; + + var value = list.Dequeue(); + + if (list.Count == 0) RemoveKey(key); + + return value; + } + + /// + /// 尝试从指定键的队列中出队一个值。 + /// + /// 要出队的键。 + /// 出队的值,如果队列为空则为默认值。 + /// 如果成功出队,则为 true;否则为 false。 + public bool TryDequeue(TKey key, out TValue value) + { + value = Dequeue(key); + + return value != null; + } + + /// + /// 从字典中移除指定键以及其关联的队列。 + /// + /// 要移除的键。 + public void RemoveKey(TKey key) + { + if (!TryGetValue(key, out var list)) return; + + TryRemove(key, out _); + Recycle(list); + } + + /// + /// 从队列中获取一个新的队列,如果队列为空则创建一个新的队列。 + /// + /// 获取的队列。 + private Queue Fetch() + { + return _queue.Count <= 0 ? new Queue() : _queue.Dequeue(); + } + + /// + /// 将一个队列回收到队列池中。 + /// + /// 要回收的队列。 + private void Recycle(Queue list) + { + list.Clear(); + + if (_recyclingLimit != 0 && _queue.Count > _recyclingLimit) return; + + _queue.Enqueue(list); + } + + /// + /// 清空当前类的数据,包括从基类继承的键值对字典中的数据以及自定义的队列池。 + /// + protected new void Clear() + { + base.Clear(); + _queue.Clear(); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/HashSetPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/HashSetPool.cs new file mode 100644 index 0000000..bb64ae8 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/HashSetPool.cs @@ -0,0 +1,134 @@ +using System; +using System.Collections.Generic; +using Fantasy.Pool; + +namespace Fantasy.DataStructure.Collection +{ + /// + /// 可释放的哈希集合对象池。 + /// + /// 哈希集合中元素的类型。 + public sealed class HashSetPool : HashSet, IDisposable, IPool + { + private bool _isPool; + private bool _isDispose; + + /// + /// 释放实例所占用的资源,并将实例返回到对象池中,以便重用。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); +#if FANTASY_WEBGL + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 创建一个 哈希集合池的实例。 + /// + /// 创建的实例。 + public static HashSetPool Create() + { +#if FANTASY_WEBGL + var list = Pool>.Rent(); + list._isDispose = false; + list._isPool = true; + return list; +#else + var list = MultiThreadPool.Rent>(); + list._isDispose = false; + list._isPool = true; + return list; +#endif + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } + + /// + /// 基本哈希集合对象池,他自持有实际的哈希集合。 + /// + /// 哈希集合中元素的类型。 + public sealed class HashSetBasePool : IDisposable, IPool + { + private bool _isPool; + + /// + /// 存储实际的哈希集合 + /// + public HashSet Set = new HashSet(); + + /// + /// 创建一个 基本哈希集合对象池的实例。 + /// + /// 创建的实例。 + public static HashSetBasePool Create() + { +#if FANTASY_WEBGL + var hashSetBasePool = Pool>.Rent(); + hashSetBasePool._isPool = true; + return hashSetBasePool; +#else + var hashSetBasePool = MultiThreadPool.Rent>(); + hashSetBasePool._isPool = true; + return hashSetBasePool; +#endif + } + + /// + /// 释放实例所占用的资源,并将实例返回到对象池中,以便重用。 + /// + public void Dispose() + { + Set.Clear(); +#if FANTASY_WEBGL + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ListPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ListPool.cs new file mode 100644 index 0000000..de70fe2 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ListPool.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; +using Fantasy.Pool; + +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract + +namespace Fantasy.DataStructure.Collection +{ + /// + /// 可释放的列表(List)对象池。 + /// + /// 列表中元素的类型。 + public sealed class ListPool : List, IDisposable, IPool + { + private bool _isPool; + private bool _isDispose; + + /// + /// 释放实例所占用的资源,并将实例返回到对象池中,以便重用。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); +#if FANTASY_WEBGL + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 使用指定的元素创建一个 列表(List)对象池的实例。 + /// + /// 要添加到列表的元素。 + /// 创建的实例。 + public static ListPool Create(params T[] args) + { +#if FANTASY_WEBGL + var list = Pool>.Rent(); +#else + var list = MultiThreadPool.Rent>(); +#endif + list._isDispose = false; + list._isPool = true; + + if (args != null) + { + list.AddRange(args); + } + + return list; + } + + /// + /// 使用指定的列表创建一个 列表(List)对象池的实例。 + /// + /// 要添加到列表的元素列表。 + /// 创建的实例。 + public static ListPool Create(List args) + { +#if FANTASY_WEBGL + var list = Pool>.Rent(); +#else + var list = MultiThreadPool.Rent>(); +#endif + list._isDispose = false; + list._isPool = true; + + if (args != null) + { + list.AddRange(args); + } + + return list; + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/OneToManyHashSetPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/OneToManyHashSetPool.cs new file mode 100644 index 0000000..8a5766c --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/OneToManyHashSetPool.cs @@ -0,0 +1,208 @@ +using System; +using System.Collections.Generic; +using Fantasy.Pool; + +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. + +namespace Fantasy.DataStructure.Collection +{ + /// + /// 一对多哈希集合(OneToManyHashSet)对象池。 + /// + /// 键的类型。 + /// 值的类型。 + public class OneToManyHashSetPool : OneToManyHashSet, IDisposable, IPool where TKey : notnull + { + private bool _isPool; + private bool _isDispose; + + /// + /// 创建一个 一对多哈希集合(OneToManyHashSet)对象池的实例。 + /// + /// 创建的实例。 + public static OneToManyHashSetPool Create() + { +#if FANTASY_WEBGL + var a = Pool>.Rent(); +#else + var a = MultiThreadPool.Rent>(); +#endif + a._isDispose = false; + a._isPool = true; + return a; + } + + /// + /// 释放实例所占用的资源,并将实例返回到对象池中,以便重用。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); +#if FANTASY_WEBGL + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } + + /// + /// 一对多哈希集合(OneToManyHashSet),用于创建和管理键对应多个值的集合。 + /// + /// 键的类型。 + /// 值的类型。 + public class OneToManyHashSet : Dictionary> where TKey : notnull + { + /// 用于回收和重用的空闲值集合队列。 + private readonly Queue> _queue = new Queue>(); + /// 设置最大回收限制,用于控制值集合的最大数量。 + private readonly int _recyclingLimit = 120; + /// 一个空的、不包含任何元素的哈希集合,用于在查找失败时返回。 + private static HashSet _empty = new HashSet(); + + /// + /// 初始化 类的新实例。 + /// + public OneToManyHashSet() { } + + /// + /// 设置最大缓存数量 + /// + /// + /// 1:防止数据量过大、所以超过recyclingLimit的数据还是走GC. + /// 2:设置成0不控制数量,全部缓存 + /// + public OneToManyHashSet(int recyclingLimit) + { + _recyclingLimit = recyclingLimit; + } + + /// + /// 判断指定的键值对是否存在于集合中。 + /// + /// 键。 + /// 值。 + /// 如果存在则为 true,否则为 false。 + public bool Contains(TKey key, TValue value) + { + TryGetValue(key, out var list); + + return list != null && list.Contains(value); + } + + /// + /// 添加指定的键值对到集合中。 + /// + /// 键。 + /// 值。 + public void Add(TKey key, TValue value) + { + if (!TryGetValue(key, out var list)) + { + list = Fetch(); + list.Add(value); + Add(key, list); + + return; + } + + list.Add(value); + } + + /// + /// 从集合中移除指定键对应的值。 + /// + /// 键。 + /// 要移除的值。 + public void RemoveValue(TKey key, TValue value) + { + if (!TryGetValue(key, out var list)) return; + + list.Remove(value); + + if (list.Count == 0) RemoveKey(key); + } + + /// + /// 从集合中移除指定键及其对应的值集合。 + /// + /// 键。 + public void RemoveKey(TKey key) + { + if (!TryGetValue(key, out var list)) return; + + Remove(key); + Recycle(list); + } + + /// + /// 获取指定键对应的值集合,如果不存在则返回一个空的哈希集合。 + /// + /// 键。 + /// 对应的值集合或空的哈希集合。 + public HashSet GetValue(TKey key) + { + if (TryGetValue(key, out HashSet value)) + { + return value; + } + + return _empty; + } + + /// + /// 从队列中获取一个空闲的值集合,或者创建一个新的。 + /// + /// 值集合。 + private HashSet Fetch() + { + return _queue.Count <= 0 ? new HashSet() : _queue.Dequeue(); + } + + /// + /// 回收值集合到队列中,以便重复利用。 + /// + /// 要回收的值集合。 + private void Recycle(HashSet list) + { + list.Clear(); + + if (_recyclingLimit != 0 && _queue.Count > _recyclingLimit) return; + + _queue.Enqueue(list); + } + + /// + /// 清空集合中的数据并和队列。 + /// + protected new void Clear() + { + base.Clear(); + _queue.Clear(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/OneToManyListPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/OneToManyListPool.cs new file mode 100644 index 0000000..80568ef --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/OneToManyListPool.cs @@ -0,0 +1,232 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Fantasy.Pool; + +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS8603 // Possible null reference return. + +namespace Fantasy.DataStructure.Collection +{ + /// + /// 可回收的、一对多关系的列表池。 + /// + /// 键的类型。 + /// 值的类型。 + public class OneToManyListPool : OneToManyList, IDisposable, IPool where TKey : notnull + { + private bool _isPool; + private bool _isDispose; + + /// + /// 创建一个 一对多关系的列表池的实例。 + /// + /// 创建的实例。 + public static OneToManyListPool Create() + { +#if FANTASY_WEBGL || FANTASY_EXPORTER + var list = Pool>.Rent(); +#else + var list = MultiThreadPool.Rent>(); +#endif + list._isDispose = false; + list._isPool = true; + return list; + } + + /// + /// 释放当前对象所占用的资源,并将对象回收到对象池中。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); +#if FANTASY_WEBGL || FANTASY_EXPORTER + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } + + /// + /// 一对多关系的列表字典。 + /// + /// 键的类型。 + /// 值的类型。 + public class OneToManyList : Dictionary> where TKey : notnull + { + private readonly int _recyclingLimit = 120; + private static readonly List Empty = new List(); + private readonly Queue> _queue = new Queue>(); + + /// + /// 初始化一个新的 实例。 + /// + public OneToManyList() { } + + /// + /// 设置最大缓存数量 + /// + /// + /// 1:防止数据量过大、所以超过recyclingLimit的数据还是走GC. + /// 2:设置成0不控制数量,全部缓存 + /// + public OneToManyList(int recyclingLimit) + { + _recyclingLimit = recyclingLimit; + } + + /// + /// 判断给定的键和值是否存在于列表中。 + /// + /// 要搜索的键。 + /// 要搜索的值。 + /// 如果存在则为 ,否则为 + public bool Contains(TKey key, TValue value) + { + TryGetValue(key, out var list); + + return list != null && list.Contains(value); + } + + /// + /// 向列表中添加指定键和值。 + /// + /// 要添加值的键。 + /// 要添加的值。 + public void Add(TKey key, TValue value) + { + if (!TryGetValue(key, out var list)) + { + list = Fetch(); + list.Add(value); + Add(key, list); + + return; + } + + list.Add(value); + } + + /// + /// 获取指定键对应的列表中的第一个值。 + /// + /// 要获取值的键。 + /// 键对应的列表中的第一个值。 + public TValue First(TKey key) + { + return !TryGetValue(key, out var list) ? default : list.FirstOrDefault(); + } + + /// + /// 从列表中移除指定键和值。 + /// + /// 要移除值的键。 + /// 要移除的值。 + /// 如果成功移除则为 ,否则为 + public bool RemoveValue(TKey key, TValue value) + { + if (!TryGetValue(key, out var list)) + { + return true; + } + + var isRemove = list.Remove(value); + + if (list.Count == 0) + { + isRemove = RemoveByKey(key); + } + + return isRemove; + } + + /// + /// 从列表中移除指定键及其关联的所有值。 + /// + /// 要移除的键。 + /// 如果成功移除则为 ,否则为 + public bool RemoveByKey(TKey key) + { + if (!TryGetValue(key, out var list)) + { + return false; + } + + Remove(key); + Recycle(list); + return true; + } + + /// + /// 获取指定键关联的所有值的列表。 + /// + /// 要获取值的键。 + /// 键关联的所有值的列表。 + public List GetValues(TKey key) + { + if (TryGetValue(key, out List list)) + { + return list; + } + + return Empty; + } + + /// + /// 清除字典中的所有键值对,并回收相关的值集合。 + /// + public new void Clear() + { + foreach (var keyValuePair in this) Recycle(keyValuePair.Value); + + base.Clear(); + } + + /// + /// 从空闲值集合队列中获取一个值集合,如果队列为空则创建一个新的值集合。 + /// + /// 从队列中获取的值集合。 + private List Fetch() + { + return _queue.Count <= 0 ? new List() : _queue.Dequeue(); + } + + /// + /// 回收一个不再使用的值集合到空闲值集合队列中。 + /// + /// 要回收的值集合。 + private void Recycle(List list) + { + list.Clear(); + + if (_recyclingLimit != 0 && _queue.Count > _recyclingLimit) return; + + _queue.Enqueue(list); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/OneToManyQueuePool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/OneToManyQueuePool.cs new file mode 100644 index 0000000..222576e --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/OneToManyQueuePool.cs @@ -0,0 +1,204 @@ +using System; +using System.Collections.Generic; +using Fantasy.Pool; + +#pragma warning disable CS8603 + +namespace Fantasy.DataStructure.Collection +{ + /// + /// 支持一对多关系的队列池,用于存储具有相同键的值的队列集合。 + /// + /// 键的类型。 + /// 值的类型。 + public class OneToManyQueuePool : OneToManyQueue, IDisposable, IPool where TKey : notnull + { + private bool _isPool; + private bool _isDispose; + + /// + /// 创建一个 一对多关系的队列池的实例。 + /// + /// 创建的实例。 + public static OneToManyQueuePool Create() + { +#if FANTASY_WEBGL + var a = Pool>.Rent(); +#else + var a = MultiThreadPool.Rent>(); +#endif + a._isDispose = false; + a._isPool = true; + return a; + } + + /// + /// 释放当前实例所占用的资源,并将实例回收到对象池中。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); +#if FANTASY_WEBGL + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } + + /// + /// 支持一对多关系的队列,用于存储具有相同键的值的队列集合。 + /// + /// 键的类型。 + /// 值的类型。 + public class OneToManyQueue : Dictionary> where TKey : notnull + { + private readonly Queue> _queue = new Queue>(); + private readonly int _recyclingLimit; + + /// + /// 创建一个 一对多关系的队列的实例。设置最大缓存数量 + /// + /// + /// 1:防止数据量过大、所以超过recyclingLimit的数据还是走GC. + /// 2:设置成0不控制数量,全部缓存 + /// + public OneToManyQueue(int recyclingLimit = 0) + { + _recyclingLimit = recyclingLimit; + } + + /// + /// 判断指定键的值队列是否包含指定的值。 + /// + /// 要查找的键。 + /// 要查找的值。 + /// 如果存在,则为 true;否则为 false + public bool Contains(TKey key, TValue value) + { + TryGetValue(key, out var list); + + return list != null && list.Contains(value); + } + + /// + /// 将指定的值添加到指定键的值队列中。 + /// + /// 要添加值的键。 + /// 要添加的值。 + public void Enqueue(TKey key, TValue value) + { + if (!TryGetValue(key, out var list)) + { + list = Fetch(); + list.Enqueue(value); + Add(key, list); + return; + } + + list.Enqueue(value); + } + + /// + /// 从指定键的值队列中出队一个值。 + /// + /// 要出队的键。 + /// 出队的值。 + public TValue Dequeue(TKey key) + { + if (!TryGetValue(key, out var list) || list.Count == 0) + { + return default; + } + + var value = list.Dequeue(); + + if (list.Count == 0) + { + RemoveKey(key); + } + + return value; + } + + /// + /// 尝试从指定键的值队列中出队一个值。 + /// + /// 要出队的键。 + /// 出队的值。 + /// 如果成功出队,则为 true;否则为 false + public bool TryDequeue(TKey key, out TValue value) + { + value = Dequeue(key); + + return value != null; + } + + /// + /// 从字典中移除指定键及其对应的值队列。 + /// + /// 要移除的键。 + public void RemoveKey(TKey key) + { + if (!TryGetValue(key, out var list)) return; + + Remove(key); + Recycle(list); + } + + /// + /// 从队列池中获取一个值队列。如果队列池为空,则创建一个新的值队列。 + /// + /// 获取的值队列。 + private Queue Fetch() + { + return _queue.Count <= 0 ? new Queue() : _queue.Dequeue(); + } + + /// + /// 回收一个不再使用的值队列到队列池中,以便重用。 + /// + /// 要回收的值队列。 + private void Recycle(Queue list) + { + list.Clear(); + + if (_recyclingLimit != 0 && _queue.Count > _recyclingLimit) return; + + _queue.Enqueue(list); + } + + /// + /// 清空当前实例的数据,同时回收所有值队列。 + /// + protected new void Clear() + { + base.Clear(); + _queue.Clear(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ReuseList.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ReuseList.cs new file mode 100644 index 0000000..b4395e8 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/ReuseList.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using Fantasy.Pool; + +namespace Fantasy.DataStructure.Collection +{ + /// + /// 可重用的列表,继承自 类。该类支持通过对象池重用列表实例,以减少对象分配和释放的开销。 + /// + /// 列表中元素的类型。 + public sealed class ReuseList : List, IDisposable, IPool + { + private bool _isPool; + private bool _isDispose; + + /// + /// 创建一个 可重用的列表的实例。 + /// + /// 创建的实例。 + public static ReuseList Create() + { +#if FANTASY_WEBGL + var list = Pool>.Rent(); +#else + var list = MultiThreadPool.Rent>(); +#endif + list._isDispose = false; + list._isPool = true; + return list; + } + + /// + /// 释放该实例所占用的资源,并将实例返回到对象池中,以便重用。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); +#if FANTASY_WEBGL + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/SortedConcurrentOneToManyListPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/SortedConcurrentOneToManyListPool.cs new file mode 100644 index 0000000..464ab58 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/SortedConcurrentOneToManyListPool.cs @@ -0,0 +1,226 @@ +#if !FANTASY_WEBGL +using System; +using System.Collections.Generic; +using System.Linq; +using Fantasy.Pool; + +#pragma warning disable CS8603 + +namespace Fantasy.DataStructure.Collection +{ + /// + /// 基于排序字典和并发集合实现的一对多映射列表的对象池包装类,继承自 类, + /// 同时实现了 接口,以支持对象的重用和释放。 + /// + /// 键的类型。 + /// 值的类型。 + public class SortedConcurrentOneToManyListPool : SortedConcurrentOneToManyList, IDisposable, IPool where TKey : notnull + { + private bool _isPool; + private bool _isDispose; + + /// + /// 创建一个新的 实例,使用默认的参数设置。 + /// + /// 新创建的 实例。 + public static SortedConcurrentOneToManyListPool Create() + { + var a = MultiThreadPool.Rent>(); + a._isDispose = false; + a._isPool = true; + return a; + } + + /// + /// 释放当前对象池实例,将其返回到对象池以供重用。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); + MultiThreadPool.Return(this); + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } + + /// + /// 基于排序字典和并发集合实现的一多对映射列表类,继承自 类, + /// 用于在多个值与一个键关联的情况下进行管理和存储。该类支持并发操作,适用于多线程环境。 + /// + /// 键的类型。 + /// 值的类型。 + public class SortedConcurrentOneToManyList : SortedDictionary> where TKey : notnull + { + /// 用于同步操作的锁对象,它确保在多线程环境下对数据的安全访问。 + private readonly object _lockObject = new object(); + /// 用于存储缓存的队列。 + private readonly Queue> _queue = new Queue>(); + /// 控制缓存回收的限制。当缓存的数量超过此限制时,旧的缓存将会被回收。 + private readonly int _recyclingLimit; + + /// + /// 初始化一个新的 类的实例,使用默认的参数设置。 + /// + public SortedConcurrentOneToManyList() + { + } + + /// + /// 初始化一个新的 类的实例,指定最大缓存数量。 + /// + /// + /// 1:防止数据量过大、所以超过recyclingLimit的数据还是走GC. + /// 2:设置成0不控制数量,全部缓存 + /// + public SortedConcurrentOneToManyList(int recyclingLimit = 0) + { + _recyclingLimit = recyclingLimit; + } + + /// + /// 检查指定的键和值是否存在于映射列表中。 + /// + /// 要检查的键。 + /// 要检查的值。 + /// 如果存在,则为 true;否则为 false。 + public bool Contains(TKey key, TValue value) + { + lock (_lockObject) + { + TryGetValue(key, out var list); + + return list != null && list.Contains(value); + } + } + + /// + /// 将指定的值添加到与指定键关联的列表中。 + /// + /// 要关联值的键。 + /// 要添加到列表的值。 + public void Add(TKey key, TValue value) + { + lock (_lockObject) + { + if (!TryGetValue(key, out var list)) + { + list = Fetch(); + list.Add(value); + base[key] = list; + return; + } + + list.Add(value); + } + } + + /// + /// 获取与指定键关联的列表中的第一个值。 + /// 如果列表不存在或为空,则返回默认值。 + /// + /// 要获取第一个值的键。 + /// 第一个值,或默认值。 + public TValue First(TKey key) + { + lock (_lockObject) + { + return !TryGetValue(key, out var list) ? default : list.FirstOrDefault(); + } + } + + /// + /// 从与指定键关联的列表中移除指定的值。 + /// 如果列表不存在或值不存在于列表中,则不执行任何操作。 + /// + /// 要移除值的键。 + /// 要移除的值。 + public void RemoveValue(TKey key, TValue value) + { + lock (_lockObject) + { + if (!TryGetValue(key, out var list)) return; + + list.Remove(value); + + if (list.Count == 0) RemoveKey(key); + } + } + + /// + /// 从映射列表中移除指定的键及其关联的列表。 + /// 如果键不存在于映射列表中,则不执行任何操作。 + /// + /// 要移除的键。 + public void RemoveKey(TKey key) + { + lock (_lockObject) + { + if (!TryGetValue(key, out var list)) return; + + Remove(key); + + Recycle(list); + } + } + + /// + /// 从缓存中获取一个可重用的列表。如果缓存中不存在列表,则创建一个新的列表并返回。 + /// + /// 可重用的列表。 + private List Fetch() + { + lock (_lockObject) + { + return _queue.Count <= 0 ? new List() : _queue.Dequeue(); + } + } + + /// + /// 将不再使用的列表回收到缓存中,以便重复利用。如果缓存数量超过限制,则丢弃列表而不进行回收。 + /// + /// 要回收的列表。 + private void Recycle(List list) + { + lock (_lockObject) + { + list.Clear(); + + if (_recyclingLimit != 0 && _queue.Count > _recyclingLimit) return; + + _queue.Enqueue(list); + } + } + + /// + /// 清空映射列表以及队列。 + /// + protected new void Clear() + { + base.Clear(); + _queue.Clear(); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/SortedOneToManyHashSetPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/SortedOneToManyHashSetPool.cs new file mode 100644 index 0000000..8158db5 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/SortedOneToManyHashSetPool.cs @@ -0,0 +1,192 @@ +using System; +using System.Collections.Generic; +using Fantasy.Pool; + +namespace Fantasy.DataStructure.Collection +{ + /// + /// 基于排序字典实现的一对多关系的映射哈希集合的对象池包装类,将唯一键映射到多个值的哈希集合。 + /// 同时实现了 接口,以支持对象的重用和释放。 + /// + /// 字典中键的类型。 + /// 哈希集合中值的类型。 + public class SortedOneToManyHashSetPool : SortedOneToManyHashSet, IDisposable, IPool where TKey : notnull + { + private bool _isPool; + private bool _isDispose; + + /// + /// 创建一个 实例。 + /// + /// 新创建的实例。 + public static SortedOneToManyHashSetPool Create() + { +#if FANTASY_WEBGL + var a = Pool>.Rent(); +#else + var a = MultiThreadPool.Rent>(); +#endif + a._isDispose = false; + a._isPool = true; + return a; + } + + /// + /// 释放当前对象池实例,将其返回到对象池以供重用。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); +#if FANTASY_WEBGL + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } + + /// + /// 基于排序字典实现的一对多关系的映射哈希集合类,将唯一键映射到多个值的哈希集合。 + /// 用于在多个值与一个键关联的情况下进行管理和存储。 + /// + /// 字典中键的类型。 + /// 集合中值的类型。 + public class SortedOneToManyHashSet : SortedDictionary> where TKey : notnull + { + private readonly Queue> _queue = new Queue>(); + private readonly int _recyclingLimit = 120; + + /// + /// 创建一个新的 实例。 + /// + public SortedOneToManyHashSet() { } + + /// + /// 创建一个新的 实例,设置最大缓存数量 + /// + /// + /// 1:防止数据量过大、所以超过recyclingLimit的数据还是走GC. + /// 2:设置成0不控制数量,全部缓存 + /// + public SortedOneToManyHashSet(int recyclingLimit) + { + _recyclingLimit = recyclingLimit; + } + + /// + /// 判断哈希集合中是否包含指定的键值对。 + /// + /// 要查找的键。 + /// 要查找的值。 + /// 如果键值对存在,则为 true;否则为 false。 + public bool Contains(TKey key, TValue value) + { + TryGetValue(key, out var list); + + return list != null && list.Contains(value); + } + + /// + /// 将指定值添加到给定键关联的哈希集合中。 + /// + /// 要添加值的键。 + /// 要添加的值。 + public void Add(TKey key, TValue value) + { + if (!TryGetValue(key, out var list)) + { + list = Fetch(); + list.Add(value); + Add(key, list); + + return; + } + + list.Add(value); + } + + /// + /// 从指定键关联的哈希集合中移除特定值。 + /// 如果哈希集合不存在或值不存在于集合中,则不执行任何操作。 + /// + /// 要移除值的键。 + /// 要移除的值。 + public void RemoveValue(TKey key, TValue value) + { + if (!TryGetValue(key, out var list)) return; + + list.Remove(value); + + if (list.Count == 0) RemoveKey(key); + } + + /// + /// 从字典中移除指定键以及关联的哈希集合,并将集合进行回收。 + /// 如果键不存在于映射列表中,则不执行任何操作。 + /// + /// 要移除的键。 + public void RemoveKey(TKey key) + { + if (!TryGetValue(key, out var list)) return; + + Remove(key); + + Recycle(list); + } + + /// + /// 获取一个空的或回收的哈希集合。 + /// + /// 获取的哈希集合实例。 + private HashSet Fetch() + { + return _queue.Count <= 0 ? new HashSet() : _queue.Dequeue(); + } + + /// + /// 回收一个哈希集合,将其清空并放入回收队列中。 + /// + /// 要回收的哈希集合。 + private void Recycle(HashSet list) + { + list.Clear(); + + if (_recyclingLimit != 0 && _queue.Count > _recyclingLimit) return; + + _queue.Enqueue(list); + } + + /// + /// 重写 Clear 方法,清空字典并清空回收队列。 + /// + protected new void Clear() + { + base.Clear(); + _queue.Clear(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/SortedOneToManyListPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/SortedOneToManyListPool.cs new file mode 100644 index 0000000..f0bae12 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Collection/SortedOneToManyListPool.cs @@ -0,0 +1,217 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Fantasy.Pool; + +#pragma warning disable CS8603 + +namespace Fantasy.DataStructure.Collection +{ + /// + /// 基于排序字典实现的一对多映射列表的对象池包装类,继承自 类, + /// 同时实现了 接口,以支持对象的重用和释放。 + /// + /// 字典中键的类型。 + /// 列表中值的类型。 + public class SortedOneToManyListPool : SortedOneToManyList, IDisposable, IPool where TKey : notnull + { + private bool _isPool; + private bool _isDispose; + + /// + /// 创建一个 实例。 + /// + /// 新创建的实例。 + public static SortedOneToManyListPool Create() + { +#if FANTASY_WEBGL + var a = Pool>.Rent(); +#else + var a = MultiThreadPool.Rent>(); +#endif + a._isDispose = false; + a._isPool = true; + return a; + } + + /// + /// 释放当前对象池实例,将其返回到对象池以供重用。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); +#if FANTASY_WEBGL + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } + + /// + /// 基于排序字典实现的一对多关系的映射列表类,将唯一键映射到包含多个值的列表。 + /// 用于在多个值与一个键关联的情况下进行管理和存储。 + /// + /// 字典中键的类型。 + /// 列表中值的类型。 + public class SortedOneToManyList : SortedDictionary> where TKey : notnull + { + private readonly Queue> _queue = new Queue>(); + private readonly int _recyclingLimit; + + /// + /// 创建一个新的 实例。 + /// + public SortedOneToManyList() + { + } + + /// + /// 创建一个新的 实例,设置最大缓存数量 + /// + /// + /// 1:防止数据量过大、所以超过recyclingLimit的数据还是走GC. + /// 2:设置成0不控制数量,全部缓存 + /// + public SortedOneToManyList(int recyclingLimit = 0) + { + _recyclingLimit = recyclingLimit; + } + + /// + /// 判断列表中是否包含指定的键值对。 + /// + /// 要查找的键。 + /// 要查找的值。 + /// 如果键值对存在,则为 true;否则为 false。 + public bool Contains(TKey key, TValue value) + { + TryGetValue(key, out var list); + + return list != null && list.Contains(value); + } + + /// + /// 将指定值添加到给定键关联的列表中。 + /// + /// 要添加值的键。 + /// 要添加的值。 + public void Add(TKey key, TValue value) + { + if (!TryGetValue(key, out var list)) + { + list = Fetch(); + list.Add(value); + base[key] = list; + return; + } + + list.Add(value); + } + + /// + /// 获取指定键关联的列表中的第一个值。 + /// + /// 要查找值的键。 + /// 指定键关联的列表中的第一个值,如果列表为空则返回默认值。 + public TValue First(TKey key) + { + return !TryGetValue(key, out var list) ? default : list.FirstOrDefault(); + } + + /// + /// 从指定键关联的列表中移除特定值。 + /// + /// 要移除值的键。 + /// 要移除的值。 + + public void RemoveValue(TKey key, TValue value) + { + if (!TryGetValue(key, out var list)) + { + return; + } + + list.Remove(value); + + if (list.Count == 0) + { + RemoveKey(key); + } + } + + /// + /// 从字典中移除指定键以及关联的列表,并将列表进行回收。 + /// + /// 要移除的键。 + + public void RemoveKey(TKey key) + { + if (!TryGetValue(key, out var list)) + { + return; + } + + Remove(key); + Recycle(list); + } + + /// + /// 获取一个空的或回收的列表。 + /// + /// 获取的列表实例。 + private List Fetch() + { + return _queue.Count <= 0 ? new List() : _queue.Dequeue(); + } + + /// + /// 回收一个列表,将其清空并放入回收队列中。如果缓存数量超过限制,则丢弃列表而不进行回收 + /// + /// 要回收的列表。 + private void Recycle(List list) + { + list.Clear(); + + if (_recyclingLimit != 0 && _queue.Count > _recyclingLimit) + { + return; + } + + _queue.Enqueue(list); + } + + /// + /// 重写 Clear 方法,清空字典并清空回收队列。 + /// + protected new void Clear() + { + base.Clear(); + _queue.Clear(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/DictionaryExtensions.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/DictionaryExtensions.cs new file mode 100644 index 0000000..ed0aa57 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/DictionaryExtensions.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; +#pragma warning disable CS8601 // Possible null reference assignment. + +namespace Fantasy.DataStructure.Dictionary +{ + /// + /// 提供对字典的扩展方法。 + /// + public static class DictionaryExtensions + { + /// + /// 尝试从字典中移除指定键,并返回相应的值。 + /// + /// 字典中键的类型。 + /// 字典中值的类型。 + /// 要操作的字典实例。 + /// 要移除的键。 + /// 从字典中移除的值(如果成功移除)。 + /// 如果成功移除键值对,则为 true;否则为 false。 + public static bool TryRemove(this IDictionary self, T key, out TV value) + { + if (!self.TryGetValue(key, out value)) + { + return false; + } + + self.Remove(key); + return true; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/DictionaryPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/DictionaryPool.cs new file mode 100644 index 0000000..567901c --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/DictionaryPool.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using Fantasy.Pool; + +namespace Fantasy.DataStructure.Dictionary +{ + /// + /// 提供一个可以使用对象池管理的字典类。 + /// + /// 字典中键的类型。 + /// 字典中值的类型。 + public sealed class DictionaryPool : Dictionary, IDisposable, IPool where TM : notnull + { + private bool _isPool; + private bool _isDispose; + + /// + /// 释放实例占用的资源。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); +#if FANTASY_WEBGL + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 创建一个新的 实例。 + /// + /// 新创建的实例。 + public static DictionaryPool Create() + { +#if FANTASY_WEBGL + var dictionary = Pool>.Rent(); +#else + var dictionary = MultiThreadPool.Rent>(); +#endif + dictionary._isDispose = false; + dictionary._isPool = true; + return dictionary; + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/DoubleMapDictionaryPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/DoubleMapDictionaryPool.cs new file mode 100644 index 0000000..e868710 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/DoubleMapDictionaryPool.cs @@ -0,0 +1,289 @@ +using System; +using System.Collections.Generic; +using Fantasy.Pool; + +#pragma warning disable CS8601 // Possible null reference assignment. +#pragma warning disable CS8604 // Possible null reference argument. +#pragma warning disable CS8603 // Possible null reference return. + +namespace Fantasy.DataStructure.Dictionary +{ + /// + /// 提供一个双向映射字典对象池类,用于双向键值对映射。 + /// + /// 字典中键的类型。 + /// 字典中值的类型。 + public class DoubleMapDictionaryPool : DoubleMapDictionary, IDisposable, IPool where TKey : notnull where TValue : notnull + { + private bool _isPool; + private bool _isDispose; + + /// + /// 创建一个新的 实例。 + /// + /// 新创建的实例。 + public static DoubleMapDictionaryPool Create() + { +#if FANTASY_WEBGL + var a = Pool>.Rent(); +#else + var a = MultiThreadPool.Rent>(); +#endif + a._isDispose = false; + a._isPool = true; + return a; + } + + /// + /// 释放实例占用的资源。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); +#if FANTASY_WEBGL + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } + + /// + /// 可以实现双向映射的字典类,用于将键和值进行双向映射。 + /// + /// 键的类型,不能为 null。 + /// 值的类型,不能为 null。 + public class DoubleMapDictionary where TK : notnull where TV : notnull + { + private readonly Dictionary _kv = new Dictionary(); + private readonly Dictionary _vk = new Dictionary(); + + /// + /// 创建一个新的空的 实例。 + /// + public DoubleMapDictionary() { } + + /// + /// 创建一个新的具有指定初始容量的 实例。 + /// + /// 初始容量。 + public DoubleMapDictionary(int capacity) + { + _kv = new Dictionary(capacity); + _vk = new Dictionary(capacity); + } + + /// + /// 获取包含字典中所有键的列表。 + /// + public List Keys => new List(_kv.Keys); + + /// + /// 获取包含字典中所有值的列表。 + /// + public List Values => new List(_vk.Keys); + + /// + /// 对字典中的每个键值对执行指定的操作。 + /// + /// 要执行的操作。 + public void ForEach(Action action) + { + if (action == null) + { + return; + } + + var keys = _kv.Keys; + foreach (var key in keys) + { + action(key, _kv[key]); + } + } + + /// + /// 将指定的键值对添加到字典中。 + /// + /// 要添加的键。 + /// 要添加的值。 + public void Add(TK key, TV value) + { + if (key == null || value == null || _kv.ContainsKey(key) || _vk.ContainsKey(value)) + { + return; + } + + _kv.Add(key, value); + _vk.Add(value, key); + } + + /// + /// 根据指定的键获取相应的值。 + /// + /// 要查找值的键。 + /// 与指定键关联的值,如果找不到键,则返回默认值。 + public TV GetValueByKey(TK key) + { + if (key != null && _kv.ContainsKey(key)) + { + return _kv[key]; + } + + return default; + } + + /// + /// 尝试根据指定的键获取相应的值。 + /// + /// 要查找值的键。 + /// 如果找到,则为与指定键关联的值;否则为值的默认值。 + /// 如果找到键,则为 true;否则为 false。 + public bool TryGetValueByKey(TK key, out TV value) + { + var result = key != null && _kv.ContainsKey(key); + + value = result ? _kv[key] : default; + + return result; + } + + /// + /// 根据指定的值获取相应的键。 + /// + /// 要查找键的值。 + /// 与指定值关联的键,如果找不到值,则返回默认键。 + public TK GetKeyByValue(TV value) + { + if (value != null && _vk.ContainsKey(value)) + { + return _vk[value]; + } + + return default; + } + + /// + /// 尝试根据指定的值获取相应的键。 + /// + /// 要查找键的值。 + /// 如果找到,则为与指定值关联的键;否则为键的默认值。 + /// 如果找到值,则为 true;否则为 false。 + public bool TryGetKeyByValue(TV value, out TK key) + { + var result = value != null && _vk.ContainsKey(value); + + key = result ? _vk[value] : default; + + return result; + } + + /// + /// 根据指定的键移除键值对。 + /// + /// 要移除的键。 + public void RemoveByKey(TK key) + { + if (key == null) + { + return; + } + + if (!_kv.TryGetValue(key, out var value)) + { + return; + } + + _kv.Remove(key); + _vk.Remove(value); + } + + /// + /// 根据指定的值移除键值对。 + /// + /// 要移除的值。 + public void RemoveByValue(TV value) + { + if (value == null) + { + return; + } + + if (!_vk.TryGetValue(value, out var key)) + { + return; + } + + _kv.Remove(key); + _vk.Remove(value); + } + + /// + /// 清空字典中的所有键值对。 + /// + public void Clear() + { + _kv.Clear(); + _vk.Clear(); + } + + /// + /// 判断字典是否包含指定的键。 + /// + /// 要检查的键。 + /// 如果字典包含指定的键,则为 true;否则为 false。 + public bool ContainsKey(TK key) + { + return key != null && _kv.ContainsKey(key); + } + + /// + /// 判断字典是否包含指定的值。 + /// + /// 要检查的值。 + /// 如果字典包含指定的值,则为 true;否则为 false。 + public bool ContainsValue(TV value) + { + return value != null && _vk.ContainsKey(value); + } + + /// + /// 判断字典是否包含指定的键值对。 + /// + /// 要检查的键。 + /// 要检查的值。 + /// 如果字典包含指定的键值对,则为 true;否则为 false。 + public bool Contains(TK key, TV value) + { + if (key == null || value == null) + { + return false; + } + + return _kv.ContainsKey(key) && _vk.ContainsKey(value); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/EntityDictionary.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/EntityDictionary.cs new file mode 100644 index 0000000..fc4d44f --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/EntityDictionary.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using Fantasy.Pool; + +namespace Fantasy.DataStructure.Dictionary +{ + /// + /// 提供一个带资源释放功能的实体字典类,支持使用对象池管理。 + /// + /// 字典中键的类型。 + /// 字典中值的类型,必须实现 IDisposable 接口。 + public sealed class EntityDictionary : Dictionary, IDisposable, IPool where TN : IDisposable where TM : notnull + { + private bool _isPool; + private bool _isDispose; + + /// + /// 创建一个新的 实例。 + /// + /// 新创建的实例。 + public static EntityDictionary Create() + { +#if FANTASY_WEBGL + var entityDictionary = Pool>.Rent(); +#else + var entityDictionary = MultiThreadPool.Rent>(); +#endif + entityDictionary._isDispose = false; + entityDictionary._isPool = true; + return entityDictionary; + } + + /// + /// 清空字典中的所有键值对,并释放值的资源。 + /// + public new void Clear() + { + foreach (var keyValuePair in this) + { + keyValuePair.Value.Dispose(); + } + + base.Clear(); + } + + /// + /// 清空字典中的所有键值对,但不释放值的资源。 + /// + public void ClearNotDispose() + { + base.Clear(); + } + + /// + /// 释放实例占用的资源。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); +#if FANTASY_WEBGL + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/OneToManyDictionaryPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/OneToManyDictionaryPool.cs new file mode 100644 index 0000000..0515423 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/OneToManyDictionaryPool.cs @@ -0,0 +1,247 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Fantasy.Pool; + +#pragma warning disable CS8603 +#pragma warning disable CS8601 + +namespace Fantasy.DataStructure.Dictionary +{ + /// + /// 一对多映射关系的字典对象池。 + /// + /// 外部字典中的键类型。 + /// 内部字典中的键类型。 + /// 内部字典中的值类型。 + public class OneToManyDictionaryPool : OneToManyDictionary, IDisposable, IPool where TKey : notnull where TValueKey : notnull + { + private bool _isPool; + private bool _isDispose; + + /// + /// 创建一个 的实例。 + /// + /// 新创建的 OneToManyDictionaryPool 实例。 + public static OneToManyDictionaryPool Create() + { +#if FANTASY_WEBGL + var a = Pool>.Rent(); +#else + var a = MultiThreadPool.Rent>(); +#endif + a._isDispose = false; + a._isPool = true; + return a; + } + + /// + /// 释放当前实例及其资源。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); +#if FANTASY_WEBGL + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } + + /// + /// 一对多映射关系的字典。每个键都对应一个内部字典,该内部字典将键值映射到相应的值。 + /// + /// 外部字典中的键类型。 + /// 内部字典中的键类型。 + /// 内部字典中的值类型。 + public class OneToManyDictionary : Dictionary> + where TKey : notnull where TValueKey : notnull + { + private readonly Queue> _queue = new Queue>(); + private readonly int _recyclingLimit = 120; + + /// + /// 创建一个新的 实例。 + /// + public OneToManyDictionary() { } + + /// + /// 创建一个新的 实例,并指定最大缓存数量。 + /// + /// + /// 1:防止数据量过大、所以超过recyclingLimit的数据还是走GC. + /// 2:设置成0不控制数量,全部缓存 + /// + public OneToManyDictionary(int recyclingLimit = 0) + { + _recyclingLimit = recyclingLimit; + } + + /// + /// 检查是否包含指定的键值对。 + /// + /// 外部字典中的键。 + /// 内部字典中的键。 + /// 如果包含指定的键值对,则为 true;否则为 false。 + public bool Contains(TKey key, TValueKey valueKey) + { + TryGetValue(key, out var dic); + + return dic != null && dic.ContainsKey(valueKey); + } + + /// + /// 尝试获取指定键值对的值。 + /// + /// 外部字典中的键。 + /// 内部字典中的键。 + /// 获取的值,如果操作成功,则为值;否则为默认值。 + /// 如果操作成功,则为 true;否则为 false。 + public bool TryGetValue(TKey key, TValueKey valueKey, out TValue value) + { + value = default; + return TryGetValue(key, out var dic) && dic.TryGetValue(valueKey, out value); + } + + /// + /// 获取指定键的第一个值。 + /// + /// 要获取第一个值的键。 + public TValue First(TKey key) + { + return !TryGetValue(key, out var dic) ? default : dic.First().Value; + } + + /// + /// 向字典中添加指定的键值对。 + /// + /// 要添加键值对的键。 + /// 要添加键值对的内部字典键。 + /// 要添加的值。 + public void Add(TKey key, TValueKey valueKey, TValue value) + { + if (!TryGetValue(key, out var dic)) + { + dic = Fetch(); + dic[valueKey] = value; + // dic.Add(valueKey, value); + Add(key, dic); + + return; + } + + dic[valueKey] = value; + // dic.Add(valueKey, value); + } + + /// + /// 从字典中移除指定的键值对。 + /// + /// 要移除键值对的键。 + /// 要移除键值对的内部字典键。 + /// 如果成功移除键值对,则为 true;否则为 false。 + public bool Remove(TKey key, TValueKey valueKey) + { + if (!TryGetValue(key, out var dic)) return false; + + var result = dic.Remove(valueKey); + + if (dic.Count == 0) RemoveKey(key); + + return result; + } + + /// + /// 从字典中移除指定的键值对。 + /// + /// 要移除键值对的键。 + /// 要移除键值对的内部字典键。 + /// 如果成功移除键值对,则为移除的值;否则为默认值。 + /// 如果成功移除键值对,则为 true;否则为 false。 + public bool Remove(TKey key, TValueKey valueKey, out TValue value) + { + if (!TryGetValue(key, out var dic)) + { + value = default; + return false; + } + + var result = dic.TryGetValue(valueKey, out value); + + if (result) dic.Remove(valueKey); + + if (dic.Count == 0) RemoveKey(key); + + return result; + } + + /// + /// 移除字典中的指定键及其相关的所有键值对。 + /// + /// 要移除的键。 + public void RemoveKey(TKey key) + { + if (!TryGetValue(key, out var dic)) return; + + Remove(key); + Recycle(dic); + } + + /// + /// 从对象池中获取一个内部字典实例,如果池中没有,则创建一个新实例。 + /// + /// 获取的内部字典实例。 + private Dictionary Fetch() + { + return _queue.Count <= 0 ? new Dictionary() : _queue.Dequeue(); + } + + /// + /// 将不再使用的内部字典实例放回对象池中,以便后续重用。 + /// + /// 要放回对象池的内部字典实例。 + private void Recycle(Dictionary dic) + { + dic.Clear(); + + if (_recyclingLimit != 0 && _queue.Count > _recyclingLimit) return; + + _queue.Enqueue(dic); + } + + /// + /// 清空字典中的所有键值对,并将不再使用的内部字典实例放回对象池中。 + /// + public new void Clear() + { + foreach (var keyValuePair in this) Recycle(keyValuePair.Value); + + base.Clear(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/OneToManySortedDictionaryPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/OneToManySortedDictionaryPool.cs new file mode 100644 index 0000000..127a8ac --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/OneToManySortedDictionaryPool.cs @@ -0,0 +1,250 @@ +using System; +using System.Collections.Generic; +using Fantasy.Pool; + +#pragma warning disable CS8601 + +namespace Fantasy.DataStructure.Dictionary +{ + /// + /// 一对多映射关系的排序字典对象池。 + /// + /// 外部字典中的键类型。 + /// 内部字典中的排序键类型。 + /// 内部字典中的值类型。 + public class OneToManySortedDictionaryPool : OneToManySortedDictionary, IDisposable, IPool where TKey : notnull where TSortedKey : notnull + { + private bool _isPool; + private bool _isDispose; + + /// + /// 创建一个 的实例。 + /// + /// 新创建的 OneToManySortedDictionaryPool 实例。 + public static OneToManySortedDictionaryPool Create() + { +#if FANTASY_WEBGL + var a = Pool>.Rent(); +#else + var a = MultiThreadPool.Rent>(); +#endif + a._isDispose = false; + a._isPool = true; + return a; + } + + /// + /// 释放当前实例及其资源。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); +#if FANTASY_WEBGL + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } + + /// + /// 一对多映射关系的排序字典。每个外部键映射到一个内部排序字典,该内部排序字典将排序键映射到相应的值。 + /// + /// 外部字典中的键类型。 + /// 内部字典中的排序键类型。 + /// 内部字典中的值类型。 + public class + OneToManySortedDictionary : Dictionary> + where TSortedKey : notnull where TKey : notnull + { + /// 缓存队列的回收限制 + private readonly int _recyclingLimit = 120; + /// 缓存队列,用于存储已回收的内部排序字典 + private readonly Queue> _queue = new Queue>(); + + /// + /// 创建一个新的 实例。 + /// + protected OneToManySortedDictionary() { } + + /// + /// 创建一个新的 实例。设置最大缓存数量 + /// + /// + /// 1:防止数据量过大、所以超过recyclingLimit的数据还是走GC. + /// 2:设置成0不控制数量,全部缓存 + /// + public OneToManySortedDictionary(int recyclingLimit) + { + _recyclingLimit = recyclingLimit; + } + + /// + /// 检查字典是否包含指定的外部键。 + /// + /// 要检查的外部键。 + /// 如果字典包含指定的外部键,则为 true;否则为 false。 + public bool Contains(TKey key) + { + return this.ContainsKey(key); + } + + /// + /// 检查字典是否包含指定的外部键和排序键。 + /// + /// 要检查的外部键。 + /// 要检查的排序键。 + /// 如果字典包含指定的外部键和排序键,则为 true;否则为 false。 + public bool Contains(TKey key, TSortedKey sortedKey) + { + return TryGetValue(key, out var dic) && dic.ContainsKey(sortedKey); + } + + /// + /// 尝试从字典中获取指定外部键对应的内部排序字典。 + /// + /// 要获取内部排序字典的外部键。 + /// 获取到的内部排序字典,如果找不到则为 null。 + /// 如果找到内部排序字典,则为 true;否则为 false。 + public new bool TryGetValue(TKey key, out SortedDictionary dic) + { + return base.TryGetValue(key, out dic); + } + + /// + /// 尝试从字典中获取指定外部键和排序键对应的值。 + /// + /// 要获取值的外部键。 + /// 要获取值的排序键。 + /// 获取到的值,如果找不到则为 default。 + /// 如果找到值,则为 true;否则为 false。 + public bool TryGetValueBySortedKey(TKey key, TSortedKey sortedKey, out TValue value) + { + if (base.TryGetValue(key, out var dic)) + { + return dic.TryGetValue(sortedKey, out value); + } + + value = default; + return false; + } + + /// + /// 向字典中添加一个值,关联到指定的外部键和排序键。 + /// + /// 要关联值的外部键。 + /// 要关联值的排序键。 + /// 要添加的值。 + public void Add(TKey key, TSortedKey sortedKey, TValue value) + { + if (!TryGetValue(key, out var dic)) + { + dic = Fetch(); + dic.Add(sortedKey, value); + Add(key, dic); + + return; + } + + dic.Add(sortedKey, value); + } + + /// + /// 从字典中移除指定外部键和排序键关联的值。 + /// + /// 要移除值的外部键。 + /// 要移除值的排序键。 + /// 如果成功移除值,则为 true;否则为 false。 + public bool RemoveSortedKey(TKey key, TSortedKey sortedKey) + { + if (!TryGetValue(key, out var dic)) + { + return false; + } + + var isRemove = dic.Remove(sortedKey); + + if (dic.Count == 0) + { + isRemove = RemoveKey(key); + } + + return isRemove; + } + + /// + /// 从字典中移除指定外部键及其关联的所有值。 + /// + /// 要移除的外部键。 + /// 如果成功移除外部键及其关联的所有值,则为 true;否则为 false。 + public bool RemoveKey(TKey key) + { + if (!TryGetValue(key, out var list)) + { + return false; + } + + Remove(key); + Recycle(list); + return true; + } + + /// + /// 从缓存队列中获取一个内部排序字典。 + /// + /// 一个内部排序字典。 + private SortedDictionary Fetch() + { + return _queue.Count <= 0 ? new SortedDictionary() : _queue.Dequeue(); + } + + /// + /// 回收一个内部排序字典到缓存队列。 + /// + /// 要回收的内部排序字典。 + private void Recycle(SortedDictionary dic) + { + dic.Clear(); + + if (_recyclingLimit != 0 && _queue.Count > _recyclingLimit) + { + return; + } + + _queue.Enqueue(dic); + } + + /// + /// 清空字典以及内部排序字典缓存队列,释放所有资源。 + /// + protected new void Clear() + { + base.Clear(); + _queue.Clear(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/ReuseDictionary.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/ReuseDictionary.cs new file mode 100644 index 0000000..ebe12e9 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/ReuseDictionary.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using Fantasy.Pool; + +namespace Fantasy.DataStructure.Dictionary +{ + /// + /// 提供一个可以重用的字典类,支持使用对象池管理。 + /// + /// 字典中键的类型。 + /// 字典中值的类型。 + public sealed class ReuseDictionary : Dictionary, IDisposable, IPool where TM : notnull + { + private bool _isPool; + private bool _isDispose; + + /// + /// 创建一个新的 实例。 + /// + /// 新创建的实例。 + public static ReuseDictionary Create() + { +#if FANTASY_WEBGL + var entityDictionary = Pool>.Rent(); +#else + var entityDictionary = MultiThreadPool.Rent>(); +#endif + entityDictionary._isDispose = false; + entityDictionary._isPool = true; + return entityDictionary; + } + + /// + /// 释放实例占用的资源。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); +#if FANTASY_WEBGL + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/SortedDictionaryPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/SortedDictionaryPool.cs new file mode 100644 index 0000000..8db66a8 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/Dictionary/SortedDictionaryPool.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using Fantasy.Pool; + +namespace Fantasy.DataStructure.Dictionary +{ + /// + /// 提供一个可以使用对象池管理的排序字典类。 + /// + /// + /// + public sealed class SortedDictionaryPool : SortedDictionary, IDisposable, IPool where TM : notnull + { + private bool _isPool; + private bool _isDispose; + + /// + /// 释放实例占用的资源。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + _isDispose = true; + Clear(); +#if FANTASY_WEBGL + Pool>.Return(this); +#else + MultiThreadPool.Return(this); +#endif + } + + /// + /// 创建一个新的 实例。 + /// + /// 新创建的实例。 + public static SortedDictionaryPool Create() + { +#if FANTASY_WEBGL + var dictionary = Pool>.Rent(); +#else + var dictionary = MultiThreadPool.Rent>(); +#endif + dictionary._isDispose = false; + dictionary._isPool = true; + return dictionary; + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/PriorityQueue/PriorityQueueGenerics.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/PriorityQueue/PriorityQueueGenerics.cs new file mode 100644 index 0000000..2ef6704 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/PriorityQueue/PriorityQueueGenerics.cs @@ -0,0 +1,121 @@ +// ReSharper disable SwapViaDeconstruction +// ReSharper disable UseIndexFromEndExpression +// ReSharper disable ConvertToPrimaryConstructor +using System; +using System.Collections.Generic; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +#pragma warning disable CS8601 // Possible null reference assignment. +namespace Fantasy.DataStructure.PriorityQueue +{ + /// + /// 优先队列 + /// + /// 节点数据 + /// 排序的类型、 + public sealed class PriorityQueue where TPriority : IComparable + { + private readonly List> _heap; + + public PriorityQueue(int initialCapacity = 16) + { + _heap = new List>(initialCapacity); + } + + public int Count => _heap.Count; + + public void Enqueue(TElement element, TPriority priority) + { + _heap.Add(new PriorityQueueItem(element, priority)); + HeapifyUp(_heap.Count - 1); + } + + public TElement Dequeue() + { + if (_heap.Count == 0) + { + throw new InvalidOperationException("The queue is empty."); + } + + var item = _heap[0]; + _heap[0] = _heap[_heap.Count - 1]; + _heap.RemoveAt(_heap.Count - 1); + HeapifyDown(0); + return item.Element; + } + + public bool TryDequeue(out TElement element) + { + if (_heap.Count == 0) + { + element = default(TElement); + return false; + } + + element = Dequeue(); + return true; + } + + public TElement Peek() + { + if (_heap.Count == 0) + { + throw new InvalidOperationException("The queue is empty."); + } + return _heap[0].Element; + } + + // ReSharper disable once IdentifierTypo + private void HeapifyUp(int index) + { + while (index > 0) + { + var parentIndex = (index - 1) / 2; + if (_heap[index].Priority.CompareTo(_heap[parentIndex].Priority) >= 0) + { + break; + } + Swap(index, parentIndex); + index = parentIndex; + } + } + + // ReSharper disable once IdentifierTypo + private void HeapifyDown(int index) + { + var lastIndex = _heap.Count - 1; + while (true) + { + var smallestIndex = index; + var leftChildIndex = 2 * index + 1; + var rightChildIndex = 2 * index + 2; + + if (leftChildIndex <= lastIndex && _heap[leftChildIndex].Priority.CompareTo(_heap[smallestIndex].Priority) < 0) + { + smallestIndex = leftChildIndex; + } + + if (rightChildIndex <= lastIndex && _heap[rightChildIndex].Priority.CompareTo(_heap[smallestIndex].Priority) < 0) + { + smallestIndex = rightChildIndex; + } + + if (smallestIndex == index) + { + break; + } + + Swap(index, smallestIndex); + index = smallestIndex; + } + } + + private void Swap(int index1, int index2) + { + var temp = _heap[index1]; + _heap[index1] = _heap[index2]; + _heap[index2] = temp; + } + } +} + diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/PriorityQueue/PriorityQueueItem.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/PriorityQueue/PriorityQueueItem.cs new file mode 100644 index 0000000..5b020b2 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/PriorityQueue/PriorityQueueItem.cs @@ -0,0 +1,30 @@ +// ReSharper disable ConvertToPrimaryConstructor +// ReSharper disable SwapViaDeconstruction +// ReSharper disable InconsistentNaming +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +namespace Fantasy.DataStructure.PriorityQueue +{ + public struct PriorityQueueItemUint + { + public T Element { get; set; } + public uint Priority { get; set; } + + public PriorityQueueItemUint(T element, uint priority) + { + Element = element; + Priority = priority; + } + } + + public struct PriorityQueueItem + { + public T Element { get; } + public T1 Priority { get; } + + public PriorityQueueItem(T element, T1 priority) + { + Element = element; + Priority = priority; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/PriorityQueue/PriorityQueueSimple.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/PriorityQueue/PriorityQueueSimple.cs new file mode 100644 index 0000000..63a4418 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/PriorityQueue/PriorityQueueSimple.cs @@ -0,0 +1,116 @@ +// ReSharper disable SwapViaDeconstruction +// ReSharper disable UseIndexFromEndExpression +// ReSharper disable ConvertToPrimaryConstructor +using System; +using System.Collections.Generic; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS8601 // Possible null reference assignment. +namespace Fantasy.DataStructure.PriorityQueue +{ + public sealed class PriorityQueue where T : IComparable + { + private readonly List _heap; + + public PriorityQueue(int initialCapacity = 16) + { + _heap = new List(initialCapacity); + } + + public int Count => _heap.Count; + + public void Enqueue(T item) + { + _heap.Add(item); + HeapifyUp(_heap.Count - 1); + } + + public T Dequeue() + { + if (_heap.Count == 0) + { + throw new InvalidOperationException("The queue is empty."); + } + + var item = _heap[0]; + var heapCount = _heap.Count - 1; + _heap[0] = _heap[heapCount]; + _heap.RemoveAt(heapCount); + HeapifyDown(0); + return item; + } + + public bool TryDequeue(out T item) + { + if (_heap.Count == 0) + { + item = default(T); + return false; + } + + item = Dequeue(); + return true; + } + + public T Peek() + { + if (_heap.Count == 0) + { + throw new InvalidOperationException("The queue is empty."); + } + return _heap[0]; + } + + // ReSharper disable once IdentifierTypo + private void HeapifyUp(int index) + { + while (index > 0) + { + var parentIndex = (index - 1) / 2; + if (_heap[index].CompareTo(_heap[parentIndex]) >= 0) + { + break; + } + Swap(index, parentIndex); + index = parentIndex; + } + } + + // ReSharper disable once IdentifierTypo + private void HeapifyDown(int index) + { + var lastIndex = _heap.Count - 1; + while (true) + { + var smallestIndex = index; + var leftChildIndex = 2 * index + 1; + var rightChildIndex = 2 * index + 2; + + if (leftChildIndex <= lastIndex && _heap[leftChildIndex].CompareTo(_heap[smallestIndex]) < 0) + { + smallestIndex = leftChildIndex; + } + + if (rightChildIndex <= lastIndex && _heap[rightChildIndex].CompareTo(_heap[smallestIndex]) < 0) + { + smallestIndex = rightChildIndex; + } + + if (smallestIndex == index) + { + break; + } + + Swap(index, smallestIndex); + index = smallestIndex; + } + } + + private void Swap(int index1, int index2) + { + var temp = _heap[index1]; + _heap[index1] = _heap[index2]; + _heap[index2] = temp; + } + } +} + diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTable.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTable.cs new file mode 100644 index 0000000..acbc2c1 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTable.cs @@ -0,0 +1,190 @@ + +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS8601 // Possible null reference assignment. +#pragma warning disable CS8604 // Possible null reference argument. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +namespace Fantasy.DataStructure.SkipTable +{ + /// + /// 跳表数据结构(升序版) + /// + /// 跳表中存储的值的类型。 + public class SkipTable : SkipTableBase + { + /// + /// 创建一个新的跳表实例。 + /// + /// 跳表的最大层数。 + public SkipTable(int maxLayer = 8) : base(maxLayer) { } + + /// + /// 向跳表中添加一个新节点。 + /// + /// 节点的主排序键。 + /// 节点的副排序键。 + /// 节点的唯一键。 + /// 要添加的值。 + public override void Add(long sortKey, long viceKey, long key, TValue value) + { + var rLevel = 1; + + while (rLevel <= MaxLayer && Random.Next(3) == 0) + { + ++rLevel; + } + + SkipTableNode cur = TopHeader, last = null; + + for (var layer = MaxLayer; layer >= 1; --layer) + { + // 节点有next节点,且 (next主键 < 插入主键) 或 (next主键 == 插入主键 且 next副键 < 插入副键) + while (cur.Right != null && ((cur.Right.SortKey < sortKey) || + (cur.Right.SortKey == sortKey && cur.Right.ViceKey < viceKey))) + { + cur = cur.Right; + } + + if (layer <= rLevel) + { + var currentRight = cur.Right; + + // 在当前层插入新节点 + cur.Right = new SkipTableNode(sortKey, viceKey, key, value, layer == 1 ? cur.Index + 1 : 0, cur, cur.Right, null); + + if (currentRight != null) + { + currentRight.Left = cur.Right; + } + + if (last != null) + { + last.Down = cur.Right; + } + + if (layer == 1) + { + // 更新索引信息 + cur.Right.Index = cur.Index + 1; + Node.Add(key, cur.Right); + + SkipTableNode v = cur.Right.Right; + + while (v != null) + { + v.Index++; + v = v.Right; + } + } + + last = cur.Right; + } + + cur = cur.Down; + } + } + + /// + /// 从跳表中移除一个节点。 + /// + /// 节点的主排序键。 + /// 节点的副排序键。 + /// 节点的唯一键。 + /// 被移除的节点的值。 + /// 如果成功移除节点,则为 true;否则为 false。 + public override bool Remove(long sortKey, long viceKey, long key, out TValue value) + { + value = default; + var seen = false; + var cur = TopHeader; + + for (var layer = MaxLayer; layer >= 1; --layer) + { + // 先按照主键查找 再 按副键查找 + while (cur.Right != null && cur.Right.SortKey < sortKey && cur.Right.Key != key) cur = cur.Right; + while (cur.Right != null && (cur.Right.SortKey == sortKey && cur.Right.ViceKey <= viceKey) && + cur.Right.Key != key) cur = cur.Right; + + var isFind = false; + var currentCur = cur; + SkipTableNode removeCur = null; + // 如果当前不是要删除的节点、但主键和副键都一样、需要特殊处理下。 + if (cur.Right != null && cur.Right.Key == key) + { + isFind = true; + removeCur = cur.Right; + currentCur = cur; + } + else + { + // 先向左查找下 + var currentNode = cur.Left; + while (currentNode != null && currentNode.SortKey == sortKey && currentNode.ViceKey == viceKey) + { + if (currentNode.Key == key) + { + isFind = true; + removeCur = currentNode; + currentCur = currentNode.Left; + break; + } + + currentNode = currentNode.Left; + } + + // 再向右查找下 + if (!isFind) + { + currentNode = cur.Right; + while (currentNode != null && currentNode.SortKey == sortKey && currentNode.ViceKey == viceKey) + { + if (currentNode.Key == key) + { + isFind = true; + removeCur = currentNode; + currentCur = currentNode.Left; + break; + } + + currentNode = currentNode.Right; + } + } + } + + if (isFind && currentCur != null) + { + value = removeCur.Value; + currentCur.Right = removeCur.Right; + + if (removeCur.Right != null) + { + removeCur.Right.Left = currentCur; + removeCur.Right = null; + } + + removeCur.Left = null; + removeCur.Down = null; + removeCur.Value = default; + + if (layer == 1) + { + var tempCur = currentCur.Right; + while (tempCur != null) + { + tempCur.Index--; + tempCur = tempCur.Right; + } + + Node.Remove(removeCur.Key); + } + + seen = true; + } + + cur = cur.Down; + } + + return seen; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTableBase.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTableBase.cs new file mode 100644 index 0000000..82783e8 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTableBase.cs @@ -0,0 +1,282 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Fantasy.DataStructure.Collection; + +#pragma warning disable CS8601 +#pragma warning disable CS8603 +#pragma warning disable CS8625 +#pragma warning disable CS8604 + +namespace Fantasy.DataStructure.SkipTable +{ + /// + /// 抽象的跳表基类,提供跳表的基本功能和操作。 + /// + /// 跳表中存储的值的类型。 + public abstract class SkipTableBase : IEnumerable> + { + /// + /// 跳表的最大层数 + /// + public readonly int MaxLayer; + /// + /// 跳表的顶部头节点 + /// + public readonly SkipTableNode TopHeader; + /// + /// 跳表的底部头节点 + /// + public SkipTableNode BottomHeader; + /// + /// 跳表中节点的数量,使用了 Node 字典的计数 + /// + public int Count => Node.Count; + /// + /// 用于生成随机数的随机数生成器 + /// + protected readonly Random Random = new Random(); + /// + /// 存储跳表节点的字典 + /// + protected readonly Dictionary> Node = new(); + /// + /// 用于辅助反向查找的栈 + /// + protected readonly Stack> AntiFindStack = new Stack>(); + + /// + /// 初始化一个新的跳表实例。 + /// + /// 跳表的最大层数,默认为 8。 + protected SkipTableBase(int maxLayer = 8) + { + MaxLayer = maxLayer; + var cur = TopHeader = new SkipTableNode(long.MinValue, 0, 0, default, 0, null, null, null); + + for (var layer = MaxLayer - 1; layer >= 1; --layer) + { + cur.Down = new SkipTableNode(long.MinValue, 0, 0, default, 0, null, null, null); + cur = cur.Down; + } + + BottomHeader = cur; + } + + /// + /// 获取指定键的节点的值,若不存在则返回默认值。 + /// + /// 要查找的键。 + public TValue this[long key] => !TryGetValueByKey(key, out TValue value) ? default : value; + + /// + /// 获取指定键的节点在跳表中的排名。 + /// + /// 要查找的键。 + /// 节点的排名。 + public int GetRanking(long key) + { + if (!Node.TryGetValue(key, out var node)) + { + return 0; + } + + return node.Index; + } + + /// + /// 获取指定键的反向排名,即在比该键更大的节点中的排名。 + /// + /// 要查找的键。 + /// 反向排名。 + public int GetAntiRanking(long key) + { + var ranking = GetRanking(key); + + if (ranking == 0) + { + return 0; + } + + return Count + 1 - ranking; + } + + /// + /// 尝试通过键获取节点的值。 + /// + /// 要查找的键。 + /// 获取到的节点的值,如果键不存在则为默认值。 + /// 是否成功获取节点的值。 + public bool TryGetValueByKey(long key, out TValue value) + { + if (!Node.TryGetValue(key, out var node)) + { + value = default; + return false; + } + + value = node.Value; + return true; + } + + /// + /// 尝试通过键获取节点。 + /// + /// 要查找的键。 + /// 获取到的节点,如果键不存在则为 null。 + /// 是否成功获取节点。 + public bool TryGetNodeByKey(long key, out SkipTableNode node) + { + if (Node.TryGetValue(key, out node)) + { + return true; + } + + return false; + } + + /// + /// 在跳表中查找节点,返回从起始位置到结束位置的节点列表。 + /// + /// 起始位置的排名。 + /// 结束位置的排名。 + /// 用于存储节点列表的 实例。 + public void Find(int start, int end, ListPool> list) + { + var cur = BottomHeader; + var count = end - start; + + for (var i = 0; i < start; i++) + { + cur = cur.Right; + } + + for (var i = 0; i <= count; i++) + { + if (cur == null) + { + break; + } + + list.Add(cur); + cur = cur.Right; + } + } + + /// + /// 在跳表中进行反向查找节点,返回从结束位置到起始位置的节点列表。 + /// + /// 结束位置的排名。 + /// 起始位置的排名。 + /// 用于存储节点列表的 实例。 + public void AntiFind(int start, int end, ListPool> list) + { + var cur = BottomHeader; + start = Count + 1 - start; + end = start - end; + + for (var i = 0; i < start; i++) + { + cur = cur.Right; + + if (cur == null) + { + break; + } + + if (i < end) + { + continue; + } + + AntiFindStack.Push(cur); + } + + while (AntiFindStack.TryPop(out var node)) + { + list.Add(node); + } + } + + /// + /// 获取跳表中最后一个节点的值。 + /// + /// 最后一个节点的值。 + public TValue GetLastValue() + { + var cur = TopHeader; + + while (cur.Right != null || cur.Down != null) + { + while (cur.Right != null) + { + cur = cur.Right; + } + + if (cur.Down != null) + { + cur = cur.Down; + } + } + + return cur.Value; + } + + /// + /// 移除跳表中指定键的节点。 + /// + /// 要移除的节点的键。 + /// 移除是否成功。 + public bool Remove(long key) + { + if (!Node.TryGetValue(key, out var node)) + { + return false; + } + + return Remove(node.SortKey, node.ViceKey, key, out _); + } + + /// + /// 向跳表中添加节点。 + /// + /// 节点的排序键。 + /// 节点的副键。 + /// 节点的键。 + /// 节点的值。 + public abstract void Add(long sortKey, long viceKey, long key, TValue value); + + /// + /// 从跳表中移除指定键的节点。 + /// + /// 节点的排序键。 + /// 节点的副键。 + /// 节点的键。 + /// 被移除的节点的值。 + /// 移除是否成功。 + public abstract bool Remove(long sortKey, long viceKey, long key, out TValue value); + + /// + /// 返回一个枚举器,用于遍历跳表中的节点。 + /// + /// 一个可用于遍历跳表节点的枚举器。 + public IEnumerator> GetEnumerator() + { + var cur = BottomHeader.Right; + while (cur != null) + { + yield return cur; + cur = cur.Right; + } + } + + /// + /// 返回一个非泛型枚举器,用于遍历跳表中的节点。 + /// + /// 一个非泛型枚举器,可用于遍历跳表节点。 + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTableDesc.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTableDesc.cs new file mode 100644 index 0000000..63daa16 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTableDesc.cs @@ -0,0 +1,188 @@ + +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS8604 // Possible null reference argument. +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8601 // Possible null reference assignment. +namespace Fantasy.DataStructure.SkipTable +{ + /// + /// 跳表降序版,用于存储降序排列的数据。 + /// + /// 存储的值的类型。 + public class SkipTableDesc : SkipTableBase + { + /// + /// 初始化跳表降序版的新实例。 + /// + /// 跳表的最大层数,默认为 8。 + public SkipTableDesc(int maxLayer = 8) : base(maxLayer) { } + + /// + /// 向跳表中添加一个节点,根据降序规则进行插入。 + /// + /// 排序主键。 + /// 副键。 + /// 键。 + /// 值。 + public override void Add(long sortKey, long viceKey, long key, TValue value) + { + var rLevel = 1; + + while (rLevel <= MaxLayer && Random.Next(3) == 0) + { + ++rLevel; + } + + SkipTableNode cur = TopHeader, last = null; + + for (var layer = MaxLayer; layer >= 1; --layer) + { + // 节点有next节点,且 (next主键 > 插入主键) 或 (next主键 == 插入主键 且 next副键 > 插入副键) + while (cur.Right != null && ((cur.Right.SortKey > sortKey) || + (cur.Right.SortKey == sortKey && cur.Right.ViceKey > viceKey))) + { + cur = cur.Right; + } + + if (layer <= rLevel) + { + var currentRight = cur.Right; + cur.Right = new SkipTableNode(sortKey, viceKey, key, value, + layer == 1 ? cur.Index + 1 : 0, cur, cur.Right, null); + + if (currentRight != null) + { + currentRight.Left = cur.Right; + } + + if (last != null) + { + last.Down = cur.Right; + } + + if (layer == 1) + { + cur.Right.Index = cur.Index + 1; + Node.Add(key, cur.Right); + + SkipTableNode v = cur.Right.Right; + + while (v != null) + { + v.Index++; + v = v.Right; + } + } + + last = cur.Right; + } + + cur = cur.Down; + } + } + + /// + /// 从跳表中移除一个节点,根据降序规则进行移除。 + /// + /// 排序主键。 + /// 副键。 + /// 键。 + /// 移除的节点值。 + /// 如果成功移除节点,则返回 true,否则返回 false。 + public override bool Remove(long sortKey, long viceKey, long key, out TValue value) + { + value = default; + var seen = false; + var cur = TopHeader; + + for (var layer = MaxLayer; layer >= 1; --layer) + { + // 先按照主键查找 再 按副键查找 + while (cur.Right != null && cur.Right.SortKey > sortKey && cur.Right.Key != key) cur = cur.Right; + while (cur.Right != null && (cur.Right.SortKey == sortKey && cur.Right.ViceKey >= viceKey) && + cur.Right.Key != key) cur = cur.Right; + + var isFind = false; + var currentCur = cur; + SkipTableNode removeCur = null; + // 如果当前不是要删除的节点、但主键和副键都一样、需要特殊处理下。 + if (cur.Right != null && cur.Right.Key == key) + { + isFind = true; + removeCur = cur.Right; + currentCur = cur; + } + else + { + // 先向左查找下 + var currentNode = cur.Left; + while (currentNode != null && currentNode.SortKey == sortKey && currentNode.ViceKey == viceKey) + { + if (currentNode.Key == key) + { + isFind = true; + removeCur = currentNode; + currentCur = currentNode.Left; + break; + } + + currentNode = currentNode.Left; + } + + // 再向右查找下 + if (!isFind) + { + currentNode = cur.Right; + while (currentNode != null && currentNode.SortKey == sortKey && currentNode.ViceKey == viceKey) + { + if (currentNode.Key == key) + { + isFind = true; + removeCur = currentNode; + currentCur = currentNode.Left; + break; + } + + currentNode = currentNode.Right; + } + } + } + + if (isFind && currentCur != null) + { + value = removeCur.Value; + currentCur.Right = removeCur.Right; + + if (removeCur.Right != null) + { + removeCur.Right.Left = currentCur; + removeCur.Right = null; + } + + removeCur.Left = null; + removeCur.Down = null; + removeCur.Value = default; + + if (layer == 1) + { + var tempCur = currentCur.Right; + while (tempCur != null) + { + tempCur.Index--; + tempCur = tempCur.Right; + } + + Node.Remove(removeCur.Key); + } + + seen = true; + } + + cur = cur.Down; + } + + return seen; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTableNode.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTableNode.cs new file mode 100644 index 0000000..8a1a144 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/DataStructure/SkipTable/SkipTableNode.cs @@ -0,0 +1,68 @@ +namespace Fantasy.DataStructure.SkipTable +{ + /// + /// 跳跃表节点。 + /// + /// 节点的值的类型。 + public class SkipTableNode + { + /// + /// 节点在跳跃表中的索引。 + /// + public int Index; + /// + /// 节点的主键。 + /// + public long Key; + /// + /// 节点的排序键。 + /// + public long SortKey; + /// + /// 节点的副键。 + /// + public long ViceKey; + /// + /// 节点存储的值。 + /// + public TValue Value; + /// + /// 指向左侧节点的引用。 + /// + public SkipTableNode Left; + /// + /// 指向右侧节点的引用。 + /// + public SkipTableNode Right; + /// + /// 指向下一层节点的引用。 + /// + public SkipTableNode Down; + + /// + /// 初始化跳跃表节点的新实例。 + /// + /// 节点的排序键。 + /// 节点的副键。 + /// 节点的主键。 + /// 节点存储的值。 + /// 节点在跳跃表中的索引。 + /// 指向左侧节点的引用。 + /// 指向右侧节点的引用。 + /// 指向下一层节点的引用。 + public SkipTableNode(long sortKey, long viceKey, long key, TValue value, int index, + SkipTableNode l, + SkipTableNode r, + SkipTableNode d) + { + Left = l; + Right = r; + Down = d; + Value = value; + Key = key; + Index = index; + SortKey = sortKey; + ViceKey = viceKey; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/CoroutineLock.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/CoroutineLock.cs new file mode 100644 index 0000000..a95d8f3 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/CoroutineLock.cs @@ -0,0 +1,140 @@ +using System; +using System.Collections.Generic; +using Fantasy.Pool; + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +namespace Fantasy.Async +{ + /// + /// 协程锁专用的对象池 + /// + public sealed class CoroutineLockPool : PoolCore + { + /// + /// 协程锁专用的对象池的构造函数 + /// + public CoroutineLockPool() : base(2000) { } + } + + /// + /// 协程锁 + /// + public sealed class CoroutineLock : IPool, IDisposable + { + private Scene _scene; + private CoroutineLockComponent _coroutineLockComponent; + private readonly Dictionary _queue = new Dictionary(); + /// + /// 表示是否是对象池中创建的 + /// + private bool _isPool; + /// + /// 协程锁的类型 + /// + public long CoroutineLockType { get; private set; } + + internal void Initialize(CoroutineLockComponent coroutineLockComponent, ref long coroutineLockType) + { + _scene = coroutineLockComponent.Scene; + CoroutineLockType = coroutineLockType; + _coroutineLockComponent = coroutineLockComponent; + } + /// + /// 销毁协程锁,如果调用了该方法,所有使用当前协程锁等待的逻辑会按照顺序释放锁。 + /// + public void Dispose() + { + foreach (var (_, coroutineLockQueue) in _queue) + { + while (TryCoroutineLockQueueDequeue(coroutineLockQueue)) { } + } + + _queue.Clear(); + _scene = null; + CoroutineLockType = 0; + _coroutineLockComponent = null; + } + /// + /// 等待上一个任务完成 + /// + /// 需要等待的Id + /// 用于查询协程锁的标记,可不传入,只有在超时的时候排查是哪个锁超时时使用 + /// 等待多久会超时,当到达设定的时候会把当前锁给按照超时处理 + /// + public async FTask Wait(long coroutineLockQueueKey, string tag = null, int timeOut = 30000) + { + var waitCoroutineLock = _coroutineLockComponent.WaitCoroutineLockPool.Rent(this, ref coroutineLockQueueKey, tag, timeOut); + + if (!_queue.TryGetValue(coroutineLockQueueKey, out var queue)) + { + queue = _coroutineLockComponent.CoroutineLockQueuePool.Rent(); + _queue.Add(coroutineLockQueueKey, queue); + return waitCoroutineLock; + } + + queue.Enqueue(waitCoroutineLock); + return await waitCoroutineLock.Tcs; + } + /// + /// 按照先入先出的顺序,释放最早的一个协程锁 + /// + /// + public void Release(long coroutineLockQueueKey) + { + if (!_queue.TryGetValue(coroutineLockQueueKey, out var coroutineLockQueue)) + { + return; + } + + if (!TryCoroutineLockQueueDequeue(coroutineLockQueue)) + { + _queue.Remove(coroutineLockQueueKey); + } + } + + private bool TryCoroutineLockQueueDequeue(CoroutineLockQueue coroutineLockQueue) + { + if (!coroutineLockQueue.TryDequeue(out var waitCoroutineLock)) + { + _coroutineLockComponent.CoroutineLockQueuePool.Return(coroutineLockQueue); + return false; + } + + if (waitCoroutineLock.TimerId != 0) + { + _scene.TimerComponent.Net.Remove(waitCoroutineLock.TimerId); + } + + try + { + // 放到下一帧执行,如果不这样会导致逻辑的顺序不正常。 + _scene.ThreadSynchronizationContext.Post(waitCoroutineLock.SetResult); + } + catch (Exception e) + { + Log.Error($"Error in disposing CoroutineLock: {e}"); + } + + return true; + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/CoroutineLockComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/CoroutineLockComponent.cs new file mode 100644 index 0000000..4644274 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/CoroutineLockComponent.cs @@ -0,0 +1,100 @@ +using System.Collections.Generic; +using Fantasy.Entitas; + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. + +namespace Fantasy.Async +{ + /// + /// 协程锁组件 + /// + public class CoroutineLockComponent : Entity + { + private long _lockId; + private CoroutineLockPool _coroutineLockPool; + internal WaitCoroutineLockPool WaitCoroutineLockPool { get; private set; } + internal CoroutineLockQueuePool CoroutineLockQueuePool { get; private set; } + private readonly Dictionary _coroutineLocks = new Dictionary(); + internal CoroutineLockComponent Initialize() + { + _coroutineLockPool = new CoroutineLockPool(); + CoroutineLockQueuePool = new CoroutineLockQueuePool(); + WaitCoroutineLockPool = new WaitCoroutineLockPool(this); + return this; + } + + internal long LockId => ++_lockId; + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + public override void Dispose() +#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member + { + if (IsDisposed) + { + return; + } + + _lockId = 0; + base.Dispose(); + } + + /// + /// 创建一个新的协程锁 + /// 使用这个方法创建的协程锁,需要手动释放管理CoroutineLock。 + /// 不会再CoroutineLockComponent理进行管理。 + /// + /// + /// + public CoroutineLock Create(long coroutineLockType) + { + var coroutineLock = _coroutineLockPool.Rent(); + coroutineLock.Initialize(this, ref coroutineLockType); + return coroutineLock; + } + + /// + /// 请求一个协程锁。 + /// 使用这个方法创建的协程锁,会自动释放CoroutineLockQueueType。 + /// + /// 锁类型 + /// 锁队列Id + /// 当某些锁超时,需要一个标记来方便排查问题,正常的情况下这个默认为null就可以。 + /// 设置锁的超时时间,让超过设置的时间会触发超时,保证锁不会因为某一个锁一直不解锁导致卡住的问题。 + /// + /// 返回的WaitCoroutineLock通过Dispose来解除这个锁、建议用using来保住这个锁。 + /// 也可以返回的WaitCoroutineLock通过CoroutineLockComponent.UnLock来解除这个锁。 + /// + public FTask Wait(long coroutineLockType, long coroutineLockQueueKey, string tag = null, int time = 30000) + { + if (!_coroutineLocks.TryGetValue(coroutineLockType, out var coroutineLock)) + { + coroutineLock = _coroutineLockPool.Rent(); + coroutineLock.Initialize(this, ref coroutineLockType); + _coroutineLocks.Add(coroutineLockType, coroutineLock); + } + + return coroutineLock.Wait(coroutineLockQueueKey, tag, time); + } + + /// + /// 解除一个协程锁。 + /// + /// + /// + public void Release(int coroutineLockType, long coroutineLockQueueKey) + { + if (IsDisposed) + { + return; + } + + if (!_coroutineLocks.TryGetValue(coroutineLockType, out var coroutineLock)) + { + return; + } + + coroutineLock.Release(coroutineLockQueueKey); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/CoroutineLockQueue.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/CoroutineLockQueue.cs new file mode 100644 index 0000000..2948aca --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/CoroutineLockQueue.cs @@ -0,0 +1,35 @@ +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +using System.Collections.Generic; +using Fantasy.Pool; + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +namespace Fantasy.Async +{ + internal sealed class CoroutineLockQueuePool : PoolCore + { + public CoroutineLockQueuePool() : base(2000) { } + } + + internal sealed class CoroutineLockQueue : Queue, IPool + { + private bool _isPool; + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/WaitCoroutineLock.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/WaitCoroutineLock.cs new file mode 100644 index 0000000..28d04d4 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/CoroutineLock/WaitCoroutineLock.cs @@ -0,0 +1,146 @@ +using System; +using Fantasy.Event; +using Fantasy.Pool; + +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +namespace Fantasy.Async +{ + internal sealed class WaitCoroutineLockPool : PoolCore + { + private readonly Scene _scene; + private readonly CoroutineLockComponent _coroutineLockComponent; + + public WaitCoroutineLockPool(CoroutineLockComponent coroutineLockComponent) : base(2000) + { + _scene = coroutineLockComponent.Scene; + _coroutineLockComponent = coroutineLockComponent; + } + + public WaitCoroutineLock Rent(CoroutineLock coroutineLock, ref long coroutineLockQueueKey, string tag = null, int timeOut = 30000) + { + var timerId = 0L; + var lockId = _coroutineLockComponent.LockId; + var waitCoroutineLock = _coroutineLockComponent.WaitCoroutineLockPool.Rent(); + + if (timeOut > 0) + { + timerId = _scene.TimerComponent.Net.OnceTimer(timeOut, new CoroutineLockTimeout(ref lockId, waitCoroutineLock)); + } + + waitCoroutineLock.Initialize(coroutineLock, this, ref coroutineLockQueueKey, ref timerId, ref lockId, tag); + return waitCoroutineLock; + } + } + + internal struct CoroutineLockTimeout + { + public readonly long LockId; + public readonly WaitCoroutineLock WaitCoroutineLock; + + public CoroutineLockTimeout(ref long lockId, WaitCoroutineLock waitCoroutineLock) + { + LockId = lockId; + WaitCoroutineLock = waitCoroutineLock; + } + } + + internal sealed class OnCoroutineLockTimeout : EventSystem + { + protected override void Handler(CoroutineLockTimeout self) + { + var selfWaitCoroutineLock = self.WaitCoroutineLock; + + if (self.LockId != selfWaitCoroutineLock.LockId) + { + return; + } + + Log.Error($"coroutine lock timeout CoroutineLockQueueType:{selfWaitCoroutineLock.CoroutineLock.CoroutineLockType} Key:{selfWaitCoroutineLock.CoroutineLockQueueKey} Tag:{selfWaitCoroutineLock.Tag}"); + } + } + + /// + /// 一个协程锁的实例,用户可以用过这个手动释放锁 + /// + public sealed class WaitCoroutineLock : IPool, IDisposable + { + private bool _isPool; + internal string Tag { get; private set; } + internal long LockId { get; private set; } + internal long TimerId { get; private set; } + internal long CoroutineLockQueueKey { get; private set; } + internal CoroutineLock CoroutineLock { get; private set; } + + private bool _isSetResult; + private FTask _tcs; + private WaitCoroutineLockPool _waitCoroutineLockPool; + internal void Initialize(CoroutineLock coroutineLock, WaitCoroutineLockPool waitCoroutineLockPool, ref long coroutineLockQueueKey, ref long timerId, ref long lockId, string tag) + { + Tag = tag; + LockId = lockId; + TimerId = timerId; + CoroutineLock = coroutineLock; + CoroutineLockQueueKey = coroutineLockQueueKey; + _waitCoroutineLockPool = waitCoroutineLockPool; + } + /// + /// 释放协程锁 + /// + public void Dispose() + { + if (LockId == 0) + { + Log.Error("WaitCoroutineLock is already disposed"); + return; + } + + CoroutineLock.Release(CoroutineLockQueueKey); + + _tcs = null; + Tag = null; + LockId = 0; + TimerId = 0; + _isSetResult = false; + CoroutineLockQueueKey = 0; + _waitCoroutineLockPool.Return(this); + CoroutineLock = null; + _waitCoroutineLockPool = null; + } + + internal FTask Tcs + { + get { return _tcs ??= FTask.Create(); } + } + + internal void SetResult() + { + if (_isSetResult) + { + Log.Error("WaitCoroutineLock is already SetResult"); + return; + } + + _isSetResult = true; + Tcs.SetResult(this); + } + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/EntityComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/EntityComponent.cs new file mode 100644 index 0000000..5baa63e --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/EntityComponent.cs @@ -0,0 +1,471 @@ +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Runtime.InteropServices; +using Fantasy.Assembly; +using Fantasy.Async; +using Fantasy.DataStructure.Collection; +using Fantasy.Entitas; +using Fantasy.Entitas.Interface; +using Fantasy.Helper; +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS8765 // Nullability of type of parameter doesn't match overridden member (possibly because of nullability attributes). + +#pragma warning disable CS8604 // Possible null reference argument. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +namespace Fantasy.Entitas +{ + internal sealed class UpdateQueueInfo + { + public bool IsStop; + public readonly Type Type; + public readonly long RunTimeId; + + public UpdateQueueInfo(Type type, long runTimeId) + { + Type = type; + IsStop = false; + RunTimeId = runTimeId; + } + } + + internal sealed class FrameUpdateQueueInfo + { + public readonly Type Type; + public readonly long RunTimeId; + + public FrameUpdateQueueInfo(Type type, long runTimeId) + { + Type = type; + RunTimeId = runTimeId; + } + } + + internal struct CustomEntitiesSystemKey : IEquatable + { + public int CustomEventType { get; } + public Type EntitiesType { get; } + public CustomEntitiesSystemKey(int customEventType, Type entitiesType) + { + CustomEventType = customEventType; + EntitiesType = entitiesType; + } + public bool Equals(CustomEntitiesSystemKey other) + { + return CustomEventType == other.CustomEventType && EntitiesType == other.EntitiesType; + } + + public override bool Equals(object obj) + { + return obj is CustomEntitiesSystemKey other && Equals(other); + } + + public override int GetHashCode() + { + return HashCode.Combine(CustomEventType, EntitiesType); + } + } + + /// + /// Entity管理组件 + /// + public sealed class EntityComponent : Entity, ISceneUpdate, IAssembly + { + private readonly OneToManyList _assemblyList = new(); + private readonly OneToManyList _assemblyHashCodes = new(); + + private readonly Dictionary _awakeSystems = new(); + private readonly Dictionary _updateSystems = new(); + private readonly Dictionary _destroySystems = new(); + private readonly Dictionary _deserializeSystems = new(); + private readonly Dictionary _frameUpdateSystem = new(); + + private readonly OneToManyList _assemblyCustomSystemList = new(); + private readonly Dictionary _customEntitiesSystems = new Dictionary(); + + private readonly Dictionary _hashCodes = new Dictionary(); + private readonly Queue _updateQueue = new Queue(); + private readonly Queue _frameUpdateQueue = new Queue(); + private readonly Dictionary _updateQueueDic = new Dictionary(); + + internal async FTask Initialize() + { + await AssemblySystem.Register(this); + return this; + } + + #region Assembly + + public FTask Load(long assemblyIdentity) + { + var task = FTask.Create(false); + Scene?.ThreadSynchronizationContext.Post(() => + { + LoadInner(assemblyIdentity); + task.SetResult(); + }); + return task; + } + + public FTask ReLoad(long assemblyIdentity) + { + var task = FTask.Create(false); + Scene?.ThreadSynchronizationContext.Post(() => + { + OnUnLoadInner(assemblyIdentity); + LoadInner(assemblyIdentity); + task.SetResult(); + }); + + return task; + } + + public FTask OnUnLoad(long assemblyIdentity) + { + var task = FTask.Create(false); + Scene?.ThreadSynchronizationContext.Post(() => + { + OnUnLoadInner(assemblyIdentity); + task.SetResult(); + }); + return task; + } + + private void LoadInner(long assemblyIdentity) + { + foreach (var entityType in AssemblySystem.ForEach(assemblyIdentity, typeof(IEntity))) + { + _hashCodes.Add(entityType, HashCodeHelper.ComputeHash64(entityType.FullName)); + _assemblyHashCodes.Add(assemblyIdentity, entityType); + } + + foreach (var entitiesSystemType in AssemblySystem.ForEach(assemblyIdentity, typeof(IEntitiesSystem))) + { + Type entitiesType = null; + var entity = Activator.CreateInstance(entitiesSystemType); + + switch (entity) + { + case IAwakeSystem iAwakeSystem: + { + entitiesType = iAwakeSystem.EntitiesType(); + _awakeSystems.Add(entitiesType, iAwakeSystem); + break; + } + case IDestroySystem iDestroySystem: + { + entitiesType = iDestroySystem.EntitiesType(); + _destroySystems.Add(entitiesType, iDestroySystem); + break; + } + case IDeserializeSystem iDeserializeSystem: + { + entitiesType = iDeserializeSystem.EntitiesType(); + _deserializeSystems.Add(entitiesType, iDeserializeSystem); + break; + } + case IUpdateSystem iUpdateSystem: + { + entitiesType = iUpdateSystem.EntitiesType(); + _updateSystems.Add(entitiesType, iUpdateSystem); + break; + } + case IFrameUpdateSystem iFrameUpdateSystem: + { + entitiesType = iFrameUpdateSystem.EntitiesType(); + _frameUpdateSystem.Add(entitiesType, iFrameUpdateSystem); + break; + } + default: + { + Log.Error($"IEntitiesSystem not support type {entitiesSystemType}"); + return; + } + } + + _assemblyList.Add(assemblyIdentity, entitiesType); + } + + foreach (var customEntitiesSystemType in AssemblySystem.ForEach(assemblyIdentity, typeof(ICustomEntitiesSystem))) + { + var entity = (ICustomEntitiesSystem)Activator.CreateInstance(customEntitiesSystemType); + var customEntitiesSystemKey = new CustomEntitiesSystemKey(entity.CustomEventType, entity.EntitiesType()); + _customEntitiesSystems.Add(customEntitiesSystemKey, entity); + _assemblyCustomSystemList.Add(assemblyIdentity, customEntitiesSystemKey); + } + } + + private void OnUnLoadInner(long assemblyIdentity) + { + if (_assemblyHashCodes.TryGetValue(assemblyIdentity, out var entityType)) + { + foreach (var type in entityType) + { + _hashCodes.Remove(type); + } + + _assemblyHashCodes.RemoveByKey(assemblyIdentity); + } + + if (_assemblyList.TryGetValue(assemblyIdentity, out var assembly)) + { + foreach (var type in assembly) + { + _awakeSystems.Remove(type); + _updateSystems.Remove(type); + _destroySystems.Remove(type); + _deserializeSystems.Remove(type); + _frameUpdateSystem.Remove(type); + } + + _assemblyList.RemoveByKey(assemblyIdentity); + } + + if (_assemblyCustomSystemList.TryGetValue(assemblyIdentity, out var customSystemAssembly)) + { + foreach (var customEntitiesSystemKey in customSystemAssembly) + { + _customEntitiesSystems.Remove(customEntitiesSystemKey); + } + + _assemblyCustomSystemList.RemoveByKey(assemblyIdentity); + } + } + + #endregion + + #region Event + + /// + /// 触发实体的唤醒方法 + /// + /// 实体对象 + public void Awake(Entity entity) + { + if (!_awakeSystems.TryGetValue(entity.Type, out var awakeSystem)) + { + return; + } + + try + { + awakeSystem.Invoke(entity); + } + catch (Exception e) + { + Log.Error($"{entity.Type.FullName} Error {e}"); + } + } + + /// + /// 触发实体的销毁方法 + /// + /// 实体对象 + public void Destroy(Entity entity) + { + if (!_destroySystems.TryGetValue(entity.Type, out var system)) + { + return; + } + + try + { + system.Invoke(entity); + } + catch (Exception e) + { + Log.Error($"{entity.Type.FullName} Destroy Error {e}"); + } + } + + /// + /// 触发实体的反序列化方法 + /// + /// 实体对象 + public void Deserialize(Entity entity) + { + if (!_deserializeSystems.TryGetValue(entity.Type, out var system)) + { + return; + } + + try + { + system.Invoke(entity); + } + catch (Exception e) + { + Log.Error($"{entity.Type.FullName} Deserialize Error {e}"); + } + } + + #endregion + + #region CustomEvent + + public void CustomSystem(Entity entity, int customEventType) + { + var customEntitiesSystemKey = new CustomEntitiesSystemKey(customEventType, entity.Type); + + if (!_customEntitiesSystems.TryGetValue(customEntitiesSystemKey, out var system)) + { + return; + } + + try + { + system.Invoke(entity); + } + catch (Exception e) + { + Log.Error($"{entity.Type.FullName} CustomSystem Error {e}"); + } + } + + #endregion + + #region Update + + /// + /// 将实体加入更新队列,准备进行更新 + /// + /// 实体对象 + public void StartUpdate(Entity entity) + { + var type = entity.Type; + var entityRuntimeId = entity.RuntimeId; + + if (_updateSystems.ContainsKey(type)) + { + var updateQueueInfo = new UpdateQueueInfo(type, entityRuntimeId); + _updateQueue.Enqueue(updateQueueInfo); + _updateQueueDic.Add(entityRuntimeId, updateQueueInfo); + } + + if (_frameUpdateSystem.ContainsKey(type)) + { + _frameUpdateQueue.Enqueue(new FrameUpdateQueueInfo(type, entityRuntimeId)); + } + } + + /// + /// 停止实体进行更新 + /// + /// 实体对象 + public void StopUpdate(Entity entity) + { + if (!_updateQueueDic.Remove(entity.RuntimeId, out var updateQueueInfo)) + { + return; + } + + updateQueueInfo.IsStop = true; + } + + /// + /// 执行实体系统的更新逻辑 + /// + public void Update() + { + var updateQueueCount = _updateQueue.Count; + + while (updateQueueCount-- > 0) + { + var updateQueueStruct = _updateQueue.Dequeue(); + + if (updateQueueStruct.IsStop) + { + continue; + } + + if (!_updateSystems.TryGetValue(updateQueueStruct.Type, out var updateSystem)) + { + continue; + } + + var entity = Scene.GetEntity(updateQueueStruct.RunTimeId); + + if (entity == null || entity.IsDisposed) + { + _updateQueueDic.Remove(updateQueueStruct.RunTimeId); + continue; + } + + _updateQueue.Enqueue(updateQueueStruct); + + try + { + updateSystem.Invoke(entity); + } + catch (Exception e) + { + Log.Error($"{updateQueueStruct.Type.FullName} Update Error {e}"); + } + } + } + + /// + /// 执行实体系统的帧更新逻辑 + /// + public void FrameUpdate() + { + var count = _frameUpdateQueue.Count; + + while (count-- > 0) + { + var frameUpdateQueueStruct = _frameUpdateQueue.Dequeue(); + + if (!_frameUpdateSystem.TryGetValue(frameUpdateQueueStruct.Type, out var frameUpdateSystem)) + { + continue; + } + + var entity = Scene.GetEntity(frameUpdateQueueStruct.RunTimeId); + + if (entity == null || entity.IsDisposed) + { + continue; + } + + _frameUpdateQueue.Enqueue(frameUpdateQueueStruct); + + try + { + frameUpdateSystem.Invoke(entity); + } + catch (Exception e) + { + Log.Error($"{frameUpdateQueueStruct.Type.FullName} FrameUpdate Error {e}"); + } + } + } + + #endregion + + public long GetHashCode(Type type) + { + return _hashCodes[type]; + } + + /// + /// 释放实体系统管理器资源 + /// + public override void Dispose() + { + _updateQueue.Clear(); + _frameUpdateQueue.Clear(); + + _assemblyList.Clear(); + _awakeSystems.Clear(); + _updateSystems.Clear(); + _destroySystems.Clear(); + _deserializeSystems.Clear(); + _frameUpdateSystem.Clear(); + + AssemblySystem.UnRegister(this); + base.Dispose(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/EventComponent/EventComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/EventComponent/EventComponent.cs new file mode 100644 index 0000000..30ca61e --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/EventComponent/EventComponent.cs @@ -0,0 +1,252 @@ +using System; +using System.Reflection; +using Fantasy.Assembly; +using Fantasy.Async; +using Fantasy.DataStructure.Collection; +using Fantasy.Entitas; + +// ReSharper disable PossibleMultipleEnumeration +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +// ReSharper disable MethodOverloadWithOptionalParameter + +namespace Fantasy.Event +{ + internal sealed class EventCache + { + public readonly Type EnventType; + public readonly object Obj; + public EventCache(Type enventType, object obj) + { + EnventType = enventType; + Obj = obj; + } + } + + public sealed class EventComponent : Entity, IAssembly + { + private readonly OneToManyList _events = new(); + private readonly OneToManyList _asyncEvents = new(); + private readonly OneToManyList _assemblyEvents = new(); + private readonly OneToManyList _assemblyAsyncEvents = new(); + + internal async FTask Initialize() + { + await AssemblySystem.Register(this); + return this; + } + + #region Assembly + + public async FTask Load(long assemblyIdentity) + { + var tcs = FTask.Create(false); + Scene?.ThreadSynchronizationContext.Post(() => + { + LoadInner(assemblyIdentity); + tcs.SetResult(); + }); + await tcs; + } + + public async FTask ReLoad(long assemblyIdentity) + { + var tcs = FTask.Create(false); + Scene?.ThreadSynchronizationContext.Post(() => + { + OnUnLoadInner(assemblyIdentity); + LoadInner(assemblyIdentity); + tcs.SetResult(); + }); + await tcs; + } + + public async FTask OnUnLoad(long assemblyIdentity) + { + var tcs = FTask.Create(false); + Scene?.ThreadSynchronizationContext.Post(() => + { + OnUnLoadInner(assemblyIdentity); + tcs.SetResult(); + }); + await tcs; + } + + private void LoadInner(long assemblyIdentity) + { + foreach (var type in AssemblySystem.ForEach(assemblyIdentity, typeof(IEvent))) + { + var @event = (IEvent)Activator.CreateInstance(type); + + if (@event == null) + { + continue; + } + + var eventType = @event.EventType(); + _events.Add(eventType, @event); + _assemblyEvents.Add(assemblyIdentity, new EventCache(eventType, @event)); + } + + foreach (var type in AssemblySystem.ForEach(assemblyIdentity, typeof(IAsyncEvent))) + { + var @event = (IAsyncEvent)Activator.CreateInstance(type); + + if (@event == null) + { + continue; + } + + var eventType = @event.EventType(); + _asyncEvents.Add(eventType, @event); + _assemblyAsyncEvents.Add(assemblyIdentity, new EventCache(eventType, @event)); + } + } + + private void OnUnLoadInner(long assemblyIdentity) + { + if (_assemblyEvents.TryGetValue(assemblyIdentity, out var events)) + { + foreach (var @event in events) + { + _events.RemoveValue(@event.EnventType, (IEvent)@event.Obj); + } + + _assemblyEvents.RemoveByKey(assemblyIdentity); + } + + if (_assemblyAsyncEvents.TryGetValue(assemblyIdentity, out var asyncEvents)) + { + foreach (var @event in asyncEvents) + { + _asyncEvents.RemoveValue(@event.EnventType, (IAsyncEvent)@event.Obj); + } + + _assemblyAsyncEvents.RemoveByKey(assemblyIdentity); + } + } + + #endregion + + #region Publish + + /// + /// 发布一个值类型的事件数据。 + /// + /// 事件数据类型(值类型)。 + /// 事件数据实例。 + public void Publish(TEventData eventData) where TEventData : struct + { + if (!_events.TryGetValue(typeof(TEventData), out var list)) + { + return; + } + + foreach (var @event in list) + { + try + { + @event.Invoke(eventData); + } + catch (Exception e) + { + Log.Error(e); + } + } + } + + /// + /// 发布一个继承自 Entity 的事件数据。 + /// + /// 事件数据类型(继承自 Entity)。 + /// 事件数据实例。 + /// 是否释放事件数据。 + public void Publish(TEventData eventData, bool isDisposed = true) where TEventData : Entity + { + if (!_events.TryGetValue(typeof(TEventData), out var list)) + { + return; + } + + foreach (var @event in list) + { + try + { + @event.Invoke(eventData); + } + catch (Exception e) + { + Log.Error(e); + } + } + + if (isDisposed) + { + eventData.Dispose(); + } + } + + /// + /// 异步发布一个值类型的事件数据。 + /// + /// 事件数据类型(值类型)。 + /// 事件数据实例。 + /// 表示异步操作的任务。 + public async FTask PublishAsync(TEventData eventData) where TEventData : struct + { + if (!_asyncEvents.TryGetValue(typeof(TEventData), out var list)) + { + return; + } + + using var tasks = ListPool.Create(); + + foreach (var @event in list) + { + tasks.Add(@event.InvokeAsync(eventData)); + } + + await FTask.WaitAll(tasks); + } + + /// + /// 异步发布一个继承自 Entity 的事件数据。 + /// + /// 事件数据类型(继承自 Entity)。 + /// 事件数据实例。 + /// 是否释放事件数据。 + /// 表示异步操作的任务。 + public async FTask PublishAsync(TEventData eventData, bool isDisposed = true) where TEventData : Entity + { + if (!_asyncEvents.TryGetValue(eventData.GetType(), out var list)) + { + return; + } + + using var tasks = ListPool.Create(); + + foreach (var @event in list) + { + tasks.Add(@event.InvokeAsync(eventData)); + } + + await FTask.WaitAll(tasks); + + if (isDisposed) + { + eventData.Dispose(); + } + } + + #endregion + + public override void Dispose() + { + _events.Clear(); + _asyncEvents.Clear(); + _assemblyEvents.Clear(); + _assemblyAsyncEvents.Clear(); + base.Dispose(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/EventComponent/Interface/IEvent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/EventComponent/Interface/IEvent.cs new file mode 100644 index 0000000..5314995 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/EventComponent/Interface/IEvent.cs @@ -0,0 +1,112 @@ +using System; +using Fantasy.Async; + +namespace Fantasy.Event +{ + /// + /// 事件的接口 + /// + public interface IEvent + { + /// + /// 用于指定事件的Type + /// + /// + Type EventType(); + /// + /// 时间内部使用的入口 + /// + /// + void Invoke(object self); + } + + /// + /// 异步事件的接口 + /// + public interface IAsyncEvent + { + /// + /// + /// + /// + Type EventType(); + /// + /// + /// + /// + FTask InvokeAsync(object self); + } + + /// + /// 事件的抽象类,要使用事件必须要继承这个抽象接口。 + /// + /// 要监听的事件泛型类型 + public abstract class EventSystem : IEvent + { + private readonly Type _selfType = typeof(T); + /// + /// + /// + /// + public Type EventType() + { + return _selfType; + } + /// + /// 事件调用的方法,要在这个方法里编写事件发生的逻辑 + /// + /// + protected abstract void Handler(T self); + /// + /// + /// + /// + public void Invoke(object self) + { + try + { + Handler((T) self); + } + catch (Exception e) + { + Log.Error($"{_selfType.Name} Error {e}"); + } + } + } + /// + /// 异步事件的抽象类,要使用事件必须要继承这个抽象接口。 + /// + /// 要监听的事件泛型类型 + public abstract class AsyncEventSystem : IAsyncEvent + { + private readonly Type _selfType = typeof(T); + /// + /// + /// + /// + public Type EventType() + { + return _selfType; + } + /// + /// 事件调用的方法,要在这个方法里编写事件发生的逻辑 + /// + /// + protected abstract FTask Handler(T self); + /// + /// + /// + /// + public async FTask InvokeAsync(object self) + { + try + { + await Handler((T) self); + } + catch (Exception e) + { + Log.Error($"{_selfType.Name} Error {e}"); + } + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/MessagePoolComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/MessagePoolComponent.cs new file mode 100644 index 0000000..f1ddb23 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/MessagePoolComponent.cs @@ -0,0 +1,139 @@ +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract + +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using Fantasy.DataStructure.Collection; +using Fantasy.Entitas; +using Fantasy.Pool; +using Fantasy.Serialize; + +namespace Fantasy.Entitas +{ + /// + /// 消息的对象池组件 + /// + public sealed class MessagePoolComponent : Entity + { + private int _poolCount; + private const int MaxCapacity = ushort.MaxValue; + private readonly OneToManyQueue _poolQueue = new OneToManyQueue(); + private readonly Dictionary> _typeCheckCache = new Dictionary>(); + /// + /// 销毁组件 + /// + public override void Dispose() + { + _poolCount = 0; + _poolQueue.Clear(); + _typeCheckCache.Clear(); + base.Dispose(); + } + /// + /// 从对象池里获取一个消息,如果没有就创建一个新的 + /// + /// 消息的泛型类型 + /// + public T Rent() where T : AMessage, new() + { + if (!_poolQueue.TryDequeue(typeof(T), out var queue)) + { + var instance = new T(); + instance.SetScene(Scene); + instance.SetIsPool(true); + return instance; + } + + queue.SetIsPool(true); + _poolCount--; + return (T)queue; + } + + /// + /// + /// + /// 消息的类型 + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public AMessage Rent(Type type) + { + if (!_poolQueue.TryDequeue(type, out var queue)) + { + if (!_typeCheckCache.TryGetValue(type, out var createInstance)) + { + if (!typeof(AMessage).IsAssignableFrom(type)) + { + throw new NotSupportedException($"{this.GetType().FullName} Type:{type.FullName} must inherit from IPool"); + } + else + { + createInstance = CreateInstance.CreateMessage(type); + _typeCheckCache[type] = createInstance; + } + } + + var instance = createInstance(); + instance.SetScene(Scene); + instance.SetIsPool(true); + return instance; + } + + queue.SetIsPool(true); + _poolCount--; + return queue; + } + /// + /// 返还一个消息到对象池中 + /// + /// + public void Return(AMessage obj) + { + if (obj == null) + { + return; + } + + if (!obj.IsPool()) + { + return; + } + + if (_poolCount >= MaxCapacity) + { + return; + } + + _poolCount++; + obj.SetIsPool(false); + _poolQueue.Enqueue(obj.GetType(), obj); + } + + /// + /// + /// + /// 返还的消息 + /// 返还的消息泛型类型 + public void Return(T obj) where T : AMessage + { + if (obj == null) + { + return; + } + + if (!obj.IsPool()) + { + return; + } + + if (_poolCount >= MaxCapacity) + { + return; + } + + _poolCount++; + obj.SetIsPool(false); + _poolQueue.Enqueue(typeof(T), obj); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/SingleCollectionComponent/SingleCollectionComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/SingleCollectionComponent/SingleCollectionComponent.cs new file mode 100644 index 0000000..5c0969d --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/SingleCollectionComponent/SingleCollectionComponent.cs @@ -0,0 +1,167 @@ +// ReSharper disable SuspiciousTypeConversion.Global + +using Fantasy.Assembly; +using Fantasy.Async; +using Fantasy.DataStructure.Collection; +using Fantasy.Entitas; +using Fantasy.Entitas.Interface; +using Fantasy.Helper; + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS8604 // Possible null reference argument. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#if FANTASY_NET +namespace Fantasy.SingleCollection +{ + /// + /// 用于处理Entity下的实体进行数据库分表存储的组件 + /// + public sealed class SingleCollectionComponent : Entity, IAssembly + { + private CoroutineLock _coroutineLock; + private readonly OneToManyHashSet _collection = new OneToManyHashSet(); + + private readonly OneToManyList _assemblyCollections = + new OneToManyList(); + + private sealed class SingleCollectionInfo(Type rootType, string collectionName) + { + public readonly Type RootType = rootType; + public readonly string CollectionName = collectionName; + } + + internal async FTask Initialize() + { + var coroutineLockType = HashCodeHelper.ComputeHash64(GetType().FullName); + _coroutineLock = Scene.CoroutineLockComponent.Create(coroutineLockType); + await AssemblySystem.Register(this); + return this; + } + + #region Assembly + + public async FTask Load(long assemblyIdentity) + { + var tcs = FTask.Create(false); + Scene?.ThreadSynchronizationContext.Post(() => + { + LoadInner(assemblyIdentity); + tcs.SetResult(); + }); + await tcs; + } + + public async FTask ReLoad(long assemblyIdentity) + { + var tcs = FTask.Create(false); + Scene?.ThreadSynchronizationContext.Post(() => + { + OnUnLoadInner(assemblyIdentity); + LoadInner(assemblyIdentity); + tcs.SetResult(); + }); + await tcs; + } + + public async FTask OnUnLoad(long assemblyIdentity) + { + var tcs = FTask.Create(false); + Scene?.ThreadSynchronizationContext.Post(() => + { + OnUnLoadInner(assemblyIdentity); + tcs.SetResult(); + }); + await tcs; + } + + private void LoadInner(long assemblyIdentity) + { + foreach (var type in AssemblySystem.ForEach(assemblyIdentity, typeof(ISupportedSingleCollection))) + { + var customAttributes = type.GetCustomAttributes(typeof(SingleCollectionAttribute), false); + if (customAttributes.Length == 0) + { + Log.Error( + $"type {type.FullName} Implemented the interface of ISingleCollection, requiring the implementation of SingleCollectionAttribute"); + continue; + } + + var singleCollectionAttribute = (SingleCollectionAttribute)customAttributes[0]; + var rootType = singleCollectionAttribute.RootType; + var collectionName = singleCollectionAttribute.CollectionName; + _collection.Add(rootType, collectionName); + _assemblyCollections.Add(assemblyIdentity, new SingleCollectionInfo(rootType, collectionName)); + } + } + + private void OnUnLoadInner(long assemblyIdentity) + { + if (!_assemblyCollections.TryGetValue(assemblyIdentity, out var types)) + { + return; + } + + foreach (var singleCollectionInfo in types) + { + _collection.RemoveValue(singleCollectionInfo.RootType, singleCollectionInfo.CollectionName); + } + + _assemblyCollections.RemoveByKey(assemblyIdentity); + } + + #endregion + + #region Collections + + /// + /// 通过数据库获取某一个实体类型下所有的分表数据到当前实体下,并且会自动建立父子关系。 + /// + /// 实体实例 + /// 实体泛型类型 + public async FTask GetCollections(T entity) where T : Entity, ISingleCollectionRoot + { + if (!_collection.TryGetValue(typeof(T), out var collections)) + { + return; + } + + var worldDateBase = Scene.World.DataBase; + + using (await _coroutineLock.Wait(entity.Id)) + { + foreach (var collectionName in collections) + { + var singleCollection = await worldDateBase.QueryNotLock(entity.Id, true, collectionName); + entity.AddComponent(singleCollection); + } + } + } + + /// + /// 存储当前实体下支持分表的组件到数据中,包括存储实体本身。 + /// + /// 实体实例 + /// 实体泛型类型 + public async FTask SaveCollections(T entity) where T : Entity, ISingleCollectionRoot + { + using var collections = ListPool.Create(); + + foreach (var treeEntity in entity.ForEachSingleCollection) + { + if (treeEntity is not ISupportedSingleCollection) + { + continue; + } + + collections.Add(treeEntity); + } + + collections.Add(entity); + await entity.Scene.World.DataBase.Save(entity.Id, collections); + } + + #endregion + } +} + +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/Interface/TimerHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/Interface/TimerHandler.cs new file mode 100644 index 0000000..9e1f4c9 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/Interface/TimerHandler.cs @@ -0,0 +1,10 @@ +using Fantasy.Event; + +namespace Fantasy.Timer +{ + /// + /// 计时器抽象类,提供了一个基础框架,用于创建处理计时器事件的具体类。 + /// + /// 事件的类型参数 + public abstract class TimerHandler : EventSystem { } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimeWheel/ScheduledTask.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimeWheel/ScheduledTask.cs new file mode 100644 index 0000000..d644386 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimeWheel/ScheduledTask.cs @@ -0,0 +1,49 @@ +// #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +// #pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +// namespace Fantasy +// { +// public sealed class ScheduledTaskPool : PoolCore +// { +// public ScheduledTaskPool() : base(2000) { } +// +// public ScheduledTask Rent(Action action, ref int rounds, ref int finalSlot) +// { +// var scheduledTask = Rent(); +// scheduledTask.Rounds = rounds; +// scheduledTask.Action = action; +// scheduledTask.FinalSlot = finalSlot; +// return scheduledTask; +// } +// +// public override void Return(ScheduledTask item) +// { +// base.Return(item); +// item.Dispose(); +// } +// } +// +// public sealed class ScheduledTask : IPool, IDisposable +// { +// public int Rounds; +// public int FinalSlot; +// public Action Action; +// public LinkedListNode Node; +// +// public bool IsPool { get; set; } +// public ScheduledTask() { } +// public ScheduledTask(Action action, ref int rounds, ref int finalSlot) +// { +// Action = action; +// Rounds = rounds; +// FinalSlot = finalSlot; +// } +// +// public void Dispose() +// { +// Rounds = 0; +// FinalSlot = 0; +// Action = null; +// Node = null; +// } +// } +// } \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimeWheel/TimeWheel.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimeWheel/TimeWheel.cs new file mode 100644 index 0000000..58916b1 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimeWheel/TimeWheel.cs @@ -0,0 +1,134 @@ +// using System.Runtime.CompilerServices; +// // ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +// #pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +// +// namespace Fantasy +// { +// public sealed class TimeWheel +// { +// private int _currentIndex; +// private ScheduledTaskPool _scheduledTaskPool; +// +// private readonly Scene _scene; +// private readonly int _wheelSize; +// private readonly int _tickDuration; +// private readonly TimeWheel _upperLevelWheel; +// private readonly LinkedList[] _wheel; +// private readonly Queue _tasksToReschedule = new Queue(); +// private readonly Dictionary _taskDictionary = new Dictionary(); +// +// public TimeWheel(TimerComponent timerComponent, int wheelSize, int tickDuration, TimeWheel upperLevelWheel = null) +// { +// _scene = timerComponent.Scene; +// _wheelSize = wheelSize; +// _tickDuration = tickDuration; +// _upperLevelWheel = upperLevelWheel; +// _scheduledTaskPool = timerComponent.ScheduledTaskPool; +// _wheel = new LinkedList[_wheelSize]; +// for (var i = 0; i < wheelSize; i++) +// { +// _wheel[i] = new LinkedList(); +// } +// } +// +// public long Schedule(Action action, int delay) +// { +// var ticks = delay / _tickDuration; +// var futureIndex = ticks + _currentIndex; +// var rounds = futureIndex / _wheelSize; +// var slot = futureIndex % _wheelSize; +// +// if (slot == 0) +// { +// slot = _wheelSize - 1; +// rounds--; +// } +// else +// { +// slot--; +// } +// +// var taskId = _scene.RuntimeIdFactory.Create; +// var task = _scheduledTaskPool.Rent(action, ref rounds, ref slot); +// task.Node = _wheel[slot].AddLast(task); +// _taskDictionary.Add(taskId, task); +// Console.WriteLine($"Schedule rounds:{rounds} slot:{slot} _currentIndex:{_currentIndex}"); +// return taskId; +// } +// +// public bool Remove(int taskId) +// { +// if (!_taskDictionary.TryGetValue(taskId, out var task)) +// { +// return false; +// } +// +// _taskDictionary.Remove(taskId); +// _wheel[task.FinalSlot].Remove(task.Node); +// _scheduledTaskPool.Return(task); +// Console.WriteLine("找到已经删除了任务"); +// return true; +// } +// +// public void Tick(object? state) +// { +// var currentWheel = _wheel[_currentIndex]; +// +// if (currentWheel.Count == 0) +// { +// AdvanceIndex(); +// return; +// } +// +// var currentNode = currentWheel.First; +// +// while (currentNode != null) +// { +// var nextNode = currentNode.Next; +// var task = currentNode.Value; +// +// if (task.Rounds <= 0 && task.FinalSlot == _currentIndex) +// { +// try +// { +// task.Action.Invoke(); +// } +// catch (Exception ex) +// { +// Log.Error($"Exception during task execution: {ex.Message}"); +// } +// } +// else +// { +// task.Rounds--; +// _tasksToReschedule.Enqueue(task); +// } +// +// currentWheel.Remove(currentNode); +// currentNode = nextNode; +// } +// +// RescheduleTasks(); +// AdvanceIndex(); +// } +// +// [MethodImpl(MethodImplOptions.AggressiveInlining)] +// private void AdvanceIndex() +// { +// _currentIndex = (_currentIndex + 1) % _wheelSize; +// if (_currentIndex == 0 && _upperLevelWheel != null) +// { +// _upperLevelWheel.Tick(null); +// } +// } +// +// [MethodImpl(MethodImplOptions.AggressiveInlining)] +// private void RescheduleTasks() +// { +// while (_tasksToReschedule.TryDequeue(out var task)) +// { +// _wheel[task.FinalSlot].AddLast(task); +// } +// } +// } +// } \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerAction.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerAction.cs new file mode 100644 index 0000000..2a836ab --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerAction.cs @@ -0,0 +1,27 @@ +using System; +using System.Runtime.InteropServices; + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS8625 +#pragma warning disable CS8618 + +namespace Fantasy.Timer +{ + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct TimerAction + { + public long TimerId; + public long StartTime; + public long TriggerTime; + public readonly object Callback; + public readonly TimerType TimerType; + public TimerAction(long timerId, TimerType timerType, long startTime, long triggerTime, object callback) + { + TimerId = timerId; + Callback = callback; + TimerType = timerType; + StartTime = startTime; + TriggerTime = triggerTime; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerComponent.cs new file mode 100644 index 0000000..ffa7864 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerComponent.cs @@ -0,0 +1,52 @@ +// ReSharper disable ForCanBeConvertedToForeach + +using Fantasy.Entitas; +using Fantasy.Entitas.Interface; + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#if FANTASY_UNITY +using UnityEngine; +#endif +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +namespace Fantasy.Timer +{ + public sealed class TimerComponentUpdateSystem : UpdateSystem + { + protected override void Update(TimerComponent self) + { + self.Update(); + } + } + + /// + /// 时间调度组件 + /// + public sealed class TimerComponent : Entity + { + /// + /// 使用系统时间创建的计时器核心。 + /// + public TimerSchedulerNet Net { get; private set; } +#if FANTASY_UNITY + /// + /// 使用 Unity 时间创建的计时器核心。 + /// + public TimerSchedulerNetUnity Unity { get; private set; } +#endif + internal TimerComponent Initialize() + { + Net = new TimerSchedulerNet(Scene); +#if FANTASY_UNITY + Unity = new TimerSchedulerNetUnity(Scene); +#endif + return this; + } + public void Update() + { + Net.Update(); +#if FANTASY_UNITY + Unity.Update(); +#endif + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerScheduler/TimerSchedulerNet.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerScheduler/TimerSchedulerNet.cs new file mode 100644 index 0000000..26581f8 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerScheduler/TimerSchedulerNet.cs @@ -0,0 +1,390 @@ +using System; +using System.Collections.Generic; +using Fantasy.Async; +using Fantasy.DataStructure.Collection; +using Fantasy.Helper; +// ReSharper disable UnusedParameter.Global + +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. + +namespace Fantasy.Timer +{ + /// + /// 基于系统事件的任务调度系统 + /// + public sealed class TimerSchedulerNet + { + private readonly Scene _scene; + private long _idGenerator; + private long _minTime; // 最小时间 + private readonly Queue _timeOutTime = new Queue(); + private readonly Queue _timeOutTimerIds = new Queue(); + private readonly Dictionary _timerActions = new Dictionary(); + private readonly SortedOneToManyList _timeId = new(); // 时间与计时器ID的有序一对多列表 + private long GetId => ++_idGenerator; + /// + /// 构造函数 + /// + /// 当前的Scene + public TimerSchedulerNet(Scene scene) + { + _scene = scene; + } + + private long Now() + { + return TimeHelper.Now; + } + + /// + /// 驱动方法,只有调用这个方法任务系统才会正常运转。 + /// + public void Update() + { + if (_timeId.Count == 0) + { + return; + } + + var currentTime = Now(); + + if (currentTime < _minTime) + { + return; + } + + // 遍历时间ID列表,查找超时的计时器任务 + foreach (var (key, _) in _timeId) + { + if (key > currentTime) + { + _minTime = key; + break; + } + + _timeOutTime.Enqueue(key); + } + + // 处理超时的计时器任务 + while (_timeOutTime.TryDequeue(out var time)) + { + var timerIds = _timeId[time]; + for (var i = 0; i < timerIds.Count; ++i) + { + _timeOutTimerIds.Enqueue(timerIds[i]); + } + + _timeId.Remove(time); + // _timeId.RemoveKey(time); + } + + if (_timeId.Count == 0) + { + _minTime = long.MaxValue; + } + + // 执行超时的计时器任务的回调操作 + while (_timeOutTimerIds.TryDequeue(out var timerId)) + { + if (!_timerActions.Remove(timerId, out var timerAction)) + { + continue; + } + + // 根据计时器类型执行不同的操作 + switch (timerAction.TimerType) + { + case TimerType.OnceWaitTimer: + { + var tcs = (FTask)timerAction.Callback; + tcs.SetResult(true); + break; + } + case TimerType.OnceTimer: + { + if (timerAction.Callback is not Action action) + { + Log.Error($"timerAction {timerAction.ToJson()}"); + break; + } + + action(); + break; + } + case TimerType.RepeatedTimer: + { + if (timerAction.Callback is not Action action) + { + Log.Error($"timerAction {timerAction.ToJson()}"); + break; + } + + timerAction.StartTime = Now(); + AddTimer(ref timerAction); + action(); + break; + } + } + } + } + + private void AddTimer(ref TimerAction timer) + { + var tillTime = timer.StartTime + timer.TriggerTime; + _timeId.Add(tillTime, timer.TimerId); + _timerActions.Add(timer.TimerId, timer); + + if (tillTime < _minTime) + { + _minTime = tillTime; + } + } + + /// + /// 异步等待指定时间。 + /// + /// 等待的时间长度。 + /// 取消令牌。 + /// 等待是否成功。 + public async FTask WaitAsync(long time, FCancellationToken cancellationToken = null) + { + if (time <= 0) + { + return true; + } + + var now = Now(); + var timerId = GetId; + var tcs = FTask.Create(); + var timerAction = new TimerAction(timerId, TimerType.OnceWaitTimer, now, time, tcs); + + void CancelActionVoid() + { + if (Remove(timerId)) + { + tcs.SetResult(false); + } + } + + bool result; + + try + { + cancellationToken?.Add(CancelActionVoid); + AddTimer(ref timerAction); + result = await tcs; + } + finally + { + cancellationToken?.Remove(CancelActionVoid); + } + + return result; + } + + /// + /// 异步等待直到指定时间。 + /// + /// 等待的目标时间。 + /// 取消令牌。 + /// 等待是否成功。 + public async FTask WaitTillAsync(long tillTime, FCancellationToken cancellationToken = null) + { + var now = Now(); + + if (now >= tillTime) + { + return true; + } + + var timerId = GetId; + var tcs = FTask.Create(); + var timerAction = new TimerAction(timerId, TimerType.OnceWaitTimer, now, tillTime - now, tcs); + + void CancelActionVoid() + { + if (Remove(timerId)) + { + tcs.SetResult(false); + } + } + + bool result; + + try + { + cancellationToken?.Add(CancelActionVoid); + AddTimer(ref timerAction); + result = await tcs; + } + finally + { + cancellationToken?.Remove(CancelActionVoid); + } + + return result; + } + + /// + /// 异步等待一帧时间。 + /// + /// 等待是否成功。 + public async FTask WaitFrameAsync() + { +#if FANTASY_NET + await WaitAsync(100); +#else + await WaitAsync(1); +#endif + } + + /// + /// 创建一个只执行一次的计时器,直到指定时间 + /// + /// 计时器执行的目标时间。 + /// 计时器回调方法。 + /// + public long OnceTimer(long time, Action action) + { + var now = Now(); + var timerId = GetId; + var timerAction = new TimerAction(timerId, TimerType.OnceTimer, now, time, action); + AddTimer(ref timerAction); + return timerId; + } + + /// + /// 创建一个只执行一次的计时器,直到指定时间。 + /// + /// 计时器执行的目标时间。 + /// 计时器回调方法。 + /// 计时器的 ID。 + public long OnceTillTimer(long tillTime, Action action) + { + var now = Now(); + + if (tillTime < now) + { + Log.Error($"new once time too small tillTime:{tillTime} Now:{now}"); + } + + var timerId = GetId; + var timerAction = new TimerAction(timerId, TimerType.OnceTimer, now, tillTime - now, action); + AddTimer(ref timerAction); + return timerId; + } + + /// + /// 创建一个只执行一次的计时器,用于发布指定类型的事件。 + /// + /// 事件类型。 + /// 计时器执行的延迟时间。 + /// 事件处理器类型。 + /// 计时器的 ID。 + public long OnceTimer(long time, T timerHandlerType) where T : struct + { + void OnceTimerVoid() + { + _scene.EventComponent.Publish(timerHandlerType); + } + + return OnceTimer(time, OnceTimerVoid); + } + + /// + /// 创建一个只执行一次的计时器,直到指定时间,用于发布指定类型的事件。 + /// + /// 事件类型。 + /// 计时器执行的目标时间。 + /// 事件处理器类型。 + /// 计时器的 ID。 + public long OnceTillTimer(long tillTime, T timerHandlerType) where T : struct + { + void OnceTillTimerVoid() + { + _scene.EventComponent.Publish(timerHandlerType); + } + + return OnceTillTimer(tillTime, OnceTillTimerVoid); + } + + /// + /// 创建一个帧任务 + /// + /// + /// + public long FrameTimer(Action action) + { +#if FANTASY_NET + return RepeatedTimerInner(100, action); +#else + return RepeatedTimerInner(0, action); +#endif + } + + /// + /// 创建一个重复执行的计时器。 + /// + /// 计时器重复间隔的时间。 + /// 计时器回调方法。 + /// 计时器的 ID。 + public long RepeatedTimer(long time, Action action) + { + if (time < 0) + { + Log.Error($"time too small: {time}"); + return 0; + } + + return RepeatedTimerInner(time, action); + } + + /// + /// 创建一个重复执行的计时器,用于发布指定类型的事件。 + /// + /// 事件类型。 + /// 计时器重复间隔的时间。 + /// 事件处理器类型。 + /// 计时器的 ID。 + public long RepeatedTimer(long time, T timerHandlerType) where T : struct + { + void RepeatedTimerVoid() + { + _scene.EventComponent.Publish(timerHandlerType); + } + + return RepeatedTimer(time, RepeatedTimerVoid); + } + + private long RepeatedTimerInner(long time, Action action) + { + var now = Now(); + var timerId = GetId; + var timerAction = new TimerAction(timerId, TimerType.RepeatedTimer, now, time, action); + AddTimer(ref timerAction); + return timerId; + } + + /// + /// 移除指定 ID 的计时器。 + /// + /// + /// + public bool Remove(ref long timerId) + { + var id = timerId; + timerId = 0; + return Remove(id); + } + + /// + /// 移除指定 ID 的计时器。 + /// + /// 计时器的 ID。 + public bool Remove(long timerId) + { + return timerId != 0 && _timerActions.Remove(timerId, out _); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerScheduler/TimerSchedulerNetUnity.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerScheduler/TimerSchedulerNetUnity.cs new file mode 100644 index 0000000..f00bfe4 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerScheduler/TimerSchedulerNetUnity.cs @@ -0,0 +1,372 @@ +#if FANTASY_UNITY +using System; +using System.Collections.Generic; +using Fantasy.Async; +using Fantasy.DataStructure.Collection; +using Fantasy.Helper; +using UnityEngine; +namespace Fantasy.Timer +{ + public sealed class TimerSchedulerNetUnity + { + private readonly Scene _scene; + private long _idGenerator; + private long _minTime; // 最小时间 + private readonly Queue _timeOutTime = new Queue(); + private readonly Queue _timeOutTimerIds = new Queue(); + private readonly Dictionary _timerActions = new Dictionary(); + private readonly SortedOneToManyList _timeId = new(); // 时间与计时器ID的有序一对多列表 + private long GetId => ++_idGenerator; + public TimerSchedulerNetUnity(Scene scene) + { + _scene = scene; + } + + private long Now() + { + return (long)(Time.time * 1000); + } + + public void Update() + { + if (_timeId.Count == 0) + { + return; + } + + var currentTime = Now(); + + if (currentTime < _minTime) + { + return; + } + + // 遍历时间ID列表,查找超时的计时器任务 + foreach (var (key, _) in _timeId) + { + if (key > currentTime) + { + _minTime = key; + break; + } + + _timeOutTime.Enqueue(key); + } + + // 处理超时的计时器任务 + while (_timeOutTime.TryDequeue(out var time)) + { + var timerIds = _timeId[time]; + for (var i = 0; i < timerIds.Count; ++i) + { + _timeOutTimerIds.Enqueue(timerIds[i]); + } + + _timeId.Remove(time); + // _timeId.RemoveKey(time); + } + + if (_timeId.Count == 0) + { + _minTime = long.MaxValue; + } + + // 执行超时的计时器任务的回调操作 + while (_timeOutTimerIds.TryDequeue(out var timerId)) + { + if (!_timerActions.Remove(timerId, out var timerAction)) + { + continue; + } + + // 根据计时器类型执行不同的操作 + switch (timerAction.TimerType) + { + case TimerType.OnceWaitTimer: + { + var tcs = (FTask)timerAction.Callback; + tcs.SetResult(true); + break; + } + case TimerType.OnceTimer: + { + if (timerAction.Callback is not Action action) + { + Log.Error($"timerAction {timerAction.ToJson()}"); + break; + } + + action(); + break; + } + case TimerType.RepeatedTimer: + { + if (timerAction.Callback is not Action action) + { + Log.Error($"timerAction {timerAction.ToJson()}"); + break; + } + + timerAction.StartTime = Now(); + AddTimer(ref timerAction); + action(); + break; + } + } + } + } + + private void AddTimer(ref TimerAction timer) + { + var tillTime = timer.StartTime + timer.TriggerTime; + _timeId.Add(tillTime, timer.TimerId); + _timerActions.Add(timer.TimerId, timer); + + if (tillTime < _minTime) + { + _minTime = tillTime; + } + } + + /// + /// 异步等待指定时间。 + /// + /// 等待的时间长度。 + /// 可选的取消令牌。 + /// 等待是否成功。 + public async FTask WaitAsync(long time, FCancellationToken cancellationToken = null) + { + if (time <= 0) + { + return true; + } + + var now = Now(); + var timerId = GetId; + var tcs = FTask.Create(); + var timerAction = new TimerAction(timerId, TimerType.OnceWaitTimer, now, time, tcs); + + + void CancelActionVoid() + { + if (Remove(timerId)) + { + tcs.SetResult(false); + } + } + + bool result; + + try + { + cancellationToken?.Add(CancelActionVoid); + AddTimer(ref timerAction); + result =await tcs; + } + finally + { + cancellationToken?.Remove(CancelActionVoid); + } + + return result; + } + + /// + /// 异步等待直到指定时间。 + /// + /// 等待的目标时间。 + /// 可选的取消令牌。 + /// 等待是否成功。 + public async FTask WaitTillAsync(long tillTime, FCancellationToken cancellationToken = null) + { + var now = Now(); + + if (now >= tillTime) + { + return true; + } + + var timerId = GetId; + var tcs = FTask.Create(); + var timerAction = new TimerAction(timerId, TimerType.OnceWaitTimer, now, tillTime - now, tcs); + + void CancelActionVoid() + { + if (Remove(timerId)) + { + tcs.SetResult(false); + } + } + + bool result; + + try + { + cancellationToken?.Add(CancelActionVoid); + AddTimer(ref timerAction); + result = await tcs; + } + finally + { + cancellationToken?.Remove(CancelActionVoid); + } + + return result; + } + + /// + /// 异步等待一帧时间。 + /// + /// 等待是否成功。 + public async FTask WaitFrameAsync(FCancellationToken cancellationToken = null) + { + await WaitAsync(1, cancellationToken); + } + + /// + /// 创建一个只执行一次的计时器,直到指定时间 + /// + /// 计时器执行的目标时间。 + /// 计时器回调方法。 + /// + public long OnceTimer(long time, Action action) + { + var now = Now(); + var timerId = GetId; + var timerAction = new TimerAction(timerId, TimerType.OnceTimer, now, time, action); + AddTimer(ref timerAction); + return timerId; + } + + /// + /// 创建一个只执行一次的计时器,直到指定时间。 + /// + /// 计时器执行的目标时间。 + /// 计时器回调方法。 + /// 计时器的 ID。 + public long OnceTillTimer(long tillTime, Action action) + { + var now = Now(); + + if (tillTime < now) + { + Log.Error($"new once time too small tillTime:{tillTime} Now:{now}"); + } + + var timerId = GetId; + var timerAction = new TimerAction(timerId, TimerType.OnceTimer, now, tillTime - now, action); + AddTimer(ref timerAction); + return timerId; + } + + /// + /// 创建一个只执行一次的计时器,用于发布指定类型的事件。 + /// + /// 事件类型。 + /// 计时器执行的延迟时间。 + /// 事件处理器类型。 + /// 计时器的 ID。 + public long OnceTimer(long time, T timerHandlerType) where T : struct + { + void OnceTimerVoid() + { + _scene.EventComponent.Publish(timerHandlerType); + } + + return OnceTimer(time, OnceTimerVoid); + } + + /// + /// 创建一个只执行一次的计时器,直到指定时间,用于发布指定类型的事件。 + /// + /// 事件类型。 + /// 计时器执行的目标时间。 + /// 事件处理器类型。 + /// 计时器的 ID。 + public long OnceTillTimer(long tillTime, T timerHandlerType) where T : struct + { + void OnceTillTimerVoid() + { + _scene.EventComponent.Publish(timerHandlerType); + } + + return OnceTillTimer(tillTime, OnceTillTimerVoid); + } + + /// + /// 创建一个帧任务 + /// + /// + /// + public long FrameTimer(Action action) + { + return RepeatedTimerInner(1, action); + } + + /// + /// 创建一个重复执行的计时器。 + /// + /// 计时器重复间隔的时间。 + /// 计时器回调方法。 + /// 计时器的 ID。 + public long RepeatedTimer(long time, Action action) + { + if (time < 0) + { + Log.Error($"time too small: {time}"); + return 0; + } + + return RepeatedTimerInner(time, action); + } + + /// + /// 创建一个重复执行的计时器,用于发布指定类型的事件。 + /// + /// 事件类型。 + /// 计时器重复间隔的时间。 + /// 事件处理器类型。 + /// 计时器的 ID。 + public long RepeatedTimer(long time, T timerHandlerType) where T : struct + { + void RepeatedTimerVoid() + { + _scene.EventComponent.Publish(timerHandlerType); + } + + return RepeatedTimer(time, RepeatedTimerVoid); + } + + private long RepeatedTimerInner(long time, Action action) + { + var now = Now(); + var timerId = GetId; + var timerAction = new TimerAction(timerId, TimerType.RepeatedTimer, now, time, action); + AddTimer(ref timerAction); + return timerId; + } + + /// + /// 移除指定 ID 的计时器。 + /// + /// + /// + public bool Remove(ref long timerId) + { + var id = timerId; + timerId = 0; + return Remove(id); + } + + /// + /// 移除指定 ID 的计时器。 + /// + /// 计时器的 ID。 + public bool Remove(long timerId) + { + return timerId != 0 && _timerActions.Remove(timerId, out _); + } + } +} +#endif + diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerType.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerType.cs new file mode 100644 index 0000000..6f16f80 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Component/TimerComponent/TimerType.cs @@ -0,0 +1,25 @@ +namespace Fantasy.Timer +{ + /// + /// 枚举对象TimerType + /// + public enum TimerType + { + /// + /// None + /// + None, + /// + /// 一次等待定时器 + /// + OnceWaitTimer, + /// + /// 一次性定时器 + /// + OnceTimer, + /// + /// 重复定时器 + /// + RepeatedTimer + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Entity.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Entity.cs new file mode 100644 index 0000000..0458cca --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Entity.cs @@ -0,0 +1,1051 @@ +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using Fantasy.Entitas.Interface; +using Fantasy.Pool; +using MongoDB.Bson.Serialization.Attributes; +using Newtonsoft.Json; +using ProtoBuf; +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +// ReSharper disable MergeIntoPattern +// ReSharper disable SuspiciousTypeConversion.Global +// ReSharper disable NullCoalescingConditionIsAlwaysNotNullAccordingToAPIContract +// ReSharper disable CheckNamespace +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +namespace Fantasy.Entitas +{ + /// + /// 用来表示一个Entity + /// + public interface IEntity : IDisposable, IPool { } + + /// + /// Entity的抽象类,任何Entity必须继承这个接口才可以使用 + /// + public abstract partial class Entity : IEntity + { + #region Members + + /// + /// 获取一个值,表示实体是否支持对象池。 + /// + [BsonIgnore] + [JsonIgnore] + [ProtoIgnore] + [IgnoreDataMember] + private bool _isPool; + /// + /// 实体的Id + /// + [BsonId] + [BsonElement] + [BsonIgnoreIfDefault] + [BsonDefaultValue(0L)] + public long Id { get; protected set; } + /// + /// 实体的RunTimeId,其他系统可以通过这个Id发送Route消息,这个Id也可以理解为RouteId + /// + [BsonIgnore] + [IgnoreDataMember] + [ProtoIgnore] + public long RuntimeId { get; protected set; } + /// + /// 当前实体是否已经被销毁 + /// + [BsonIgnore] + [JsonIgnore] + [IgnoreDataMember] + [ProtoIgnore] + public bool IsDisposed => RuntimeId == 0; + /// + /// 当前实体所归属的Scene + /// + [BsonIgnore] + [JsonIgnore] + [IgnoreDataMember] + [ProtoIgnore] + public Scene Scene { get; protected set; } + /// + /// 实体的父实体 + /// + [BsonIgnore] + [JsonIgnore] + [IgnoreDataMember] + [ProtoIgnore] + public Entity Parent { get; protected set; } + /// + /// 实体的真实Type + /// + [BsonIgnore] + [JsonIgnore] + [IgnoreDataMember] + [ProtoIgnore] + public Type Type { get; protected set; } +#if FANTASY_NET + [BsonElement("t")] [BsonIgnoreIfNull] private EntityList _treeDb; + [BsonElement("m")] [BsonIgnoreIfNull] private EntityList _multiDb; +#endif + [BsonIgnore] [IgnoreDataMember] [ProtoIgnore] private EntitySortedDictionary _tree; + [BsonIgnore] [IgnoreDataMember] [ProtoIgnore] private EntitySortedDictionary _multi; + + /// + /// 获得父Entity + /// + /// 父实体的泛型类型 + /// + public T GetParent() where T : Entity, new() + { + return Parent as T; + } + + /// + /// 获取当前实体的RouteId。 + /// + public long RouteId => RuntimeId; + + #endregion + + #region Create + + /// + /// 创建一个实体 + /// + /// 所属的Scene + /// 实体的Type + /// 是否从对象池创建,如果选择的是,销毁的时候同样会进入对象池 + /// 是否执行实体事件 + /// + public static Entity Create(Scene scene, Type type, bool isPool, bool isRunEvent) + { + return Create(scene, type, scene.EntityIdFactory.Create, isPool, isRunEvent); + } + + /// + /// 创建一个实体 + /// + /// 所属的Scene + /// 实体的Type + /// 指定实体的Id + /// 是否从对象池创建,如果选择的是,销毁的时候同样会进入对象池 + /// 是否执行实体事件 + /// + public static Entity Create(Scene scene, Type type, long id, bool isPool, bool isRunEvent) + { + if (!typeof(Entity).IsAssignableFrom(type)) + { + throw new NotSupportedException($"{type.FullName} Type:{type.FullName} must inherit from Entity"); + } + + Entity entity = null; + + if (isPool) + { + entity = (Entity)scene.EntityPool.Rent(type); + } + else + { + if (!scene.TypeInstance.TryGetValue(type, out var createInstance)) + { + createInstance = CreateInstance.CreateIPool(type); + scene.TypeInstance[type] = createInstance; + } + + entity = (Entity)createInstance(); + } + + entity.Scene = scene; + entity.Type = type; + entity.SetIsPool(isPool); + entity.Id = id; + entity.RuntimeId = scene.RuntimeIdFactory.Create; + scene.AddEntity(entity); + + if (isRunEvent) + { + scene.EntityComponent.Awake(entity); + scene.EntityComponent.StartUpdate(entity); + } + + return entity; + } + + /// + /// 创建一个实体 + /// + /// 所属的Scene + /// 是否从对象池创建,如果选择的是,销毁的时候同样会进入对象池 + /// 是否执行实体事件 + /// 要创建的实体泛型类型 + /// + public static T Create(Scene scene, bool isPool, bool isRunEvent) where T : Entity, new() + { + return Create(scene, scene.EntityIdFactory.Create, isPool, isRunEvent); + } + + /// + /// 创建一个实体 + /// + /// 所属的Scene + /// 指定实体的Id + /// 是否从对象池创建,如果选择的是,销毁的时候同样会进入对象池 + /// 是否执行实体事件 + /// 要创建的实体泛型类型 + /// + public static T Create(Scene scene, long id, bool isPool, bool isRunEvent) where T : Entity, new() + { + var entity = isPool ? scene.EntityPool.Rent() : new T(); + entity.Scene = scene; + entity.Type = typeof(T); + entity.SetIsPool(isPool); + entity.Id = id; + entity.RuntimeId = scene.RuntimeIdFactory.Create; + scene.AddEntity(entity); + + if (isRunEvent) + { + scene.EntityComponent.Awake(entity); + scene.EntityComponent.StartUpdate(entity); + } + + return entity; + } + + #endregion + + #region AddComponent + + /// + /// 添加一个组件到当前实体上 + /// + /// 是否从对象池里创建 + /// 要添加组件的泛型类型 + /// 返回添加到实体上组件的实例 + public T AddComponent(bool isPool = true) where T : Entity, new() + { + var id = SupportedMultiEntityChecker.IsSupported ? Scene.EntityIdFactory.Create : Id; + var entity = Create(Scene, id, isPool, false); + AddComponent(entity); + Scene.EntityComponent.Awake(entity); + Scene.EntityComponent.StartUpdate(entity); + return entity; + } + + /// + /// 添加一个组件到当前实体上 + /// + /// 要添加组件的Id + /// 是否从对象池里创建 + /// 要添加组件的泛型类型 + /// 返回添加到实体上组件的实例 + public T AddComponent(long id, bool isPool = true) where T : Entity, new() + { + var entity = Create(Scene, id, isPool, false); + AddComponent(entity); + Scene.EntityComponent.Awake(entity); + Scene.EntityComponent.StartUpdate(entity); + return entity; + } + + /// + /// 添加一个组件到当前实体上 + /// + /// 要添加的实体实例 + public void AddComponent(Entity component) + { + if (this == component) + { + Log.Error("Cannot add oneself to one's own components"); + return; + } + + if (component.IsDisposed) + { + Log.Error($"component is Disposed {component.Type.FullName}"); + return; + } + + var type = component.Type; + component.Parent?.RemoveComponent(component, false); + + if (component is ISupportedMultiEntity) + { + _multi ??= Scene.EntitySortedDictionaryPool.Rent(); + _multi.Add(component.Id, component); +#if FANTASY_NET + if (component is ISupportedDataBase) + { + _multiDb ??= Scene.EntityListPool.Rent(); + _multiDb.Add(component); + } +#endif + } + else + { +#if FANTASY_NET + if (component is ISupportedSingleCollection && component.Id != Id) + { + Log.Error($"component type :{type.FullName} for implementing ISupportedSingleCollection, it is required that the Id must be the same as the parent"); + } +#endif + var typeHashCode = Scene.EntityComponent.GetHashCode(type);; + + if (_tree == null) + { + _tree = Scene.EntitySortedDictionaryPool.Rent(); + } + else if (_tree.ContainsKey(typeHashCode)) + { + Log.Error($"type:{type.FullName} If you want to add multiple components of the same type, please implement IMultiEntity"); + return; + } + + _tree.Add(typeHashCode, component); +#if FANTASY_NET + if (component is ISupportedDataBase) + { + _treeDb ??= Scene.EntityListPool.Rent(); + _treeDb.Add(component); + } +#endif + } + + component.Parent = this; + component.Scene = Scene; + } + + /// + /// 添加一个组件到当前实体上 + /// + /// 要添加的实体实例 + /// 要添加组件的泛型类型 + public void AddComponent(T component) where T : Entity + { + var type = typeof(T); + + if (type == typeof(Entity)) + { + Log.Error("Cannot add a generic Entity type as a component. Specify a more specific type."); + return; + } + + if (this == component) + { + Log.Error("Cannot add oneself to one's own components"); + return; + } + + if (component.IsDisposed) + { + Log.Error($"component is Disposed {type.FullName}"); + return; + } + + component.Parent?.RemoveComponent(component, false); + + if (SupportedMultiEntityChecker.IsSupported) + { + _multi ??= Scene.EntitySortedDictionaryPool.Rent(); + _multi.Add(component.Id, component); +#if FANTASY_NET + if (SupportedDataBaseChecker.IsSupported) + { + _multiDb ??= Scene.EntityListPool.Rent(); + _multiDb.Add(component); + } +#endif + } + else + { +#if FANTASY_NET + if (SupportedSingleCollectionChecker.IsSupported && component.Id != Id) + { + Log.Error($"component type :{type.FullName} for implementing ISupportedSingleCollection, it is required that the Id must be the same as the parent"); + } +#endif + var typeHashCode = Scene.EntityComponent.GetHashCode(type); + + if (_tree == null) + { + _tree = Scene.EntitySortedDictionaryPool.Rent(); + } + else if (_tree.ContainsKey(typeHashCode)) + { + Log.Error($"type:{type.FullName} If you want to add multiple components of the same type, please implement IMultiEntity"); + return; + } + + _tree.Add(typeHashCode, component); +#if FANTASY_NET + if (SupportedDataBaseChecker.IsSupported) + { + _treeDb ??= Scene.EntityListPool.Rent(); + _treeDb.Add(component); + } +#endif + } + + component.Parent = this; + component.Scene = Scene; + } + + /// + /// 添加一个组件到当前实体上 + /// + /// 组件的类型 + /// 是否在对象池创建 + /// + public Entity AddComponent(Type type, bool isPool = true) + { + var id = typeof(ISupportedMultiEntity).IsAssignableFrom(type) ? Scene.EntityIdFactory.Create : Id; + var entity = Entity.Create(Scene, type, id, isPool, false); + AddComponent(entity); + Scene.EntityComponent.Awake(entity); + Scene.EntityComponent.StartUpdate(entity); + return entity; + } + + #endregion + + #region HasComponent + + /// + /// 当前实体上是否有指定类型的组件 + /// + /// + /// + public bool HasComponent() where T : Entity, new() + { + return HasComponent(typeof(T)); + } + + /// + /// 当前实体上是否有指定类型的组件 + /// + /// + /// + public bool HasComponent(Type type) + { + if (_tree == null) + { + return false; + } + + return _tree.ContainsKey(Scene.EntityComponent.GetHashCode(type)); + } + + /// + /// 当前实体上是否有指定类型的组件 + /// + /// + /// + /// + public bool HasComponent(long id) where T : Entity, ISupportedMultiEntity, new() + { + if (_multi == null) + { + return false; + } + + return _multi.ContainsKey(id); + } + + #endregion + + #region GetComponent + + /// + /// 当前实体上查找一个字实体 + /// + /// 要查找实体泛型类型 + /// 查找的实体实例 + public T GetComponent() where T : Entity, new() + { + if (_tree == null) + { + return null; + } + + var typeHashCode = Scene.EntityComponent.GetHashCode(typeof(T)); + return _tree.TryGetValue(typeHashCode, out var component) ? (T)component : null; + } + + /// + /// 当前实体上查找一个字实体 + /// + /// 要查找实体类型 + /// 查找的实体实例 + public Entity GetComponent(Type type) + { + if (_tree == null) + { + return null; + } + + var typeHashCode = Scene.EntityComponent.GetHashCode(type); + return _tree.TryGetValue(typeHashCode, out var component) ? component : null; + } + + /// + /// 当前实体上查找一个字实体 + /// + /// 要查找实体的Id + /// 要查找实体泛型类型 + /// 查找的实体实例 + public T GetComponent(long id) where T : Entity, ISupportedMultiEntity, new() + { + if (_multi == null) + { + return default; + } + + return _multi.TryGetValue(id, out var entity) ? (T)entity : default; + } + + /// + /// 当前实体上查找一个字实体,如果没有就创建一个新的并添加到当前实体上 + /// + /// 是否从对象池创建 + /// 要查找或添加实体泛型类型 + /// 查找的实体实例 + public T GetOrAddComponent(bool isPool = true) where T : Entity, new() + { + return GetComponent() ?? AddComponent(isPool); + } + + #endregion + + #region RemoveComponent + + /// + /// 当前实体下删除一个实体 + /// + /// 是否执行删除实体的Dispose方法 + /// 实体的泛型类型 + /// + public void RemoveComponent(bool isDispose = true) where T : Entity, new() + { + if (SupportedMultiEntityChecker.IsSupported) + { + throw new NotSupportedException($"{typeof(T).FullName} message:Cannot delete components that implement the ISupportedMultiEntity interface"); + } + + if (_tree == null) + { + return; + } + + var type = typeof(T); + var typeHashCode = Scene.EntityComponent.GetHashCode(type); + if (!_tree.TryGetValue(typeHashCode, out var component)) + { + return; + } +#if FANTASY_NET + if (_treeDb != null && SupportedDataBaseChecker.IsSupported) + { + _treeDb.Remove(component); + + if (_treeDb.Count == 0) + { + Scene.EntityListPool.Return(_treeDb); + _treeDb = null; + } + } +#endif + _tree.Remove(typeHashCode); + + if (_tree.Count == 0) + { + Scene.EntitySortedDictionaryPool.Return(_tree); + _tree = null; + } + + if (isDispose) + { + component.Dispose(); + } + } + + /// + /// 当前实体下删除一个实体 + /// + /// 要删除的实体Id + /// 是否执行删除实体的Dispose方法 + /// 实体的泛型类型 + public void RemoveComponent(long id, bool isDispose = true) where T : Entity, ISupportedMultiEntity, new() + { + if (_multi == null) + { + return; + } + + if (!_multi.TryGetValue(id, out var component)) + { + return; + } +#if FANTASY_NET + if (SupportedDataBaseChecker.IsSupported) + { + _multiDb.Remove(component); + if (_multiDb.Count == 0) + { + Scene.EntityListPool.Return(_multiDb); + _multiDb = null; + } + } +#endif + _multi.Remove(component.Id); + if (_multi.Count == 0) + { + Scene.EntitySortedDictionaryPool.Return(_multi); + _multi = null; + } + + if (isDispose) + { + component.Dispose(); + } + } + + /// + /// 当前实体下删除一个实体 + /// + /// 要删除的实体实例 + /// 是否执行删除实体的Dispose方法 + public void RemoveComponent(Entity component, bool isDispose = true) + { + if (this == component) + { + return; + } + + if (component is ISupportedMultiEntity) + { + if (_multi != null) + { + if (!_multi.ContainsKey(component.Id)) + { + return; + } +#if FANTASY_NET + if (component is ISupportedDataBase) + { + _multiDb.Remove(component); + if (_multiDb.Count == 0) + { + Scene.EntityListPool.Return(_multiDb); + _multiDb = null; + } + } +#endif + _multi.Remove(component.Id); + if (_multi.Count == 0) + { + Scene.EntitySortedDictionaryPool.Return(_multi); + _multi = null; + } + } + } + else if (_tree != null) + { + var typeHashCode = Scene.EntityComponent.GetHashCode(component.Type); + if (!_tree.ContainsKey(typeHashCode)) + { + return; + } +#if FANTASY_NET + if (_treeDb != null && component is ISupportedDataBase) + { + _treeDb.Remove(component); + + if (_treeDb.Count == 0) + { + Scene.EntityListPool.Return(_treeDb); + _treeDb = null; + } + } +#endif + _tree.Remove(typeHashCode); + + if (_tree.Count == 0) + { + Scene.EntitySortedDictionaryPool.Return(_tree); + _tree = null; + } + } + + if (isDispose) + { + component.Dispose(); + } + } + + /// + /// 当前实体下删除一个实体 + /// + /// 要删除的实体实例 + /// 是否执行删除实体的Dispose方法 + /// 实体的泛型类型 + public void RemoveComponent(T component, bool isDispose = true) where T : Entity + { + if (this == component) + { + return; + } + + if (typeof(T) == typeof(Entity)) + { + Log.Error("Cannot remove a generic Entity type as a component. Specify a more specific type."); + return; + } + + if (SupportedMultiEntityChecker.IsSupported) + { + if (_multi != null) + { + if (!_multi.ContainsKey(component.Id)) + { + return; + } +#if FANTASY_NET + if (SupportedDataBaseChecker.IsSupported) + { + _multiDb.Remove(component); + if (_multiDb.Count == 0) + { + Scene.EntityListPool.Return(_multiDb); + _multiDb = null; + } + } +#endif + _multi.Remove(component.Id); + if (_multi.Count == 0) + { + Scene.EntitySortedDictionaryPool.Return(_multi); + _multi = null; + } + } + } + else if (_tree != null) + { + var typeHashCode = Scene.EntityComponent.GetHashCode(typeof(T)); + if (!_tree.ContainsKey(typeHashCode)) + { + return; + } +#if FANTASY_NET + if (_treeDb != null && SupportedDataBaseChecker.IsSupported) + { + _treeDb.Remove(component); + + if (_treeDb.Count == 0) + { + Scene.EntityListPool.Return(_treeDb); + _treeDb = null; + } + } +#endif + _tree.Remove(typeHashCode); + + if (_tree.Count == 0) + { + Scene.EntitySortedDictionaryPool.Return(_tree); + _tree = null; + } + } + + if (isDispose) + { + component.Dispose(); + } + } + + #endregion + + #region Deserialize + + /// + /// 反序列化当前实体,因为在数据库加载过来的或通过协议传送过来的实体并没有跟当前Scene做关联。 + /// 所以必须要执行一下这个反序列化的方法才可以使用。 + /// + /// Scene + /// 是否是重新生成实体的Id,如果是数据库加载过来的一般是不需要的 + public void Deserialize(Scene scene, bool resetId = false) + { + if (RuntimeId != 0) + { + return; + } + + try + { + Scene = scene; + Type ??= GetType(); + RuntimeId = Scene.RuntimeIdFactory.Create; + if (resetId) + { + Id = RuntimeId; + } +#if FANTASY_NET + if (_treeDb != null && _treeDb.Count > 0) + { + _tree = Scene.EntitySortedDictionaryPool.Rent(); + foreach (var entity in _treeDb) + { + entity.Parent = this; + entity.Type = entity.GetType(); + var typeHashCode = Scene.EntityComponent.GetHashCode(entity.Type); + _tree.Add(typeHashCode, entity); + entity.Deserialize(scene, resetId); + } + } + + if (_multiDb != null && _multiDb.Count > 0) + { + _multi = Scene.EntitySortedDictionaryPool.Rent(); + foreach (var entity in _multiDb) + { + entity.Parent = this; + entity.Deserialize(scene, resetId); + _multi.Add(entity.Id, entity); + } + } +#endif + scene.AddEntity(this); + scene.EntityComponent.Deserialize(this); + } + catch (Exception e) + { + if (RuntimeId != 0) + { + scene.RemoveEntity(RuntimeId); + } + + Log.Error(e); + } + } + + #endregion + + #region ForEach +#if FANTASY_NET + /// + /// 查询当前实体下支持数据库分表存储实体 + /// + [BsonIgnore] + [JsonIgnore] + [IgnoreDataMember] + [ProtoIgnore] + public IEnumerable ForEachSingleCollection + { + get + { + foreach (var (_, treeEntity) in _tree) + { + if (treeEntity is not ISupportedSingleCollection) + { + continue; + } + + yield return treeEntity; + } + } + } + /// + /// 查询当前实体下支持传送实体 + /// + [BsonIgnore] + [JsonIgnore] + [IgnoreDataMember] + [ProtoIgnore] + public IEnumerable ForEachTransfer + { + get + { + if (_tree != null) + { + foreach (var (_, treeEntity) in _tree) + { + if (treeEntity is ISupportedTransfer) + { + yield return treeEntity; + } + } + } + + if (_multiDb != null) + { + foreach (var treeEntity in _multiDb) + { + if (treeEntity is not ISupportedTransfer) + { + continue; + } + + yield return treeEntity; + } + } + } + } +#endif + /// + /// 查询当前实体下的实现了ISupportedMultiEntity接口的实体 + /// + [BsonIgnore] + [JsonIgnore] + [IgnoreDataMember] + [ProtoIgnore] + public IEnumerable ForEachMultiEntity + { + get + { + if (_multi == null) + { + yield break; + } + + foreach (var (_, supportedMultiEntity) in _multi) + { + yield return supportedMultiEntity; + } + } + } + /// + /// 查找当前实体下的所有实体,不包括实现ISupportedMultiEntity接口的实体 + /// + [BsonIgnore] + [JsonIgnore] + [IgnoreDataMember] + [ProtoIgnore] + public IEnumerable ForEachEntity + { + get + { + if (_tree == null) + { + yield break; + } + + foreach (var (_, entity) in _tree) + { + yield return entity; + } + } + } + #endregion + + #region Dispose + + /// + /// 销毁当前实体,销毁后会自动销毁当前实体下的所有实体。 + /// + public virtual void Dispose() + { + if (IsDisposed) + { + return; + } + + var scene = Scene; + var runTimeId = RuntimeId; + RuntimeId = 0; + + if (_tree != null) + { + foreach (var (_, entity) in _tree) + { + entity.Dispose(); + } + + _tree.Clear(); + scene.EntitySortedDictionaryPool.Return(_tree); + _tree = null; + } + + if (_multi != null) + { + foreach (var (_, entity) in _multi) + { + entity.Dispose(); + } + + _multi.Clear(); + scene.EntitySortedDictionaryPool.Return(_multi); + _multi = null; + } +#if FANTASY_NET + if (_treeDb != null) + { + foreach (var entity in _treeDb) + { + entity.Dispose(); + } + + _treeDb.Clear(); + scene.EntityListPool.Return(_treeDb); + _treeDb = null; + } + + if (_multiDb != null) + { + foreach (var entity in _multiDb) + { + entity.Dispose(); + } + + _multiDb.Clear(); + scene.EntityListPool.Return(_multiDb); + _multiDb = null; + } +#endif + scene.EntityComponent.Destroy(this); + + if (Parent != null && Parent != this && !Parent.IsDisposed) + { + Parent.RemoveComponent(this, false); + Parent = null; + } + + Id = 0; + Scene = null; + Parent = null; + scene.RemoveEntity(runTimeId); + + if (IsPool()) + { + scene.EntityPool.Return(Type, this); + } + + Type = null; + } + + #endregion + + #region Pool + + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + + #endregion + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/EntityPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/EntityPool.cs new file mode 100644 index 0000000..9a6441c --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/EntityPool.cs @@ -0,0 +1,66 @@ +using System.Collections.Generic; +using Fantasy.Pool; + +#pragma warning disable CS8714 // The type cannot be used as type parameter in the generic type or method. Nullability of type argument doesn't match 'notnull' constraint. + +namespace Fantasy.Entitas +{ + internal sealed class EntityPool : PoolCore + { + public EntityPool() : base(4096) { } + } + + internal sealed class EntityList : List, IPool where T : Entity + { + private bool _isPool; + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } + + internal sealed class EntityListPool : PoolCore> where T : Entity + { + public EntityListPool() : base(4096) { } + } + + internal sealed class EntitySortedDictionary : SortedDictionary, IPool where TN : Entity + { + private bool _isPool; + /// + /// 获取一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public bool IsPool() + { + return _isPool; + } + + /// + /// 设置一个值,该值指示当前实例是否为对象池中的实例。 + /// + /// + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } + + internal sealed class EntitySortedDictionaryPool : PoolCore> where TN : Entity + { + public EntitySortedDictionaryPool() : base(4096) { } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/EntityReference.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/EntityReference.cs new file mode 100644 index 0000000..dd1a3fd --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/EntityReference.cs @@ -0,0 +1,59 @@ +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8603 // Possible null reference return. +namespace Fantasy.Entitas +{ + /// + /// 实体引用检查组件 + /// + /// + public struct EntityReference where T : Entity + { + private T _entity; + private readonly long _runTimeId; + + private EntityReference(T t) + { + if (t == null) + { + _entity = null; + _runTimeId = 0; + return; + } + + _entity = t; + _runTimeId = t.RuntimeId; + } + + /// + /// 将一个实体转换为EntityReference + /// + /// 实体泛型类型 + /// 返回一个EntityReference + public static implicit operator EntityReference(T t) + { + return new EntityReference(t); + } + + /// + /// 将一个EntityReference转换为实体 + /// + /// 实体泛型类型 + /// 当实体已经被销毁过会返回null + public static implicit operator T(EntityReference v) + { + if (v._entity == null) + { + return null; + } + + if (v._entity.RuntimeId != v._runTimeId) + { + v._entity = null; + } + + return v._entity; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISingleCollectionRoot.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISingleCollectionRoot.cs new file mode 100644 index 0000000..84de7a4 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISingleCollectionRoot.cs @@ -0,0 +1,17 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +namespace Fantasy.Entitas.Interface +{ + /// + /// Entity保存到数据库的时候会根据子组件设置分离存储特性分表存储在不同的集合表中 + /// + public interface ISingleCollectionRoot { } + public static class SingleCollectionRootChecker where T : Entity + { + public static bool IsSupported { get; } + + static SingleCollectionRootChecker() + { + IsSupported = typeof(ISingleCollectionRoot).IsAssignableFrom(typeof(T)); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedDataBase.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedDataBase.cs new file mode 100644 index 0000000..f505241 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedDataBase.cs @@ -0,0 +1,19 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +namespace Fantasy.Entitas.Interface +{ + /// + /// Entity支持数据库 + /// + // ReSharper disable once InconsistentNaming + public interface ISupportedDataBase { } + + public static class SupportedDataBaseChecker where T : Entity + { + public static bool IsSupported { get; } + + static SupportedDataBaseChecker() + { + IsSupported = typeof(ISupportedDataBase).IsAssignableFrom(typeof(T)); + } + } +} diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedMultiEntity.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedMultiEntity.cs new file mode 100644 index 0000000..ee6aeb7 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedMultiEntity.cs @@ -0,0 +1,20 @@ +using System; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Entitas.Interface +{ + /// + /// 支持再一个组件里添加多个同类型组件 + /// + public interface ISupportedMultiEntity : IDisposable { } + + public static class SupportedMultiEntityChecker where T : Entity + { + public static bool IsSupported { get; } + + static SupportedMultiEntityChecker() + { + IsSupported = typeof(ISupportedMultiEntity).IsAssignableFrom(typeof(T)); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedSingleCollection.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedSingleCollection.cs new file mode 100644 index 0000000..302e697 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedSingleCollection.cs @@ -0,0 +1,47 @@ +using System; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +namespace Fantasy.Entitas.Interface +{ + // Entity是单一集合、保存到数据库的时候不会跟随父组件保存在一个集合里、会单独保存在一个集合里 + // 需要配合SingleCollectionAttribute一起使用、如在Entity类头部定义SingleCollectionAttribute(typeOf(Unit)) + // SingleCollectionAttribute用来定义这个Entity是属于哪个Entity的子集 + /// + /// 定义实体支持单一集合存储的接口。当实体需要单独存储在一个集合中,并且在保存到数据库时不会与父组件一起保存在同一个集合中时,应实现此接口。 + /// + public interface ISupportedSingleCollection { } + public static class SupportedSingleCollectionChecker where T : Entity + { + public static bool IsSupported { get; } + + static SupportedSingleCollectionChecker() + { + IsSupported = typeof(ISupportedSingleCollection).IsAssignableFrom(typeof(T)); + } + } + /// + /// 表示用于指定实体的单一集合存储属性。此属性用于配合 接口使用, + /// 用于定义实体属于哪个父实体的子集合,以及在数据库中使用的集合名称。 + /// + [AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = false)] + public class SingleCollectionAttribute : Attribute + { + /// + /// 获取父实体的类型,指示此实体是属于哪个父实体的子集合。 + /// + public readonly Type RootType; + /// + /// 获取在数据库中使用的集合名称。 + /// + public readonly string CollectionName; + /// + /// 初始化 类的新实例,指定父实体类型和集合名称。 + /// + /// 父实体的类型。 + /// 在数据库中使用的集合名称。 + public SingleCollectionAttribute(Type rootType, string collectionName) + { + RootType = rootType; + CollectionName = collectionName; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedTransfer.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedTransfer.cs new file mode 100644 index 0000000..a3ae4a9 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/Supported/ISupportedTransfer.cs @@ -0,0 +1,19 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#if FANTASY_NET +namespace Fantasy.Entitas.Interface +{ + /// + /// Entity支持传送 + /// + public interface ISupportedTransfer { } + public static class SupportedTransferChecker where T : Entity + { + public static bool IsSupported { get; } + + static SupportedTransferChecker() + { + IsSupported = typeof(ISupportedTransfer).IsAssignableFrom(typeof(T)); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IAwakeSystem.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IAwakeSystem.cs new file mode 100644 index 0000000..f651701 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IAwakeSystem.cs @@ -0,0 +1,32 @@ +using System; +using Fantasy.Async; + +namespace Fantasy.Entitas.Interface +{ + internal interface IAwakeSystem : IEntitiesSystem { } + /// + /// 实体的Awake事件的抽象接口 + /// + /// 实体的泛型类型 + public abstract class AwakeSystem : IAwakeSystem where T : Entity + { + /// + /// 实体的类型 + /// + /// + public Type EntitiesType() => typeof(T); + /// + /// 事件的抽象方法,需要自己实现这个方法 + /// + /// 触发事件的实体实例 + protected abstract void Awake(T self); + /// + /// 框架内部调用的触发Awake的方法。 + /// + /// 触发事件的实体实例 + public void Invoke(Entity self) + { + Awake((T) self); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/ICustomEntitiesSystem.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/ICustomEntitiesSystem.cs new file mode 100644 index 0000000..da42e58 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/ICustomEntitiesSystem.cs @@ -0,0 +1,59 @@ +using System; + +namespace Fantasy.Entitas.Interface +{ + /// + /// 自定义组件事件系统接口 + /// 如果需要自定义组件事件系统,请继承此接口。 + /// 这个接口内部使用。不对外开放。 + /// + internal interface ICustomEntitiesSystem + { + /// + /// 事件类型 + /// 用于触发这个组件事件关键因素。 + /// + int CustomEventType { get; } + /// + /// 实体的类型 + /// + /// + Type EntitiesType(); + /// + /// 框架内部调用的触发事件方法 + /// + /// + void Invoke(Entity entity); + } + + /// + /// 自定义组件事件系统抽象类 + /// 如果需要自定义组件事件系统,请继承此抽象类。 + /// + /// + public abstract class CustomSystem : ICustomEntitiesSystem where T : Entity + { + /// + /// 这个1表示是一个自定义事件类型,执行这个事件是时候需要用到这个1. + /// + public abstract int CustomEventType { get; } + /// + /// 事件的抽象方法,需要自己实现这个方法 + /// + /// 触发事件的实体实例 + protected abstract void Custom(T self); + /// + /// 实体的类型 + /// + /// + public abstract Type EntitiesType(); + /// + /// 框架内部调用的触发Awake的方法。 + /// + /// 触发事件的实体实例 + public void Invoke(Entity self) + { + Custom((T) self); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IDeserializeSystem.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IDeserializeSystem.cs new file mode 100644 index 0000000..9c38ab6 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IDeserializeSystem.cs @@ -0,0 +1,32 @@ +using System; +using Fantasy.Async; + +namespace Fantasy.Entitas.Interface +{ + internal interface IDeserializeSystem : IEntitiesSystem { } + /// + /// 实体的反序列化事件的抽象接口 + /// + /// 实体的泛型数据 + public abstract class DeserializeSystem : IDeserializeSystem where T : Entity + { + /// + /// 实体的类型 + /// + /// + public Type EntitiesType() => typeof(T); + /// + /// 事件的抽象方法,需要自己实现这个方法 + /// + /// 触发事件的实体实例 + protected abstract void Deserialize(T self); + /// + /// 框架内部调用的触发Deserialize的方法 + /// + /// 触发事件的实体实例 + public void Invoke(Entity self) + { + Deserialize((T) self); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IDestroySystem.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IDestroySystem.cs new file mode 100644 index 0000000..531ebbe --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IDestroySystem.cs @@ -0,0 +1,32 @@ +using System; +using Fantasy.Async; + +namespace Fantasy.Entitas.Interface +{ + internal interface IDestroySystem : IEntitiesSystem { } + /// + /// 实体销毁事件的抽象接口 + /// + /// + public abstract class DestroySystem : IDestroySystem where T : Entity + { + /// + /// 实体的类型 + /// + /// + public Type EntitiesType() => typeof(T); + /// + /// 事件的抽象方法,需要自己实现这个方法 + /// + /// 触发事件的实体实例 + protected abstract void Destroy(T self); + /// + /// 框架内部调用的触发Destroy的方法 + /// + /// + public void Invoke(Entity self) + { + Destroy((T) self); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IEntitiesSystem.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IEntitiesSystem.cs new file mode 100644 index 0000000..555d21a --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IEntitiesSystem.cs @@ -0,0 +1,22 @@ +using System; +using Fantasy.Async; + +namespace Fantasy.Entitas.Interface +{ + /// + /// ECS事件系统的核心接口,任何事件都是要继承这个接口 + /// + public interface IEntitiesSystem + { + /// + /// 实体的类型 + /// + /// + Type EntitiesType(); + /// + /// 框架内部调用的触发事件方法 + /// + /// + void Invoke(Entity entity); + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IFrameUpdateSystem.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IFrameUpdateSystem.cs new file mode 100644 index 0000000..c50061b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IFrameUpdateSystem.cs @@ -0,0 +1,31 @@ +using System; + +namespace Fantasy.Entitas.Interface +{ + internal interface IFrameUpdateSystem : IEntitiesSystem { } + /// + /// 帧更新时间的抽象接口 + /// + /// + public abstract class FrameUpdateSystem : IFrameUpdateSystem where T : Entity + { + /// + /// 实体的类型 + /// + /// + public Type EntitiesType() => typeof(T); + /// + /// 事件的抽象方法,需要自己实现这个方法 + /// + /// 触发事件的实体实例 + protected abstract void FrameUpdate(T self); + /// + /// 框架内部调用的触发FrameUpdate的方法 + /// + /// + public void Invoke(Entity self) + { + FrameUpdate((T) self); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IUpdateSystem.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IUpdateSystem.cs new file mode 100644 index 0000000..4b34ac8 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Entitas/Interface/System/IUpdateSystem.cs @@ -0,0 +1,31 @@ +using System; + +namespace Fantasy.Entitas.Interface +{ + internal interface IUpdateSystem : IEntitiesSystem { } + /// + /// Update事件的抽象接口 + /// + /// + public abstract class UpdateSystem : IUpdateSystem where T : Entity + { + /// + /// 实体的类型 + /// + /// + public Type EntitiesType() => typeof(T); + /// + /// 事件的抽象方法,需要自己实现这个方法 + /// + /// 触发事件的实体实例 + protected abstract void Update(T self); + /// + /// 框架内部调用的触发Update的方法 + /// + /// 触发事件的实体实例 + public void Invoke(Entity self) + { + Update((T) self); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Builder/AsyncFTaskCompletedMethodBuilder.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Builder/AsyncFTaskCompletedMethodBuilder.cs new file mode 100644 index 0000000..60b0d08 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Builder/AsyncFTaskCompletedMethodBuilder.cs @@ -0,0 +1,52 @@ +using System; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Runtime.ExceptionServices; +using System.Runtime.InteropServices; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Async +{ + [StructLayout(LayoutKind.Auto)] + public struct AsyncFTaskCompletedMethodBuilder + { + public FTaskCompleted Task => default; + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static AsyncFTaskCompletedMethodBuilder Create() + { + return new AsyncFTaskCompletedMethodBuilder(); + } + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Start(ref TStateMachine stateMachine) where TStateMachine : IAsyncStateMachine + { + stateMachine.MoveNext(); + } + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetException(Exception exception) + { + ExceptionDispatchInfo.Capture(exception).Throw(); + } + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetResult() { } + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void AwaitOnCompleted(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : INotifyCompletion where TStateMachine : IAsyncStateMachine + { + awaiter.OnCompleted(stateMachine.MoveNext); + } + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void AwaitUnsafeOnCompleted(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : ICriticalNotifyCompletion where TStateMachine : IAsyncStateMachine + { + awaiter.UnsafeOnCompleted(stateMachine.MoveNext); + } + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetStateMachine(IAsyncStateMachine stateMachine) { } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Builder/AsyncFTaskMethodBuilder.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Builder/AsyncFTaskMethodBuilder.cs new file mode 100644 index 0000000..6c072cd --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Builder/AsyncFTaskMethodBuilder.cs @@ -0,0 +1,140 @@ +using System; +using System.Collections.Concurrent; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +// ReSharper disable MemberCanBePrivate.Global +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS8604 // Possible null reference argument. + +namespace Fantasy.Async +{ + [StructLayout(LayoutKind.Auto)] + public readonly struct AsyncFTaskMethodBuilder + { + public FTask Task + { + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get; + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static AsyncFTaskMethodBuilder Create() + { + return new AsyncFTaskMethodBuilder(FTask.Create()); + } + + public AsyncFTaskMethodBuilder(FTask fTask) + { + Task = fTask; + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Start(ref TStateMachine stateMachine) where TStateMachine : IAsyncStateMachine + { + stateMachine.MoveNext(); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetResult() + { + Task.SetResult(); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetException(Exception exception) + { + Task.SetException(exception); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void AwaitOnCompleted(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : INotifyCompletion where TStateMachine : IAsyncStateMachine + { + // 通常在异步方法中遇到 await 关键字时调用,并且需要将执行恢复到调用 await 之前的同步上下文。 + awaiter.OnCompleted(stateMachine.MoveNext); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void AwaitUnsafeOnCompleted(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : ICriticalNotifyCompletion where TStateMachine : IAsyncStateMachine + { + // 通常在你不需要恢复到原始同步上下文时调用,这意味着你不关心在什么线程上恢复执行。 + awaiter.UnsafeOnCompleted(stateMachine.MoveNext); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetStateMachine(IAsyncStateMachine stateMachine) + { + // 用于设置和保存异步方法的状态机实例。 + // 编译器在生成异步方法时要求其存在。 + // 编译器生成的代码已经足够处理状态机的管理,所以这里没有什么特殊要求所以保持空实现。 + } + } + + [StructLayout(LayoutKind.Auto)] + public readonly struct AsyncFTaskMethodBuilder + { + public FTask Task + { + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get; + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static AsyncFTaskMethodBuilder Create() + { + return new AsyncFTaskMethodBuilder(FTask.Create()); + } + + public AsyncFTaskMethodBuilder(FTask fTask) + { + Task = fTask; + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Start(ref TStateMachine stateMachine) where TStateMachine : IAsyncStateMachine + { + stateMachine.MoveNext(); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetResult(T value) + { + Task.SetResult(value); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetException(Exception exception) + { + Task.SetException(exception); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void AwaitOnCompleted(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : INotifyCompletion where TStateMachine : IAsyncStateMachine + { + awaiter.OnCompleted(stateMachine.MoveNext); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void AwaitUnsafeOnCompleted(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : ICriticalNotifyCompletion where TStateMachine : IAsyncStateMachine + { + awaiter.UnsafeOnCompleted(stateMachine.MoveNext); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetStateMachine(IAsyncStateMachine stateMachine) { } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Builder/AsyncFVoidMethodBuilder.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Builder/AsyncFVoidMethodBuilder.cs new file mode 100644 index 0000000..b9f7bc0 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Builder/AsyncFVoidMethodBuilder.cs @@ -0,0 +1,62 @@ +using System; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Runtime.ExceptionServices; +using System.Runtime.InteropServices; +#pragma warning disable CS8603 // Possible null reference return. + +namespace Fantasy.Async +{ + [StructLayout(LayoutKind.Auto)] + internal struct AsyncFVoidMethodBuilder + { + public FVoid Task + { + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get => default; + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static AsyncFVoidMethodBuilder Create() + { + return default; + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Start(ref TStateMachine stateMachine) where TStateMachine : IAsyncStateMachine + { + stateMachine.MoveNext(); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetResult() { } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetException(Exception exception) + { + ExceptionDispatchInfo.Capture(exception).Throw(); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void AwaitOnCompleted(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : INotifyCompletion where TStateMachine : IAsyncStateMachine + { + awaiter.OnCompleted(stateMachine.MoveNext); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void AwaitUnsafeOnCompleted(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : ICriticalNotifyCompletion where TStateMachine : IAsyncStateMachine + { + awaiter.UnsafeOnCompleted(stateMachine.MoveNext); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetStateMachine(IAsyncStateMachine stateMachine) { } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/FCancellationToken/FCancellationToken.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/FCancellationToken/FCancellationToken.cs new file mode 100644 index 0000000..90913e3 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/FCancellationToken/FCancellationToken.cs @@ -0,0 +1,121 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; + +namespace Fantasy.Async +{ + /// + /// 用于FTask取消的CancellationToken + /// + public sealed class FCancellationToken : IDisposable + { + private bool _isDispose; + private bool _isCancel; + private readonly HashSet _actions = new HashSet(); + /// + /// 当前CancellationToken是否已经取消过了 + /// + public bool IsCancel => _isDispose || _isCancel; + /// + /// 添加一个取消要执行的Action + /// + /// + public void Add(Action action) + { + if (_isDispose) + { + return; + } + + _actions.Add(action); + } + /// + /// 移除一个取消要执行的Action + /// + /// + public void Remove(Action action) + { + if (_isDispose) + { + return; + } + + _actions.Remove(action); + } + /// + /// 取消CancellationToken + /// + public void Cancel() + { + if (IsCancel) + { + return; + } + + _isCancel = true; + + foreach (var action in _actions) + { + try + { + action.Invoke(); + } + catch (Exception e) + { + Console.WriteLine(e); + } + } + + _actions.Clear(); + } + /// + /// 销毁掉CancellationToken,会执行Cancel方法。 + /// + public void Dispose() + { + if (_isDispose) + { + return; + } + + if (!IsCancel) + { + Cancel(); + _isCancel = true; + } + + _isDispose = true; + + if (Caches.Count > 2000) + { + return; + } + + Caches.Enqueue(this); + } + + #region Static + + private static readonly ConcurrentQueue Caches = new ConcurrentQueue(); + + /// + /// 获取一个新的CancellationToken + /// + public static FCancellationToken ToKen + { + get + { + if (!Caches.TryDequeue(out var fCancellationToken)) + { + fCancellationToken = new FCancellationToken(); + } + + fCancellationToken._isCancel = false; + fCancellationToken._isDispose = false; + return fCancellationToken; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/FTask.Extension/FTask.Factory.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/FTask.Extension/FTask.Factory.cs new file mode 100644 index 0000000..80c7fc8 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/FTask.Extension/FTask.Factory.cs @@ -0,0 +1,115 @@ +#if !FANTASY_WEBGL +using System.Collections.Concurrent; +#endif +using System.Collections.Generic; +using System.Diagnostics; +using System.Runtime.CompilerServices; +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. + +namespace Fantasy.Async +{ + /// + /// 一个异步任务 + /// + public partial class FTask + { + private bool _isPool; +#if FANTASY_WEBGL + private static readonly Queue Caches = new Queue(); +#else + private static readonly ConcurrentQueue Caches = new ConcurrentQueue(); +#endif + /// + /// 创建一个空的任务 + /// + public static FTaskCompleted CompletedTask => new FTaskCompleted(); + + private FTask() { } + + /// + /// 创建一个任务 + /// + /// 是否从对象池中创建 + /// + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static FTask Create(bool isPool = true) + { + if (!isPool) + { + return new FTask(); + } + + if (!Caches.TryDequeue(out var fTask)) + { + fTask = new FTask(); + } + + fTask._isPool = true; + return fTask; + } + + private void Return() + { + if (!_isPool || Caches.Count > 2000) + { + return; + } + + _callBack = null; + _status = STaskStatus.Pending; + Caches.Enqueue(this); + } + } + + /// + /// 一个异步任务 + /// + /// 任务的泛型类型 + public partial class FTask + { + private bool _isPool; +#if FANTASY_WEBGL + private static readonly Queue> Caches = new Queue>(); +#else + private static readonly ConcurrentQueue> Caches = new ConcurrentQueue>(); +#endif + /// + /// 创建一个任务 + /// + /// 是否从对象池中创建 + /// + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static FTask Create(bool isPool = true) + { + if (!isPool) + { + return new FTask(); + } + + if (!Caches.TryDequeue(out var fTask)) + { + fTask = new FTask(); + } + + fTask._isPool = true; + return fTask; + } + + private FTask() { } + + private void Return() + { + if (!_isPool || Caches.Count > 2000) + { + return; + } + + _callBack = null; + _status = STaskStatus.Pending; + Caches.Enqueue(this); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/FTask.Extension/FTask.Tools.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/FTask.Extension/FTask.Tools.cs new file mode 100644 index 0000000..a42edec --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/FTask.Extension/FTask.Tools.cs @@ -0,0 +1,345 @@ +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract + +using System; +using System.Collections.Generic; +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +namespace Fantasy.Async +{ + public partial class FTask + { + #region NetTimer + + /// + /// 异步等待指定时间 + /// + /// + /// + /// + /// + public static FTask Wait(Scene scene, long time, FCancellationToken cancellationToken = null) + { + return scene.TimerComponent.Net.WaitAsync(time, cancellationToken); + } + + /// + /// 异步等待直到指定时间 + /// + /// + /// + /// + /// + public static FTask WaitTill(Scene scene, long time, FCancellationToken cancellationToken = null) + { + return scene.TimerComponent.Net.WaitTillAsync(time, cancellationToken); + } + + /// + /// 异步等待一帧时间 + /// + /// + /// + public static FTask WaitFrame(Scene scene) + { + return scene.TimerComponent.Net.WaitFrameAsync(); + } + + /// + /// 创建一个只执行一次的计时器,直到指定时间 + /// + /// + /// + /// + /// + public static long OnceTimer(Scene scene, long time, Action action) + { + return scene.TimerComponent.Net.OnceTimer(time, action); + } + + /// + /// 创建一个只执行一次的计时器,直到指定时间。 + /// + /// + /// + /// + /// + public static long OnceTillTimer(Scene scene, long time, Action action) + { + return scene.TimerComponent.Net.OnceTillTimer(time, action); + } + + /// + /// 创建一个只执行一次的计时器,用于发布指定类型的事件。 + /// + /// + /// + /// + /// + /// + public static long OnceTimer(Scene scene, long time, T timerHandlerType) where T : struct + { + return scene.TimerComponent.Net.OnceTimer(time, timerHandlerType); + } + + /// + /// 创建一个只执行一次的计时器,直到指定时间,用于发布指定类型的事件。 + /// + /// + /// + /// + /// + /// + public static long OnceTillTimer(Scene scene, long tillTime, T timerHandlerType) where T : struct + { + return scene.TimerComponent.Net.OnceTillTimer(tillTime, timerHandlerType); + } + + /// + /// 创建一个重复执行的计时器。 + /// + /// + /// + /// + /// + public static long RepeatedTimer(Scene scene, long time, Action action) + { + return scene.TimerComponent.Net.RepeatedTimer(time, action); + } + + /// + /// 创建一个重复执行的计时器,用于发布指定类型的事件。 + /// + /// + /// + /// + /// + /// + public static long RepeatedTimer(Scene scene, long time, T timerHandlerType) where T : struct + { + return scene.TimerComponent.Net.RepeatedTimer(time, timerHandlerType); + } + + /// + /// 移除指定 ID 的计时器。 + /// + /// + /// + /// + public static bool RemoveTimer(Scene scene, ref long timerId) + { + return scene.TimerComponent.Net.Remove(ref timerId); + } + + #endregion + + #region Unity + +#if FANTASY_UNITY + /// + /// 异步等待指定时间。(使用Unity的Time时间) + /// + /// + /// + /// + /// + public static FTask UnityWait(Scene scene, long time, FCancellationToken cancellationToken = null) + { + return scene.TimerComponent.Unity.WaitAsync(time, cancellationToken); + } + + /// + /// 异步等待直到指定时间。(使用Unity的Time时间) + /// + /// + /// + /// + /// + public static FTask UnityWaitTill(Scene scene, long time, FCancellationToken cancellationToken = null) + { + return scene.TimerComponent.Unity.WaitTillAsync(time, cancellationToken); + } + + /// + /// 异步等待一帧时间。(使用Unity的Time时间) + /// + /// + /// + public static FTask UnityWaitFrame(Scene scene) + { + return scene.TimerComponent.Unity.WaitFrameAsync(); + } + + /// + /// 创建一个只执行一次的计时器,直到指定时间。(使用Unity的Time时间) + /// + /// + /// + /// + /// + public static long UnityOnceTimer(Scene scene, long time, Action action) + { + return scene.TimerComponent.Unity.OnceTimer(time, action); + } + + /// + /// 创建一个只执行一次的计时器,直到指定时间。(使用Unity的Time时间) + /// + /// + /// + /// + /// + public static long UnityOnceTillTimer(Scene scene, long time, Action action) + { + return scene.TimerComponent.Unity.OnceTillTimer(time, action); + } + + /// + /// 创建一个只执行一次的计时器,用于发布指定类型的事件。(使用Unity的Time时间) + /// + /// + /// + /// + /// + /// + public static long UnityOnceTimer(Scene scene, long time, T timerHandlerType) where T : struct + { + return scene.TimerComponent.Unity.OnceTimer(time, timerHandlerType); + } + + /// + /// 创建一个只执行一次的计时器,直到指定时间,用于发布指定类型的事件。(使用Unity的Time时间) + /// + /// + /// + /// + /// + /// + public static long UnityOnceTillTimer(Scene scene, long tillTime, T timerHandlerType) where T : struct + { + return scene.TimerComponent.Unity.OnceTillTimer(tillTime, timerHandlerType); + } + + /// + /// 创建一个重复执行的计时器。(使用Unity的Time时间) + /// + /// + /// + /// + /// + public static long UnityRepeatedTimer(Scene scene, long time, Action action) + { + return scene.TimerComponent.Unity.RepeatedTimer(time, action); + } + + /// + /// 创建一个重复执行的计时器,用于发布指定类型的事件。(使用Unity的Time时间) + /// + /// + /// + /// + /// + /// + public static long UnityRepeatedTimer(Scene scene, long time, T timerHandlerType) where T : struct + { + return scene.TimerComponent.Unity.RepeatedTimer(time, timerHandlerType); + } + + /// + /// 移除指定 ID 的计时器。(使用Unity的Time时间) + /// + /// + /// + /// + public static bool UnityRemoveTimer(Scene scene, ref long timerId) + { + return scene.TimerComponent.Unity.Remove(ref timerId); + } +#endif + + #endregion + + /// + /// 创建并运行一个异步任务 + /// + /// + /// + public static FTask Run(Func factory) + { + return factory(); + } + + /// + /// 创建并运行一个带有结果的异步任务 + /// + /// + /// + /// + public static FTask Run(Func> factory) + { + return factory(); + } + + /// + /// 等待所有任务完成 + /// + /// + public static async FTask WaitAll(List tasks) + { + if (tasks.Count <= 0) + { + return; + } + + var count = tasks.Count; + var sTaskCompletionSource = Create(); + + foreach (var task in tasks) + { + RunSTask(task).Coroutine(); + } + + await sTaskCompletionSource; + + async FVoid RunSTask(FTask task) + { + await task; + count--; + if (count <= 0) + { + sTaskCompletionSource.SetResult(); + } + } + } + /// + /// 等待其中一个任务完成 + /// + /// + public static async FTask WaitAny(List tasks) + { + if (tasks.Count <= 0) + { + return; + } + + var count = 1; + var sTaskCompletionSource = Create(); + + foreach (var task in tasks) + { + RunSTask(task).Coroutine(); + } + + await sTaskCompletionSource; + + async FVoid RunSTask(FTask task) + { + await task; + count--; + if (count == 0) + { + sTaskCompletionSource.SetResult(); + } + } + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Task/FTask.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Task/FTask.cs new file mode 100644 index 0000000..ce925f2 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Task/FTask.cs @@ -0,0 +1,263 @@ +using System; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Runtime.ExceptionServices; +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +// ReSharper disable ConditionalAccessQualifierIsNonNullableAccordingToAPIContract +// ReSharper disable CheckNamespace +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. + +namespace Fantasy.Async +{ + public enum STaskStatus : byte + { + Pending = 0, // The operation has not yet completed. + Succeeded = 1, // The operation completed successfully. + Faulted = 2 // The operation completed with an error. + } + + [AsyncMethodBuilder(typeof(AsyncFTaskMethodBuilder))] + public sealed partial class FTask : ICriticalNotifyCompletion + { + private Action _callBack; + private ExceptionDispatchInfo _exception; + private STaskStatus _status = STaskStatus.Pending; + public bool IsCompleted + { + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get => _status != STaskStatus.Pending; + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public FTask GetAwaiter() => this; + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private async FVoid InnerCoroutine() + { + await this; + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Coroutine() + { + InnerCoroutine().Coroutine(); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetResult() + { + switch (_status) + { + case STaskStatus.Succeeded: + { + Return(); + return; + } + case STaskStatus.Faulted: + { + Return(); + + if (_exception == null) + { + return; + } + + var exception = _exception; + _exception = null; + exception.Throw(); + return; + } + default: + { + throw new NotSupportedException("Direct call to getResult is not allowed"); + } + } + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetResult() + { + if (_status != STaskStatus.Pending) + { + throw new InvalidOperationException("The task has been completed"); + } + + _status = STaskStatus.Succeeded; + + if (_callBack == null) + { + return; + } + + var callBack = _callBack; + _callBack = null; + callBack.Invoke(); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void OnCompleted(Action action) + { + UnsafeOnCompleted(action); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UnsafeOnCompleted(Action action) + { + if (_status != STaskStatus.Pending) + { + action?.Invoke(); + return; + } + + _callBack = action; + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetException(Exception exception) + { + if (_status != STaskStatus.Pending) + { + throw new InvalidOperationException("The task has been completed"); + } + + _status = STaskStatus.Faulted; + _exception = ExceptionDispatchInfo.Capture(exception); + _callBack?.Invoke(); + } + } + + [AsyncMethodBuilder(typeof(AsyncFTaskMethodBuilder<>))] + public sealed partial class FTask : ICriticalNotifyCompletion + { + private T _value; + private Action _callBack; + private ExceptionDispatchInfo _exception; + private STaskStatus _status = STaskStatus.Pending; + public bool IsCompleted + { + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get => _status != STaskStatus.Pending; + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public FTask GetAwaiter() => this; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [DebuggerHidden] + private async FVoid InnerCoroutine() + { + await this; + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Coroutine() + { + InnerCoroutine().Coroutine(); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public T GetResult() + { + switch (_status) + { + case STaskStatus.Succeeded: + { + var value = _value; + Return(); + return value; + } + case STaskStatus.Faulted: + { + Return(); + + if (_exception == null) + { + return default; + } + + var exception = _exception; + _exception = null; + exception.Throw(); + return default; + } + default: + { + throw new NotSupportedException("Direct call to getResult is not allowed"); + } + } + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetResult(T value) + { + if (_status != STaskStatus.Pending) + { + throw new InvalidOperationException("The task has been completed"); + } + + _value = value; + _status = STaskStatus.Succeeded; + + if (_callBack == null) + { + return; + } + + var callBack = _callBack; + _callBack = null; + callBack.Invoke(); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void OnCompleted(Action action) + { + UnsafeOnCompleted(action); + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UnsafeOnCompleted(Action action) + { + if (_status != STaskStatus.Pending) + { + action?.Invoke(); + return; + } + + _callBack = action; + } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetException(Exception exception) + { + if (_status != STaskStatus.Pending) + { + throw new InvalidOperationException("The task has been completed"); + } + + _status = STaskStatus.Faulted; + _exception = ExceptionDispatchInfo.Capture(exception); + _callBack?.Invoke(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Task/FTaskCompleted.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Task/FTaskCompleted.cs new file mode 100644 index 0000000..48b9e36 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Task/FTaskCompleted.cs @@ -0,0 +1,31 @@ +using System; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Async +{ + [StructLayout(LayoutKind.Auto)] + [AsyncMethodBuilder(typeof(AsyncFTaskCompletedMethodBuilder))] + public struct FTaskCompleted : ICriticalNotifyCompletion + { + [DebuggerHidden] + public bool IsCompleted => true; + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public FTaskCompleted GetAwaiter() + { + return this; + } + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetResult() { } + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void OnCompleted(Action continuation) { } + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UnsafeOnCompleted(Action continuation) { } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Task/FVoid.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Task/FVoid.cs new file mode 100644 index 0000000..f10ca7c --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/FTask/Task/FVoid.cs @@ -0,0 +1,29 @@ +using System; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace Fantasy.Async +{ + [StructLayout(LayoutKind.Auto)] + [AsyncMethodBuilder(typeof(AsyncFVoidMethodBuilder))] + internal struct FVoid : ICriticalNotifyCompletion + { + public bool IsCompleted + { + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get => true; + } + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Coroutine() { } + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void OnCompleted(Action continuation) { } + + [DebuggerHidden] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UnsafeOnCompleted(Action continuation) { } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/ByteHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/ByteHelper.cs new file mode 100644 index 0000000..9d3d6e0 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/ByteHelper.cs @@ -0,0 +1,388 @@ +using System; +using System.Buffers; +using System.IO; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using Fantasy.Async; + +namespace Fantasy.Helper +{ + /// + /// 提供字节操作辅助方法的静态类。 + /// + public static class ByteHelper + { + private static readonly string[] Suffix = { "Byte", "KB", "MB", "GB", "TB" }; + + /// + /// 从指定的文件流中读取一个 64 位整数。 + /// + public static long ReadInt64(FileStream stream) + { + var buffer = new byte[8]; +#if FANTASY_NET + stream.ReadExactly(buffer, 0, 8); +#else + stream.Read(buffer, 0, 8); +#endif + return BitConverter.ToInt64(buffer, 0); + } + + /// + /// 从指定的文件流中读取一个 32 位整数。 + /// + public static int ReadInt32(FileStream stream) + { + var buffer = new byte[4]; +#if FANTASY_NET + stream.ReadExactly(buffer, 0, 4); +#else + stream.Read(buffer, 0, 4); +#endif + return BitConverter.ToInt32(buffer, 0); + } + + /// + /// 从指定的内存流中读取一个 64 位整数。 + /// + public static long ReadInt64(MemoryStream stream) + { + var buffer = new byte[8]; +#if FANTASY_NET + stream.ReadExactly(buffer, 0, 8); +#else + stream.Read(buffer, 0, 8); +#endif + return BitConverter.ToInt64(buffer, 0); + } + + /// + /// 从指定的内存流中读取一个 32 位整数。 + /// + public static int ReadInt32(MemoryStream stream) + { + var buffer = new byte[4]; +#if FANTASY_NET + stream.ReadExactly(buffer, 0, 4); +#else + stream.Read(buffer, 0, 4); +#endif + return BitConverter.ToInt32(buffer, 0); + } + + /// + /// 将字节转换为十六进制字符串表示。 + /// + public static string ToHex(this byte b) + { + return b.ToString("X2"); + } + + /// + /// 将字节数组转换为十六进制字符串表示。 + /// + public static string ToHex(this byte[] bytes) + { + var stringBuilder = new StringBuilder(); + foreach (var b in bytes) + { + stringBuilder.Append(b.ToString("X2")); + } + + return stringBuilder.ToString(); + } + + /// + /// 将字节数组按指定格式转换为十六进制字符串表示。 + /// + public static string ToHex(this byte[] bytes, string format) + { + var stringBuilder = new StringBuilder(); + foreach (var b in bytes) + { + stringBuilder.Append(b.ToString(format)); + } + + return stringBuilder.ToString(); + } + + /// + /// 将字节数组的指定范围按十六进制格式转换为字符串表示。 + /// + public static string ToHex(this byte[] bytes, int offset, int count) + { + var stringBuilder = new StringBuilder(); + for (var i = offset; i < offset + count; ++i) + { + stringBuilder.Append(bytes[i].ToString("X2")); + } + + return stringBuilder.ToString(); + } + + /// + /// 将字节数组转换为默认编码的字符串表示。 + /// + public static string ToStr(this byte[] bytes) + { + return Encoding.Default.GetString(bytes); + } + + /// + /// 将字节数组的指定范围按默认编码转换为字符串表示。 + /// + public static string ToStr(this byte[] bytes, int index, int count) + { + return Encoding.Default.GetString(bytes, index, count); + } + + /// + /// 将字节数组转换为 UTF-8 编码的字符串表示。 + /// + public static string Utf8ToStr(this byte[] bytes) + { + return Encoding.UTF8.GetString(bytes); + } + + /// + /// 将字节数组的指定范围按 UTF-8 编码转换为字符串表示。 + /// + public static string Utf8ToStr(this byte[] bytes, int index, int count) + { + return Encoding.UTF8.GetString(bytes, index, count); + } + + /// + /// 将无符号整数写入字节数组的指定偏移位置。 + /// + public static void WriteTo(this byte[] bytes, int offset, uint num) + { + bytes[offset] = (byte)(num & 0xff); + bytes[offset + 1] = (byte)((num & 0xff00) >> 8); + bytes[offset + 2] = (byte)((num & 0xff0000) >> 16); + bytes[offset + 3] = (byte)((num & 0xff000000) >> 24); + } + + /// + /// 将有符号整数写入字节数组的指定偏移位置。 + /// + public static void WriteTo(this byte[] bytes, int offset, int num) + { + bytes[offset] = (byte)(num & 0xff); + bytes[offset + 1] = (byte)((num & 0xff00) >> 8); + bytes[offset + 2] = (byte)((num & 0xff0000) >> 16); + bytes[offset + 3] = (byte)((num & 0xff000000) >> 24); + } + + /// + /// 将字节写入字节数组的指定偏移位置。 + /// + public static void WriteTo(this byte[] bytes, int offset, byte num) + { + bytes[offset] = num; + } + + /// + /// 将有符号短整数写入字节数组的指定偏移位置。 + /// + public static void WriteTo(this byte[] bytes, int offset, short num) + { + bytes[offset] = (byte)(num & 0xff); + bytes[offset + 1] = (byte)((num & 0xff00) >> 8); + } + + /// + /// 将无符号短整数写入字节数组的指定偏移位置。 + /// + public static void WriteTo(this byte[] bytes, int offset, ushort num) + { + bytes[offset] = (byte)(num & 0xff); + bytes[offset + 1] = (byte)((num & 0xff00) >> 8); + } + + /// + /// 将字节数转换为可读的速度表示。 + /// + /// 字节数 + /// 可读的速度表示 + public static string ToReadableSpeed(this long byteCount) + { + var i = 0; + double dblSByte = byteCount; + if (byteCount <= 1024) + { + return $"{dblSByte:0.##}{Suffix[i]}"; + } + + for (i = 0; byteCount / 1024 > 0; i++, byteCount /= 1024) + { + dblSByte = byteCount / 1024.0; + } + + return $"{dblSByte:0.##}{Suffix[i]}"; + } + + /// + /// 将字节数转换为可读的速度表示。 + /// + /// 字节数 + /// 可读的速度表示 + public static string ToReadableSpeed(this ulong byteCount) + { + var i = 0; + double dblSByte = byteCount; + + if (byteCount <= 1024) + { + return $"{dblSByte:0.##}{Suffix[i]}"; + } + + for (i = 0; byteCount / 1024 > 0; i++, byteCount /= 1024) + { + dblSByte = byteCount / 1024.0; + } + + return $"{dblSByte:0.##}{Suffix[i]}"; + } + + /// + /// 合并两个字节数组。 + /// + /// 第一个字节数组 + /// 第二个字节数组 + /// 合并后的字节数组 + public static byte[] MergeBytes(byte[] bytes, byte[] otherBytes) + { + var result = new byte[bytes.Length + otherBytes.Length]; + bytes.CopyTo(result, 0); + otherBytes.CopyTo(result, bytes.Length); + return result; + } + + /// + /// 根据int值获取字节数组。 + /// + /// + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void GetBytes(this int value, byte[] buffer) + { + if (buffer.Length < 4) + { + throw new ArgumentException("Buffer too small."); + } + +#if FANTASY_NET || FANTASY_CONSOLE + MemoryMarshal.Write(buffer.AsSpan(), in value); +#endif +#if FANTASY_UNITY + MemoryMarshal.Write(buffer.AsSpan(), ref value); +#endif + } + + /// + /// 根据int值获取字节数组。 + /// + /// + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void WriteBytes(this MemoryStream memoryStream, int value) + { + using var memoryOwner = MemoryPool.Shared.Rent(4); + var memorySpan = memoryOwner.Memory.Span; +#if FANTASY_NET + MemoryMarshal.Write(memorySpan, in value); +#endif +#if FANTASY_UNITY + MemoryMarshal.Write(memorySpan, ref value); +#endif + memoryStream.Write(memorySpan); + } + + /// + /// 根据uint值获取字节数组。 + /// + /// + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void GetBytes(ref this uint value, byte[] buffer) + { + if (buffer.Length < 4) + { + throw new ArgumentException("Buffer too small."); + } + +#if FANTASY_NET + MemoryMarshal.Write(buffer.AsSpan(), in value); +#endif +#if FANTASY_UNITY + MemoryMarshal.Write(buffer.AsSpan(), ref value); +#endif + } + + /// + /// 根据uint值获取字节数组。 + /// + /// + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void WriteBytes(this MemoryStream memoryStream, uint value) + { + using var memoryOwner = MemoryPool.Shared.Rent(4); + var memorySpan = memoryOwner.Memory.Span; +#if FANTASY_NET + MemoryMarshal.Write(memorySpan, in value); +#endif +#if FANTASY_UNITY + MemoryMarshal.Write(memorySpan, ref value); +#endif + memoryStream.Write(memorySpan); + } + + /// + /// 根据int值获取字节数组。 + /// + /// + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void GetBytes(this long value, byte[] buffer) + { + if (buffer.Length < 8) + { + throw new ArgumentException("Buffer too small."); + } +#if FANTASY_NET + MemoryMarshal.Write(buffer.AsSpan(), in value); +#endif +#if FANTASY_UNITY + MemoryMarshal.Write(buffer.AsSpan(), ref value); +#endif + } + + /// + /// 根据uint值获取字节数组。 + /// + /// + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void WriteBytes(this MemoryStream memoryStream, long value) + { + using var memoryOwner = MemoryPool.Shared.Rent(8); + var memorySpan = memoryOwner.Memory.Span; +#if FANTASY_NET + MemoryMarshal.Write(memorySpan, in value); +#endif +#if FANTASY_UNITY + MemoryMarshal.Write(memorySpan, ref value); +#endif + memoryStream.Write(memorySpan); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/ADownload.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/ADownload.cs new file mode 100644 index 0000000..4846d51 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/ADownload.cs @@ -0,0 +1,50 @@ +#if FANTASY_UNITY +using System; +using Fantasy.Async; +using UnityEngine.Networking; + +namespace Fantasy.Unity.Download +{ + public abstract class AUnityDownload : IDisposable + { + private long _timeId; + private ulong _totalDownloadedBytes; + private Download _download; + protected UnityWebRequest UnityWebRequest; + private FCancellationToken _cancellationToken; + private Scene Scene; + + protected AUnityDownload(Scene scene,Download download) + { + Scene = scene; + _download = download; + _download.Tasks.Add(this); + } + + protected UnityWebRequestAsyncOperation Start(UnityWebRequest unityWebRequest, bool monitor) + { + UnityWebRequest = unityWebRequest; + _timeId = Scene.TimerComponent.Unity.RepeatedTimer(33, Update); + return UnityWebRequest.SendWebRequest(); + } + + private void Update() + { + var downloadSpeed = UnityWebRequest.downloadedBytes - _totalDownloadedBytes; + _download.DownloadSpeed += downloadSpeed; + _download.TotalDownloadedBytes += downloadSpeed; + _totalDownloadedBytes = UnityWebRequest.downloadedBytes; + } + + public virtual void Dispose() + { + Update(); + _totalDownloadedBytes = 0; + UnityWebRequest?.Dispose(); + _download.Tasks.Remove(this); + Scene.TimerComponent.Unity.Remove(ref _timeId); + _download = null; + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/ADownload.cs.meta b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/ADownload.cs.meta new file mode 100644 index 0000000..70e1e3c --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/ADownload.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c5743903d34d474a818b5c2bafa31459 +timeCreated: 1726021902 \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/Download.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/Download.cs new file mode 100644 index 0000000..a53a42a --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/Download.cs @@ -0,0 +1,72 @@ +#if FANTASY_UNITY +using System.Collections.Generic; +using System.Linq; +using Fantasy.Async; +using UnityEngine; + +namespace Fantasy.Unity.Download +{ + public sealed class Download + { + public Scene Scene; + public ulong DownloadSpeed; + public ulong TotalDownloadedBytes; + public readonly HashSet Tasks = new(); + + public static Download Create(Scene scene) => new Download(scene); + + private Download(Scene scene) + { + Scene = scene; + } + + public void Clear() + { + DownloadSpeed = 0; + TotalDownloadedBytes = 0; + + if (Tasks.Count <= 0) + { + return; + } + + foreach (var aUnityDownload in Tasks.ToArray()) + { + aUnityDownload.Dispose(); + } + + Tasks.Clear(); + } + + public FTask DownloadAssetBundle(string url, bool monitor = false, FCancellationToken cancellationToken = null) + { + return new DownloadAssetBundle(Scene, this).StartDownload(url, monitor, cancellationToken); + } + + public FTask DownloadAudioClip(string url, AudioType audioType, bool monitor = false, FCancellationToken cancellationToken = null) + { + return new DownloadAudioClip(Scene, this).StartDownload(url, audioType, monitor, cancellationToken); + } + + public FTask DownloadSprite(string url, bool monitor = false, FCancellationToken cancellationToken = null) + { + return new DownloadSprite(Scene, this).StartDownload(url, monitor, cancellationToken); + } + + public FTask DownloadTexture(string url, bool monitor = false, FCancellationToken cancellationToken = null) + { + return new DownloadTexture(Scene, this).StartDownload(url, monitor, cancellationToken); + } + + public FTask DownloadText(string url, bool monitor = false, FCancellationToken cancellationToken = null) + { + return new DownloadText(Scene, this).StartDownload(url, monitor, cancellationToken); + } + + public FTask DownloadByte(string url, bool monitor = false, FCancellationToken cancellationToken = null) + { + return new DownloadByte(Scene, this).StartDownload(url, monitor, cancellationToken); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/Download.cs.meta b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/Download.cs.meta new file mode 100644 index 0000000..41e84be --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/Download.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5715816370e84842aaab799c9776a5e4 +timeCreated: 1726023436 \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAssetBundle.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAssetBundle.cs new file mode 100644 index 0000000..9d8f5a4 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAssetBundle.cs @@ -0,0 +1,54 @@ +#if FANTASY_UNITY +using System; +using Fantasy.Async; +using UnityEngine; +using UnityEngine.Networking; + +namespace Fantasy.Unity.Download +{ + public sealed class DownloadAssetBundle : AUnityDownload + { + public DownloadAssetBundle(Scene scene, Download download) : base(scene, download) + { + } + + public FTask StartDownload(string url, bool monitor, FCancellationToken cancellationToken = null) + { + var task = FTask.Create(false); + var unityWebRequestAsyncOperation = Start(UnityWebRequestAssetBundle.GetAssetBundle(Uri.EscapeUriString(url)), monitor); + + if (cancellationToken != null) + { + cancellationToken.Add(() => + { + Dispose(); + task.SetResult(null); + }); + } + + unityWebRequestAsyncOperation.completed += operation => + { + try + { + if (UnityWebRequest.result == UnityWebRequest.Result.Success) + { + var assetBundle = DownloadHandlerAssetBundle.GetContent(UnityWebRequest); + task.SetResult(assetBundle); + } + else + { + Log.Error(UnityWebRequest.error); + task.SetResult(null); + } + } + finally + { + Dispose(); + } + }; + + return task; + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAssetBundle.cs.meta b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAssetBundle.cs.meta new file mode 100644 index 0000000..c6bf29a --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAssetBundle.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 07cbb9a010ed4fe1b90919f81847b9ea +timeCreated: 1726023471 \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAudioClip.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAudioClip.cs new file mode 100644 index 0000000..29b3dc5 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAudioClip.cs @@ -0,0 +1,54 @@ +#if FANTASY_UNITY +using System; +using Fantasy.Async; +using UnityEngine; +using UnityEngine.Networking; + +namespace Fantasy.Unity.Download +{ + public sealed class DownloadAudioClip : AUnityDownload + { + public DownloadAudioClip(Scene scene, Download download) : base(scene, download) + { + } + + public FTask StartDownload(string url, AudioType audioType, bool monitor, FCancellationToken cancellationToken = null) + { + var task = FTask.Create(false); + var unityWebRequestAsyncOperation = Start(UnityWebRequestMultimedia.GetAudioClip(Uri.EscapeUriString(url), audioType), monitor); + + if (cancellationToken != null) + { + cancellationToken.Add(() => + { + Dispose(); + task.SetResult(null); + }); + } + + unityWebRequestAsyncOperation.completed += operation => + { + try + { + if (UnityWebRequest.result == UnityWebRequest.Result.Success) + { + var audioClip = DownloadHandlerAudioClip.GetContent(UnityWebRequest); + task.SetResult(audioClip); + } + else + { + Log.Error(UnityWebRequest.error); + task.SetResult(null); + } + } + finally + { + Dispose(); + } + }; + + return task; + } + } +} +#endif diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAudioClip.cs.meta b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAudioClip.cs.meta new file mode 100644 index 0000000..6440f22 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadAudioClip.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 66d3739ec33845148534e6ecaf134b73 +timeCreated: 1726023476 \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadByte.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadByte.cs new file mode 100644 index 0000000..6c934d9 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadByte.cs @@ -0,0 +1,52 @@ +#if FANTASY_UNITY +using Fantasy.Async; +using UnityEngine.Networking; + +namespace Fantasy.Unity.Download +{ + public sealed class DownloadByte : AUnityDownload + { + public DownloadByte(Scene scene, Download download) : base(scene, download) + { + } + + public FTask StartDownload(string url, bool monitor, FCancellationToken cancellationToken = null) + { + var task = FTask.Create(false); + var unityWebRequestAsyncOperation = Start(UnityWebRequest.Get(url), monitor); + + if (cancellationToken != null) + { + cancellationToken.Add(() => + { + Dispose(); + task.SetResult(null); + }); + } + + unityWebRequestAsyncOperation.completed += operation => + { + try + { + if (UnityWebRequest.result == UnityWebRequest.Result.Success) + { + var bytes = UnityWebRequest.downloadHandler.data; + task.SetResult(bytes); + } + else + { + Log.Error(UnityWebRequest.error); + task.SetResult(null); + } + } + finally + { + Dispose(); + } + }; + + return task; + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadByte.cs.meta b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadByte.cs.meta new file mode 100644 index 0000000..0aa0487 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadByte.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ae87f3ea9f4e4c9ebabedf45b0bb83b1 +timeCreated: 1726023481 \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadSprite.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadSprite.cs new file mode 100644 index 0000000..802a967 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadSprite.cs @@ -0,0 +1,55 @@ +#if FANTASY_UNITY +using System; +using Fantasy.Async; +using UnityEngine; +using UnityEngine.Networking; + +namespace Fantasy.Unity.Download +{ + public sealed class DownloadSprite : AUnityDownload + { + public DownloadSprite(Scene scene, Download download) : base(scene, download) + { + } + + public FTask StartDownload(string url, bool monitor, FCancellationToken cancellationToken = null) + { + var task = FTask.Create(false); + var unityWebRequestAsyncOperation = Start(UnityWebRequestTexture.GetTexture(Uri.EscapeUriString(url)), monitor); + + if (cancellationToken != null) + { + cancellationToken.Add(() => + { + Dispose(); + task.SetResult(null); + }); + } + + unityWebRequestAsyncOperation.completed += operation => + { + try + { + if (UnityWebRequest.result == UnityWebRequest.Result.Success) + { + var texture = DownloadHandlerTexture.GetContent(UnityWebRequest); + var sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.one * 5, 1f); + task.SetResult(sprite); + } + else + { + Log.Error(UnityWebRequest.error); + task.SetResult(null); + } + } + finally + { + Dispose(); + } + }; + + return task; + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadSprite.cs.meta b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadSprite.cs.meta new file mode 100644 index 0000000..354e3e3 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadSprite.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0c2a0f442e974169b7d8b7a5878fe0e6 +timeCreated: 1726023487 \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadText.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadText.cs new file mode 100644 index 0000000..50d8329 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadText.cs @@ -0,0 +1,52 @@ +#if FANTASY_UNITY +using Fantasy.Async; +using UnityEngine.Networking; + +namespace Fantasy.Unity.Download +{ + public sealed class DownloadText : AUnityDownload + { + public DownloadText(Scene scene, Download download) : base(scene, download) + { + } + + public FTask StartDownload(string url, bool monitor, FCancellationToken cancellationToken = null) + { + var task = FTask.Create(false); + var unityWebRequestAsyncOperation = Start(UnityWebRequest.Get(url), monitor); + + if (cancellationToken != null) + { + cancellationToken.Add(() => + { + Dispose(); + task.SetResult(null); + }); + } + + unityWebRequestAsyncOperation.completed += operation => + { + try + { + if (UnityWebRequest.result == UnityWebRequest.Result.Success) + { + var text = UnityWebRequest.downloadHandler.text; + task.SetResult(text); + } + else + { + Log.Error(UnityWebRequest.error); + task.SetResult(null); + } + } + finally + { + Dispose(); + } + }; + + return task; + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadText.cs.meta b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadText.cs.meta new file mode 100644 index 0000000..35892a9 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadText.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4284aafa8572453cb75920d2d58e9c50 +timeCreated: 1726023491 \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadTexture.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadTexture.cs new file mode 100644 index 0000000..f66533d --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadTexture.cs @@ -0,0 +1,54 @@ +#if FANTASY_UNITY +using System; +using Fantasy.Async; +using UnityEngine; +using UnityEngine.Networking; + +namespace Fantasy.Unity.Download +{ + public sealed class DownloadTexture : AUnityDownload + { + public DownloadTexture(Scene scene, Download download) : base(scene, download) + { + } + + public FTask StartDownload(string url, bool monitor, FCancellationToken cancellationToken = null) + { + var task = FTask.Create(false); + var unityWebRequestAsyncOperation = Start(UnityWebRequestTexture.GetTexture(Uri.EscapeUriString(url)), monitor); + + if (cancellationToken != null) + { + cancellationToken.Add(() => + { + Dispose(); + task.SetResult(null); + }); + } + + unityWebRequestAsyncOperation.completed += operation => + { + try + { + if (UnityWebRequest.result == UnityWebRequest.Result.Success) + { + var texture = DownloadHandlerTexture.GetContent(UnityWebRequest); + task.SetResult(texture); + } + else + { + Log.Error(UnityWebRequest.error); + task.SetResult(null); + } + } + finally + { + Dispose(); + } + }; + + return task; + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadTexture.cs.meta b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadTexture.cs.meta new file mode 100644 index 0000000..7b48ea6 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/Download/DownloadTexture.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5eaa6023378844ebb51e4b80425d8a4e +timeCreated: 1726023496 \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/EncryptHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/EncryptHelper.cs new file mode 100644 index 0000000..be950bc --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/EncryptHelper.cs @@ -0,0 +1,63 @@ +using System.IO; +using System.Security.Cryptography; +using System.Text; + +namespace Fantasy.Helper +{ + /// + /// 提供计算 MD5 散列值的辅助方法。 + /// + public static partial class EncryptHelper + { + private static readonly SHA256 Sha256Hash = SHA256.Create(); + + /// + /// 计算指定字节数组的Sha256。 + /// + /// + /// + public static byte[] ComputeSha256Hash(byte[] bytes) + { +#if FANTASY_UNITY + using var sha256Hash = SHA256.Create(); + return sha256Hash.ComputeHash(bytes); +#else + return SHA256.HashData(bytes); +#endif + } + + /// + /// 计算指定文件的 MD5 散列值。 + /// + /// 要计算散列值的文件路径。 + /// 表示文件的 MD5 散列值的字符串。 + public static string FileMD5(string filePath) + { + using var file = new FileStream(filePath, FileMode.Open); + return FileMD5(file); + } + + /// + /// 计算给定文件流的 MD5 散列值。 + /// + /// 要计算散列值的文件流。 + /// 表示文件流的 MD5 散列值的字符串。 + public static string FileMD5(FileStream fileStream) + { + var md5 = MD5.Create(); + return md5.ComputeHash(fileStream).ToHex("x2"); + } + + /// + /// 计算给定字节数组的 MD5 散列值。 + /// + /// 要计算散列值的字节数组。 + /// 表示字节数组的 MD5 散列值的字符串。 + public static string BytesMD5(byte[] bytes) + { + var md5 = MD5.Create(); + bytes = md5.ComputeHash(bytes); + return bytes.ToHex("x2"); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/FileHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/FileHelper.cs new file mode 100644 index 0000000..66ff5ae --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/FileHelper.cs @@ -0,0 +1,186 @@ +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Threading.Tasks; + +namespace Fantasy.Helper +{ + /// + /// 文件操作助手类,提供了各种文件操作方法。 + /// + public static partial class FileHelper + { + /// + /// 获取相对路径的完整路径。 + /// + /// 相对路径。 + /// 完整路径。 + public static string GetFullPath(string relativePath) + { + return Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), relativePath)); + } + + /// + /// 获取相对路径的完整路径。 + /// + /// 相对于指定的目录的相对路径。 + /// 指定的目录 + /// 完整路径。 + public static string GetFullPath(string relativePath, string srcDir) + { + return Path.GetFullPath(Path.Combine(srcDir, relativePath)); + } + + /// + /// 获取相对路径的的文本信息。 + /// + /// + /// + public static async Task GetTextByRelativePath(string relativePath) + { + var fullPath = GetFullPath(relativePath); + return await File.ReadAllTextAsync(fullPath, Encoding.UTF8); + } + + /// + /// 获取绝对路径的的文本信息。 + /// + /// + /// + public static async Task GetText(string fullPath) + { + return await File.ReadAllTextAsync(fullPath, Encoding.UTF8); + } + + /// + /// 根据文件夹路径创建文件夹,如果文件夹不存在会自动创建文件夹。 + /// + /// + public static void CreateDirectory(string directoryPath) + { + if (directoryPath.LastIndexOf('/') != directoryPath.Length - 1) + { + directoryPath += "/"; + } + + var directoriesByFilePath = GetDirectoriesByFilePath(directoryPath); + + foreach (var dir in directoriesByFilePath) + { + if (Directory.Exists(dir)) + { + continue; + } + + Directory.CreateDirectory(dir); + } + } + + /// + /// 将文件复制到目标路径,如果目标目录不存在会自动创建目录。 + /// + /// 源文件路径。 + /// 目标文件路径。 + /// 是否覆盖已存在的目标文件。 + public static void Copy(string sourceFile, string destinationFile, bool overwrite) + { + CreateDirectory(destinationFile); + File.Copy(sourceFile, destinationFile, overwrite); + } + + /// + /// 获取文件路径内的所有文件夹路径。 + /// + /// 文件路径。 + /// 文件夹路径列表。 + public static IEnumerable GetDirectoriesByFilePath(string filePath) + { + var dir = ""; + var fileDirectories = filePath.Split('/'); + + for (var i = 0; i < fileDirectories.Length - 1; i++) + { + dir = $"{dir}{fileDirectories[i]}/"; + yield return dir; + } + + if (fileDirectories.Length == 1) + { + yield return filePath; + } + } + + /// + /// 将文件夹内的所有内容复制到目标位置。 + /// + /// 源文件夹路径。 + /// 目标文件夹路径。 + /// 是否覆盖已存在的文件。 + public static void CopyDirectory(string sourceDirectory, string destinationDirectory, bool overwrite) + { + // 创建目标文件夹 + + if (!Directory.Exists(destinationDirectory)) + { + Directory.CreateDirectory(destinationDirectory); + } + + // 获取当前文件夹中的所有文件 + + var files = Directory.GetFiles(sourceDirectory); + + // 拷贝文件到目标文件夹 + + foreach (var file in files) + { + var fileName = Path.GetFileName(file); + var destinationPath = Path.Combine(destinationDirectory, fileName); + File.Copy(file, destinationPath, overwrite); + } + + // 获取源文件夹中的所有子文件夹 + + var directories = Directory.GetDirectories(sourceDirectory); + + // 递归方式拷贝文件夹 + + foreach (var directory in directories) + { + var directoryName = Path.GetFileName(directory); + var destinationPath = Path.Combine(destinationDirectory, directoryName); + CopyDirectory(directory, destinationPath, overwrite); + } + } + + /// + /// 获取目录下的所有文件 + /// + /// 文件夹路径。 + /// 需要查找的文件通配符 + /// 查找的类型 + /// + public static string[] GetDirectoryFile(string folderPath, string searchPattern, SearchOption searchOption) + { + return Directory.GetFiles(folderPath, searchPattern, searchOption); + } + + /// + /// 清空文件夹内的所有文件。 + /// + /// 文件夹路径。 + public static void ClearDirectoryFile(string folderPath) + { + if (!Directory.Exists(folderPath)) + { + return; + } + + var files = Directory.GetFiles(folderPath); + + foreach (var file in files) + { + File.Delete(file); + } + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HashCodeHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HashCodeHelper.cs new file mode 100644 index 0000000..7f2a5af --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HashCodeHelper.cs @@ -0,0 +1,229 @@ +using System.Security.Cryptography; +using System.Text; +// ReSharper disable InconsistentNaming + +namespace Fantasy.Helper +{ + /// + /// HashCode算法帮助类 + /// + public static partial class HashCodeHelper + { + private static readonly SHA256 Sha256Hash = SHA256.Create(); + + /// + /// 计算两个字符串的HashCode + /// + /// + /// + /// + public static int GetHashCode(string a, string b) + { + var hash = 17; + hash = hash * 31 + a.GetHashCode(); + hash = hash * 31 + b.GetHashCode(); + return hash; + } +#if FANTASY_NET || !FANTASY_WEBGL + /// + /// 使用bkdr算法生成一个long的值 + /// + /// + /// + public static unsafe long GetBKDRHashCode(string str) + { + ulong hash = 0; + // 如果要修改这个种子、建议选择一个质数来做种子 + const uint seed = 13131; // 31 131 1313 13131 131313 etc.. + fixed (char* p = str) + { + for (var i = 0; i < str.Length; i++) + { + var c = p[i]; + var high = (byte)(c >> 8); + var low = (byte)(c & byte.MaxValue); + hash = hash * seed + high; + hash = hash * seed + low; + } + } + return (long)hash; + } + + /// + /// 使用MurmurHash3算法生成一个uint的值 + /// + /// + /// + public static unsafe uint MurmurHash3(string str) + { + const uint seed = 0xc58f1a7b; + uint hash = seed; + uint c1 = 0xcc9e2d51; + uint c2 = 0x1b873593; + + fixed (char* p = str) + { + var current = p; + + for (var i = 0; i < str.Length; i++) + { + var k1 = (uint)(*current); + k1 *= c1; + k1 = (k1 << 15) | (k1 >> (32 - 15)); + k1 *= c2; + + hash ^= k1; + hash = (hash << 13) | (hash >> (32 - 13)); + hash = hash * 5 + 0xe6546b64; + + current++; + } + } + + hash ^= (uint)str.Length; + hash ^= hash >> 16; + hash *= 0x85ebca6b; + hash ^= hash >> 13; + hash *= 0xc2b2ae35; + hash ^= hash >> 16; + return hash; + } + + /// + /// 使用MurmurHash3算法生成一个long的值 + /// + /// + /// + public static unsafe long ComputeHash64(string str) + { + const ulong seed = 0xc58f1a7bc58f1a7bUL; // 64-bit seed + var hash = seed; + var c1 = 0x87c37b91114253d5UL; + var c2 = 0x4cf5ad432745937fUL; + + fixed (char* p = str) + { + var current = p; + + for (var i = 0; i < str.Length; i++) + { + var k1 = (ulong)(*current); + k1 *= c1; + k1 = (k1 << 31) | (k1 >> (64 - 31)); + k1 *= c2; + + hash ^= k1; + hash = (hash << 27) | (hash >> (64 - 27)); + hash = hash * 5 + 0x52dce729; + + current++; + } + } + + hash ^= (ulong)str.Length; + hash ^= hash >> 33; + hash *= 0xff51afd7ed558ccdUL; + hash ^= hash >> 33; + hash *= 0xc4ceb9fe1a85ec53UL; + hash ^= hash >> 33; + return (long)hash; + } +#endif +#if FANTASY_WEBGL + /// + /// 使用bkdr算法生成一个long的值 + /// + /// + /// + public static long GetBKDRHashCode(string str) + { + long hash = 0; + // 如果要修改这个种子、建议选择一个质数来做种子 + const uint seed = 13131; // 31 131 1313 13131 131313 etc.. + foreach (var c in str) + { + var high = (byte)(c >> 8); + var low = (byte)(c & byte.MaxValue); + hash = hash * seed + high; + hash = hash * seed + low; + } + return hash; + } + /// + /// 使用MurmurHash3算法生成一个uint的值 + /// + /// + /// + public static uint MurmurHash3(string str) + { + const uint seed = 0xc58f1a7b; + uint hash = seed; + uint c1 = 0xcc9e2d51; + uint c2 = 0x1b873593; + + foreach (var t in str) + { + var k1 = (uint)(t); + k1 *= c1; + k1 = (k1 << 15) | (k1 >> (32 - 15)); + k1 *= c2; + + hash ^= k1; + hash = (hash << 13) | (hash >> (32 - 13)); + hash = hash * 5 + 0xe6546b64; + } + + hash ^= (uint)str.Length; + hash ^= hash >> 16; + hash *= 0x85ebca6b; + hash ^= hash >> 13; + hash *= 0xc2b2ae35; + hash ^= hash >> 16; + return hash; + } + + /// + /// 使用MurmurHash3算法生成一个long的值 + /// + /// + /// + public static long ComputeHash64(string str) + { + const ulong seed = 0xc58f1a7bc58f1a7bUL; // 64-bit seed + var hash = seed; + var c1 = 0x87c37b91114253d5UL; + var c2 = 0x4cf5ad432745937fUL; + + foreach (var t in str) + { + var k1 = (ulong)(t); + k1 *= c1; + k1 = (k1 << 31) | (k1 >> (64 - 31)); + k1 *= c2; + + hash ^= k1; + hash = (hash << 27) | (hash >> (64 - 27)); + hash = hash * 5 + 0x52dce729; + } + + hash ^= (ulong)str.Length; + hash ^= hash >> 33; + hash *= 0xff51afd7ed558ccdUL; + hash ^= hash >> 33; + hash *= 0xc4ceb9fe1a85ec53UL; + hash ^= hash >> 33; + return (long)hash; + } +#endif + /// + /// 根据字符串计算一个Hash值 + /// + /// + /// + public static int ComputeSha256HashAsInt(string rawData) + { + var bytes = Sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(rawData)); + return (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3]; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientHelper.cs new file mode 100644 index 0000000..3954a8c --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientHelper.cs @@ -0,0 +1,144 @@ +#if !FANTASY_WEBGL +using System; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Text; +using Fantasy.Async; +using Fantasy.Helper; +using Fantasy.Pool; +#pragma warning disable CS8603 // Possible null reference return. + +namespace Fantasy.Http +{ + /// + /// HTTP帮助类 + /// + public static partial class HttpClientHelper + { + private static readonly HttpClient Client = new HttpClient(new HttpClientHandler + { + ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true + }); + + /// + /// 用Post方式请求string数据 + /// + /// + /// + /// + /// + public static async FTask CallNotDeserializeByPost(string url, HttpContent content) + { + var response = await Client.PostAsync(url, content); + + if (response.StatusCode != HttpStatusCode.OK) + { + throw new Exception($"Unable to connect to server url {(object)url} HttpStatusCode:{(object)response.StatusCode}"); + } + + return await response.Content.ReadAsStringAsync(); + } + + /// + /// 用Get方式请求string数据 + /// + /// + /// + /// + public static async FTask CallNotDeserializeByGet(string url) + { + var response = await Client.GetAsync(url); + + if (response.StatusCode != HttpStatusCode.OK) + { + throw new Exception($"Unable to connect to server url {(object)url} HttpStatusCode:{(object)response.StatusCode}"); + } + + return await response.Content.ReadAsStringAsync(); + } + + /// + /// 用Post方式请求JSON数据,并自动把JSON转换为对象。 + /// + /// + /// + /// + /// + public static async FTask CallByPost(string url, HttpContent content) + { + return await Deserialize(url, await Client.PostAsync(url, content)); + } + + /// + /// 用Post方式请求JSON数据,并自动把JSON转换为对象。 + /// + /// + /// + /// + /// + public static async FTask CallByPost(string url, HttpMethod method) + { + return await Deserialize(url, await Client.SendAsync(new HttpRequestMessage(method, url))); + } + + /// + /// 用Get方式请求JSON数据,并自动把JSON转换为对象。 + /// + /// + /// + /// + public static async FTask CallByGet(string url) + { + return await Deserialize(url, await Client.GetAsync(url)); + } + + /// + /// 用Post方式请求JSON数据,并自动把JSON转换为对象。 + /// + /// + /// + /// + /// + /// + /// + /// + /// + public static async FTask Call(string url, int id, AuthenticationHeaderValue authentication, string method, params object[] @params) where TRequest : class, IJsonRpcRequest, new() + { + var request = Pool.Rent(); + using var httpClientPool = HttpClientPool.Create(); + var client = httpClientPool.Client; + client.DefaultRequestHeaders.Authorization = authentication; + + try + { + request.Init(method, id, @params); + var content = new StringContent(request.ToJson(), Encoding.UTF8, "application/json"); + var response = await Deserialize(url, await client.PostAsync(url, content)); + return response; + } + catch (Exception e) + { + Log.Error(e); + } + finally + { + Pool.Return(request); + } + + return default; + } + + private static async FTask Deserialize(string url, HttpResponseMessage response) + { + if (response.StatusCode != HttpStatusCode.OK) + { + throw new Exception($"Unable to connect to server url {(object)url} HttpStatusCode:{(object)response.StatusCode}"); + } + + return (await response.Content.ReadAsStringAsync()).Deserialize(); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientHelper.cs.meta b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientHelper.cs.meta new file mode 100644 index 0000000..70e3bd5 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientHelper.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f8005f3a1a1945a2929442f82832e765 +timeCreated: 1726023741 \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientPool.cs new file mode 100644 index 0000000..de421ff --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientPool.cs @@ -0,0 +1,44 @@ +#if !FANTASY_WEBGL +using System; +using System.Collections.Generic; +using System.Net.Http; +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +namespace Fantasy.Http +{ + internal class HttpClientPool : IDisposable + { + private bool IsDispose { get; set; } + public HttpClient Client { get; private set; } + private static readonly Queue Pools = new Queue(); + private static readonly HttpClientHandler ClientHandler = new HttpClientHandler + { + ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true + }; + + public static HttpClientPool Create() + { + if (Pools.TryDequeue(out var httpClientPool)) + { + httpClientPool.IsDispose = false; + return httpClientPool; + } + + httpClientPool = new HttpClientPool(); + httpClientPool.Client = new HttpClient(ClientHandler); + return httpClientPool; + } + + public void Dispose() + { + if (IsDispose) + { + return; + } + + IsDispose = true; + Pools.Enqueue(this); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientPool.cs.meta b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientPool.cs.meta new file mode 100644 index 0000000..a1ac3bf --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/HttpClientPool.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a78c441357d244d5ba490a13c89e1c50 +timeCreated: 1726023895 \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/IJsonRpcRequest.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/IJsonRpcRequest.cs new file mode 100644 index 0000000..ae756c5 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/IJsonRpcRequest.cs @@ -0,0 +1,20 @@ +using Fantasy.Pool; + +#if !FANTASY_WEBGL +namespace Fantasy.Http +{ + /// + /// 一个JsonRPC的接口 + /// + public interface IJsonRpcRequest : IPool + { + /// + /// 用于初始化这个Json对象 + /// + /// + /// + /// + void Init(string method, int id, params object[] @params); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/IJsonRpcRequest.cs.meta b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/IJsonRpcRequest.cs.meta new file mode 100644 index 0000000..9e01783 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/HttpClient/IJsonRpcRequest.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 72a03580c619417b9f8f92d99938e371 +timeCreated: 1726023900 \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/JsonHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/JsonHelper.cs new file mode 100644 index 0000000..2b10fab --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/JsonHelper.cs @@ -0,0 +1,57 @@ +using System; +using Newtonsoft.Json; +#pragma warning disable CS8603 + +namespace Fantasy.Helper +{ + /// + /// 提供操作 JSON 数据的辅助方法。 + /// + public static partial class JsonHelper + { + /// + /// 将对象序列化为 JSON 字符串。 + /// + /// 要序列化的对象类型。 + /// 要序列化的对象。 + /// 表示序列化对象的 JSON 字符串。 + public static string ToJson(this T t) + { + return JsonConvert.SerializeObject(t); + } + + /// + /// 反序列化 JSON 字符串为指定类型的对象。 + /// + /// 要反序列化的 JSON 字符串。 + /// 目标对象的类型。 + /// 是否使用反射进行反序列化(默认为 true)。 + /// 反序列化后的对象。 + public static object Deserialize(this string json, Type type, bool reflection = true) + { + return JsonConvert.DeserializeObject(json, type); + } + + /// + /// 反序列化 JSON 字符串为指定类型的对象。 + /// + /// 目标对象的类型。 + /// 要反序列化的 JSON 字符串。 + /// 反序列化后的对象。 + public static T Deserialize(this string json) + { + return JsonConvert.DeserializeObject(json); + } + + /// + /// 克隆对象,通过将对象序列化为 JSON,然后再进行反序列化。 + /// + /// 要克隆的对象类型。 + /// 要克隆的对象。 + /// 克隆后的对象。 + public static T Clone(T t) + { + return t.ToJson().Deserialize(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/NetworkHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/NetworkHelper.cs new file mode 100644 index 0000000..6a35a61 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/NetworkHelper.cs @@ -0,0 +1,443 @@ +#if !FANTASY_WEBGL +using System; +using System.Collections.Generic; +using System.Net; +using System.Net.NetworkInformation; +using System.Net.Sockets; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +#pragma warning disable CS8603 // Possible null reference return. + +// ReSharper disable InconsistentNaming + +namespace Fantasy.Helper +{ + /// + /// 提供网络操作相关的帮助方法。 + /// + public static partial class NetworkHelper + { + /// + /// 根据字符串获取一个IPEndPoint + /// + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static IPEndPoint GetIPEndPoint(string address) + { + try + { + var addressSplit = address.Split(':'); + if (addressSplit.Length != 2) + { + throw new FormatException("Invalid format"); + } + + var ipString = addressSplit[0]; + var portString = addressSplit[1]; + + if (!IPAddress.TryParse(ipString, out var ipAddress)) + { + throw new FormatException("Invalid IP address"); + } + + if (!int.TryParse(portString, out var port) || port < 0 || port > 65535) + { + throw new FormatException("Invalid port number"); + } + + return new IPEndPoint(ipAddress, port); + } + catch (Exception e) + { + Log.Error($"Error parsing IP and Port:{e.Message}"); + return null; + } + } + + /// + /// 克隆一个IPEndPoint + /// + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static IPEndPoint Clone(this EndPoint endPoint) + { + var ip = (IPEndPoint)endPoint; + return new IPEndPoint(ip.Address, ip.Port); + } + + /// + /// 比较两个IPEndPoint是否相等 + /// + /// + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool IPEndPointEquals(this EndPoint endPoint, IPEndPoint ipEndPoint) + { + var ip = (IPEndPoint)endPoint; + return ip.Address.Equals(ipEndPoint.Address) && ip.Port == ipEndPoint.Port; + } + + /// + /// 比较两个IPEndPoint是否相等 + /// + /// + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool IPEndPointEquals(this IPEndPoint endPoint, IPEndPoint ipEndPoint) + { + return endPoint.Address.Equals(ipEndPoint.Address) && endPoint.Port == ipEndPoint.Port; + } + +#if !FANTASY_WEBGL + /// + /// 将SocketAddress写入到Byte[]中 + /// + /// + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static unsafe void SocketAddressToByte(this SocketAddress socketAddress, byte[] buffer, int offset) + { + if (socketAddress == null) + { + throw new ArgumentNullException(nameof(socketAddress), "The SocketAddress cannot be null."); + } + + if (buffer == null) + { + throw new ArgumentNullException(nameof(buffer), "The buffer cannot be null."); + } + + if (buffer.Length < socketAddress.Size + offset + 8) + { + throw new ArgumentException("The buffer length is insufficient. It must be at least the size of the SocketAddress plus 8 bytes.", nameof(buffer)); + } + + fixed (byte* pBuffer = buffer) + { + var pOffsetBuffer = pBuffer + offset; + var addressFamilyValue = (int)socketAddress.Family; + var socketAddressSizeValue = socketAddress.Size; + Buffer.MemoryCopy(&addressFamilyValue, pOffsetBuffer, buffer.Length - offset, sizeof(int)); + Buffer.MemoryCopy(&socketAddressSizeValue, pOffsetBuffer + 4, buffer.Length - offset -4, sizeof(int)); + for (var i = 0; i < socketAddress.Size - 2; i++) + { + pOffsetBuffer[8 + i] = socketAddress[i + 2]; + } + } + } + + /// + /// 将byre[]转换为SocketAddress + /// + /// + /// + /// + /// + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static unsafe int ByteToSocketAddress(byte[] buffer, int offset, out SocketAddress socketAddress) + { + if (buffer == null) + { + throw new ArgumentNullException(nameof(buffer), "The buffer cannot be null."); + } + + if (buffer.Length < 8) + { + throw new ArgumentException("Buffer length is insufficient. It must be at least 8 bytes.", nameof(buffer)); + } + + try + { + fixed (byte* pBuffer = buffer) + { + var pOffsetBuffer = pBuffer + offset; + var addressFamily = (AddressFamily)Marshal.ReadInt32((IntPtr)pOffsetBuffer); + var socketAddressSize = Marshal.ReadInt32((IntPtr)(pOffsetBuffer + 4)); + + if (buffer.Length < offset + 8 + socketAddressSize) + { + throw new ArgumentException("Buffer length is insufficient for the given SocketAddress size.", nameof(buffer)); + } + + socketAddress = new SocketAddress(addressFamily, socketAddressSize); + + for (var i = 0; i < socketAddressSize - 2; i++) + { + socketAddress[i + 2] = *(pOffsetBuffer + 8 + i); + } + + return 8 + offset + socketAddressSize; + } + } + catch (ArgumentNullException ex) + { + throw new InvalidOperationException("An argument provided to the method is null.", ex); + } + catch (ArgumentException ex) + { + throw new InvalidOperationException("An argument provided to the method is invalid.", ex); + } + catch (Exception ex) + { + throw new InvalidOperationException("An unexpected error occurred while processing the buffer.", ex); + } + } + + /// + /// 将ReadOnlyMemory转换为SocketAddress + /// + /// + /// + /// + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static unsafe int ByteToSocketAddress(ReadOnlyMemory buffer, int offset, out SocketAddress socketAddress) + { + if (buffer.Length < 8) + { + throw new ArgumentException("Buffer length is insufficient. It must be at least 8 bytes.", nameof(buffer)); + } + + try + { + fixed (byte* pBuffer = buffer.Span) + { + var pOffsetBuffer = pBuffer + offset; + var addressFamily = (AddressFamily)Marshal.ReadInt32((IntPtr)pOffsetBuffer); + var socketAddressSize = Marshal.ReadInt32((IntPtr)(pOffsetBuffer + 4)); + + if (buffer.Length < offset + 8 + socketAddressSize) + { + throw new ArgumentException("Buffer length is insufficient for the given SocketAddress size.", nameof(buffer)); + } + + socketAddress = new SocketAddress(addressFamily, socketAddressSize); + + for (var i = 0; i < socketAddressSize - 2; i++) + { + socketAddress[i + 2] = *(pOffsetBuffer + 8 + i); + } + + return 8 + offset + socketAddressSize; + } + } + catch (ArgumentNullException ex) + { + throw new InvalidOperationException("An argument provided to the method is null.", ex); + } + catch (ArgumentException ex) + { + throw new InvalidOperationException("An argument provided to the method is invalid.", ex); + } + catch (Exception ex) + { + throw new InvalidOperationException("An unexpected error occurred while processing the buffer.", ex); + } + } + + /// + /// 根据SocketAddress获得IPEndPoint + /// + /// + /// + /// + public static unsafe IPEndPoint GetIPEndPoint(this SocketAddress socketAddress) + { + switch (socketAddress.Family) + { + case AddressFamily.InterNetwork: + { + var ipBytes = new byte[4]; + for (var i = 0; i < 4; i++) + { + ipBytes[i] = socketAddress[4 + i]; + } + var port = (socketAddress[2] << 8) + socketAddress[3]; + var ip = new IPAddress(ipBytes); + return new IPEndPoint(ip, port); + } + case AddressFamily.InterNetworkV6: + { + var ipBytes = new byte[16]; + Span socketAddressSpan = stackalloc byte[28]; + + for (var i = 0; i < 28; i++) + { + socketAddressSpan[i] = socketAddress[i]; + } + + fixed (byte* pSocketAddress = socketAddressSpan) + { + for (var i = 0; i < 16; i++) + { + ipBytes[i] = *(pSocketAddress + 8 + i); + } + + var port = (*(pSocketAddress + 2) << 8) + *(pSocketAddress + 3); + var scopeId = Marshal.ReadInt64((IntPtr)(pSocketAddress + 24)); + var ip = new IPAddress(ipBytes, scopeId); + return new IPEndPoint(ip, port); + } + } + default: + { + throw new NotSupportedException("Address family not supported."); + } + } + } +#endif + /// + /// 获取本机所有网络适配器的IP地址。 + /// + /// IP地址数组。 + public static string[] GetAddressIPs() + { + var list = new List(); + foreach (var networkInterface in NetworkInterface.GetAllNetworkInterfaces()) + { + // 仅考虑以太网类型的网络适配器 + if (networkInterface.NetworkInterfaceType != NetworkInterfaceType.Ethernet) + { + continue; + } + + foreach (var add in networkInterface.GetIPProperties().UnicastAddresses) + { + list.Add(add.Address.ToString()); + } + } + + return list.ToArray(); + } + + /// + /// 将主机名和端口号转换为 实例。 + /// + /// 主机名。 + /// 端口号。 + /// 实例。 + public static IPEndPoint ToIPEndPoint(string host, int port) + { + return new IPEndPoint(IPAddress.Parse(host), port); + } + + /// + /// 将地址字符串转换为 实例。 + /// + /// 地址字符串,格式为 "主机名:端口号"。 + /// 实例。 + public static IPEndPoint ToIPEndPoint(string address) + { + var index = address.LastIndexOf(':'); + var host = address.Substring(0, index); + var p = address.Substring(index + 1); + var port = int.Parse(p); + return ToIPEndPoint(host, port); + } + + /// + /// 将 实例转换为字符串表示形式。 + /// + /// 实例。 + /// 表示 的字符串。 + public static string IPEndPointToStr(this IPEndPoint self) + { + return $"{self.Address}:{self.Port}"; + } + + /// + /// 针对 Windows 平台设置UDP连接重置选项。 + /// + /// 要设置选项的 实例。 + public static void SetSioUdpConnReset(this Socket socket) + { + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + return; + } + + /* + 目前这个问题只有Windows下才会出现。 + 服务器端在发送数据时捕获到了一个异常, + 这个异常导致原因应该是远程客户端的UDP监听已停止导致数据发送出错。 + 按理说UDP是无连接的,报这个异常是不合理的 + 这个异常让整UDP的服务监听也停止了。 + 这样就因为一个客户端的数据发送无法到达而导致了服务挂了,所有客户端都无法与服务器通信了 + 想详细了解看下https://blog.csdn.net/sunzhen6251/article/details/124168805*/ + const uint IOC_IN = 0x80000000; + const uint IOC_VENDOR = 0x18000000; + const int SIO_UDP_CONNRESET = unchecked((int) (IOC_IN | IOC_VENDOR | 12)); + + socket.IOControl(SIO_UDP_CONNRESET, new[] {Convert.ToByte(false)}, null); + } + + /// + /// 将 Socket 缓冲区大小设置为操作系统限制。 + /// + /// 要设置缓冲区大小的 Socket。 + public static void SetSocketBufferToOsLimit(this Socket socket) + { + socket.SetReceiveBufferToOSLimit(); + socket.SetSendBufferToOSLimit(); + } + + /// + /// 将 Socket 接收缓冲区大小设置为操作系统限制。 + /// 尝试增加接收缓冲区大小的次数 = 默认 + 最大增加 100 MB。 + /// + /// 要设置接收缓冲区大小的 Socket。 + /// 每次增加的步长大小。 + /// 尝试增加缓冲区大小的次数。 + public static void SetReceiveBufferToOSLimit(this Socket socket, int stepSize = 1024, int attempts = 100_000) + { + // setting a too large size throws a socket exception. + // so let's keep increasing until we encounter it. + for (int i = 0; i < attempts; ++i) + { + // increase in 1 KB steps + try + { + socket.ReceiveBufferSize += stepSize; + } + catch (SocketException) + { + break; + } + } + } + + /// + /// 将 Socket 发送缓冲区大小设置为操作系统限制。 + /// 尝试增加发送缓冲区大小的次数 = 默认 + 最大增加 100 MB。 + /// + /// 要设置发送缓冲区大小的 Socket。 + /// 每次增加的步长大小。 + /// 尝试增加缓冲区大小的次数。 + public static void SetSendBufferToOSLimit(this Socket socket, int stepSize = 1024, int attempts = 100_000) + { + // setting a too large size throws a socket exception. + // so let's keep increasing until we encounter it. + for (var i = 0; i < attempts; ++i) + { + // increase in 1 KB steps + try + { + socket.SendBufferSize += stepSize; + } + catch (SocketException) + { + break; + } + } + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/RandomHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/RandomHelper.cs new file mode 100644 index 0000000..c90a16c --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/RandomHelper.cs @@ -0,0 +1,311 @@ +#if FANTASY_NET || !FANTASY_WEBGL +using System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using Fantasy.LowLevel; +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable. + +namespace Fantasy.Helper +{ + /// + /// 随机数操作助手类,提供各种随机数生成和操作方法。 + /// + public static partial class RandomHelper + { + [ThreadStatic] + private static Random _random; + + /// + /// 生成一个随机的无符号 64 位整数。 + /// + /// 无符号 64 位整数。 + public static ulong RandUInt64() + { + var byte8 = new FixedBytes8().AsSpan(); + var random = _random ??= new Random(); + random.NextBytes(byte8); + return BitConverter.ToUInt64(byte8); + } + + /// + /// 生成一个随机的 64 位整数。 + /// + /// 64 位整数。 + public static long RandInt64() + { + var byte8 = new FixedBytes8().AsSpan(); + var random = _random ??= new Random(); + random.NextBytes(byte8); + return BitConverter.ToInt64(byte8); + } + + /// + /// 生成一个随机的无符号 32 位整数。 + /// + /// 无符号 32 位整数。 + public static uint RandUInt32() + { + var random = _random ??= new Random(); + return (uint) random.Next(); + } + + /// + /// 生成一个随机的无符号 16 位整数。 + /// + /// 无符号 16 位整数。 + public static ushort RandUInt16() + { + var byte2 = new FixedBytes2().AsSpan(); + var random = _random ??= new Random(); + random.NextBytes(byte2); + return BitConverter.ToUInt16(byte2); + } + + /// + /// 在指定范围内生成一个随机整数(包含下限,不包含上限)。 + /// + /// 下限。 + /// 上限。 + /// 生成的随机整数。 + public static int RandomNumber(int lower, int upper) + { + var random = _random ??= new Random(); + return random.Next(lower, upper); + } + + /// + /// 生成一个随机的布尔值。 + /// + /// 随机的布尔值。 + public static bool RandomBool() + { + var random = _random ??= new Random(); + return (random.Next() & 1) == 0; + } + + /// + /// 从数组中随机选择一个元素。 + /// + /// 数组元素的类型。 + /// 要选择的数组。 + /// 随机选择的数组元素。 + public static T RandomArray(this T[] array) + { + return array[RandomNumber(0, array.Count())]; + } + + /// + /// 从列表中随机选择一个元素。 + /// + /// 列表元素的类型。 + /// 要选择的列表。 + /// 随机选择的列表元素。 + public static T RandomArray(this List array) + { + return array[RandomNumber(0, array.Count())]; + } + + /// + /// 打乱列表中元素的顺序。 + /// + /// 列表元素的类型。 + /// 要打乱顺序的列表。 + public static void BreakRank(List arr) + { + if (arr == null || arr.Count < 2) + { + return; + } + + var random = _random ??= new Random(); + for (var i = 0; i < arr.Count / 2; i++) + { + var index = random.Next(0, arr.Count); + (arr[index], arr[arr.Count - index - 1]) = (arr[arr.Count - index - 1], arr[index]); + } + } + + /// + /// 生成一个介于 0 和 1 之间的随机单精度浮点数。 + /// + /// 随机单精度浮点数。 + public static float RandFloat01() + { + var random = _random ??= new Random(); + var value = random.NextDouble(); + return (float) value; + } + + private static int Rand(int n) + { + var rd = new Random(); + // 注意,返回值是左闭右开,所以maxValue要加1 + return rd.Next(1, n + 1); + } + + /// + /// 根据权重随机选择一个索引。 + /// + /// 权重数组,每个元素表示相应索引的权重。 + /// 随机选择的索引值。 + public static int RandomByWeight(int[] weights) + { + var sum = weights.Sum(); + var numberRand = Rand(sum); + var sumTemp = 0; + for (var i = 0; i < weights.Length; i++) + { + sumTemp += weights[i]; + if (numberRand <= sumTemp) + { + return i; + } + } + + return -1; + } + + /// + /// 根据固定概率随机选择一个索引,即某个数值上限内随机多少次。 + /// + /// 概率数组,每个元素表示相应索引的概率。 + /// 随机选择的索引值。 + public static int RandomByFixedProbability(int[] args) + { + var random = _random ??= new Random(); + var argCount = args.Length; + var sum = args.Sum(); + var value = random.NextDouble() * sum; + while (sum > value) + { + sum -= args[argCount - 1]; + argCount--; + } + + return argCount; + } + + /// + /// 返回随机数。 + /// + /// 是否包含负数。 + /// 返回一个随机的单精度浮点数。 + public static float NextFloat(bool containNegative = false) + { + var random = _random ??= new Random(); + float f; + var buffer = new FixedBytes4().AsSpan(); + if (containNegative) + { + do + { + random.NextBytes(buffer); + f = BitConverter.ToSingle(buffer); + } while ((f >= float.MinValue && f < float.MaxValue) == false); + + return f; + } + + do + { + random.NextBytes(buffer); + f = BitConverter.ToSingle(buffer); + } while ((f >= 0 && f < float.MaxValue) == false); + + return f; + } + + /// + /// 返回一个小于所指定最大值的非负随机数。 + /// + /// 要生成的随机数的上限(随机数不能取该上限值)。 maxValue 必须大于或等于零。 + /// 大于等于零且小于 maxValue 的单精度浮点数,即:返回值的范围通常包括零但不包括 maxValue。 不过,如果 maxValue 等于零,则返回 maxValue。 + public static float NextFloat(float maxValue) + { + if (maxValue.Equals(0)) + { + return maxValue; + } + + if (maxValue < 0) + { + throw new ArgumentOutOfRangeException("“maxValue”必须大于 0。", "maxValue"); + } + + var random = _random ??= new Random(); + float f; + var buffer = new FixedBytes4().AsSpan(); + + do + { + random.NextBytes(buffer); + f = BitConverter.ToSingle(buffer); + } while ((f >= 0 && f < maxValue) == false); + + return f; + } + + /// + /// 返回一个指定范围内的随机数。 + /// + /// 返回的随机数的下界(随机数可取该下界值)。 + /// 返回的随机数的上界(随机数不能取该上界值)。 maxValue 必须大于或等于 minValue。 + /// 一个大于等于 minValue 且小于 maxValue 的单精度浮点数,即:返回的值范围包括 minValue 但不包括 maxValue。 如果 minValue 等于 maxValue,则返回 minValue。 + public static float NextFloat(float minValue, float maxValue) + { + if (minValue.Equals(maxValue)) + { + return minValue; + } + + if (minValue > maxValue) + { + throw new ArgumentOutOfRangeException("“minValue”不能大于 maxValue。", "minValue"); + } + + var random = _random ??= new Random(); + var buffer = new FixedBytes4().AsSpan(); + float f; + + do + { + random.NextBytes(buffer); + f = BitConverter.ToSingle(buffer); + } while ((f >= minValue && f < maxValue) == false); + + return f; + } + + /// + /// 在指定的矩形区域内随机生成一个二维向量位置。 + /// + /// X轴最小值。 + /// X轴最大值。 + /// Y轴最小值。 + /// Y轴最大值。 + /// 随机生成的二维向量位置。 + public static Vector2 NextVector2(float minX, float maxX, float minY, float maxY) + { + return new Vector2(NextFloat(minX, maxX), NextFloat(minY, maxY)); + } + + /// + /// 生成指定长度的随机数字代码。 + /// + /// 数字代码的长度。 + /// 生成的随机数字代码。 + public static string RandomNumberCode(int len = 6) + { + int num = 0; + for (int i = 0; i < len; i++) + { + int number = RandomNumber(0, 10); + num = num * 10 + number; + } + + return num.ToString(); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/RandomHelperWebgl.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/RandomHelperWebgl.cs new file mode 100644 index 0000000..0820acf --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/RandomHelperWebgl.cs @@ -0,0 +1,295 @@ +#if FANTASY_WEBGL +using System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; + +namespace Fantasy.Helper +{ + /// + /// 随机数操作助手类,提供各种随机数生成和操作方法。 + /// + public static partial class RandomHelper + { + private static readonly Random Random = new Random(); + private static readonly byte[] Byte8 = new byte[8]; + private static readonly byte[] Byte2 = new byte[2]; + + /// + /// 生成一个随机的无符号 64 位整数。 + /// + /// 无符号 64 位整数。 + public static ulong RandUInt64() + { + Random.NextBytes(Byte8); + return BitConverter.ToUInt64(Byte8, 0); + } + + /// + /// 生成一个随机的 64 位整数。 + /// + /// 64 位整数。 + public static long RandInt64() + { + Random.NextBytes(Byte8); + return BitConverter.ToInt64(Byte8, 0); + } + + /// + /// 生成一个随机的无符号 32 位整数。 + /// + /// 无符号 32 位整数。 + public static uint RandUInt32() + { + return (uint) Random.Next(); + } + + /// + /// 生成一个随机的无符号 16 位整数。 + /// + /// 无符号 16 位整数。 + public static ushort RandUInt16() + { + Random.NextBytes(Byte2); + return BitConverter.ToUInt16(Byte2, 0); + } + + /// + /// 在指定范围内生成一个随机整数(包含下限,不包含上限)。 + /// + /// 下限。 + /// 上限。 + /// 生成的随机整数。 + public static int RandomNumber(int lower, int upper) + { + return Random.Next(lower, upper); + } + + /// + /// 生成一个随机的布尔值。 + /// + /// 随机的布尔值。 + public static bool RandomBool() + { + return Random.Next(2) == 0; + } + + /// + /// 从数组中随机选择一个元素。 + /// + /// 数组元素的类型。 + /// 要选择的数组。 + /// 随机选择的数组元素。 + public static T RandomArray(this T[] array) + { + return array[RandomNumber(0, array.Count())]; + } + + /// + /// 从列表中随机选择一个元素。 + /// + /// 列表元素的类型。 + /// 要选择的列表。 + /// 随机选择的列表元素。 + public static T RandomArray(this List array) + { + return array[RandomNumber(0, array.Count())]; + } + + /// + /// 打乱列表中元素的顺序。 + /// + /// 列表元素的类型。 + /// 要打乱顺序的列表。 + public static void BreakRank(List arr) + { + if (arr == null || arr.Count < 2) + { + return; + } + + for (var i = 0; i < arr.Count / 2; i++) + { + var index = Random.Next(0, arr.Count); + (arr[index], arr[arr.Count - index - 1]) = (arr[arr.Count - index - 1], arr[index]); + } + } + + /// + /// 生成一个介于 0 和 1 之间的随机单精度浮点数。 + /// + /// 随机单精度浮点数。 + public static float RandFloat01() + { + var value = Random.NextDouble(); + return (float) value; + } + + private static int Rand(int n) + { + var rd = new Random(); + // 注意,返回值是左闭右开,所以maxValue要加1 + return rd.Next(1, n + 1); + } + + /// + /// 根据权重随机选择一个索引。 + /// + /// 权重数组,每个元素表示相应索引的权重。 + /// 随机选择的索引值。 + public static int RandomByWeight(int[] weights) + { + var sum = weights.Sum(); + var numberRand = Rand(sum); + var sumTemp = 0; + for (var i = 0; i < weights.Length; i++) + { + sumTemp += weights[i]; + if (numberRand <= sumTemp) + { + return i; + } + } + + return -1; + } + + /// + /// 根据固定概率随机选择一个索引,即某个数值上限内随机多少次。 + /// + /// 概率数组,每个元素表示相应索引的概率。 + /// 随机选择的索引值。 + public static int RandomByFixedProbability(int[] args) + { + var argCount = args.Length; + var sum = args.Sum(); + var random = Random.NextDouble() * sum; + while (sum > random) + { + sum -= args[argCount - 1]; + argCount--; + } + + return argCount; + } + + /// + /// 返回随机数。 + /// + /// 是否包含负数。 + /// 返回一个随机的单精度浮点数。 + public static float NextFloat(bool containNegative = false) + { + float f; + var buffer = new byte[4]; + if (containNegative) + { + do + { + Random.NextBytes(buffer); + f = BitConverter.ToSingle(buffer, 0); + } while ((f >= float.MinValue && f < float.MaxValue) == false); + + return f; + } + + do + { + Random.NextBytes(buffer); + f = BitConverter.ToSingle(buffer, 0); + } while ((f >= 0 && f < float.MaxValue) == false); + + return f; + } + + /// + /// 返回一个小于所指定最大值的非负随机数。 + /// + /// 要生成的随机数的上限(随机数不能取该上限值)。 maxValue 必须大于或等于零。 + /// 大于等于零且小于 maxValue 的单精度浮点数,即:返回值的范围通常包括零但不包括 maxValue。 不过,如果 maxValue 等于零,则返回 maxValue。 + public static float NextFloat(float maxValue) + { + if (maxValue.Equals(0)) + { + return maxValue; + } + + if (maxValue < 0) + { + throw new ArgumentOutOfRangeException("“maxValue”必须大于 0。", "maxValue"); + } + + float f; + var buffer = new byte[4]; + + do + { + Random.NextBytes(buffer); + f = BitConverter.ToSingle(buffer, 0); + } while ((f >= 0 && f < maxValue) == false); + + return f; + } + + /// + /// 返回一个指定范围内的随机数。 + /// + /// 返回的随机数的下界(随机数可取该下界值)。 + /// 返回的随机数的上界(随机数不能取该上界值)。 maxValue 必须大于或等于 minValue。 + /// 一个大于等于 minValue 且小于 maxValue 的单精度浮点数,即:返回的值范围包括 minValue 但不包括 maxValue。 如果 minValue 等于 maxValue,则返回 minValue。 + public static float NextFloat(float minValue, float maxValue) + { + if (minValue.Equals(maxValue)) + { + return minValue; + } + + if (minValue > maxValue) + { + throw new ArgumentOutOfRangeException("“minValue”不能大于 maxValue。", "minValue"); + } + + float f; + var buffer = new byte[4]; + + do + { + Random.NextBytes(buffer); + f = BitConverter.ToSingle(buffer, 0); + } while ((f >= minValue && f < maxValue) == false); + + return f; + } + + /// + /// 在指定的矩形区域内随机生成一个二维向量位置。 + /// + /// X轴最小值。 + /// X轴最大值。 + /// Y轴最小值。 + /// Y轴最大值。 + /// 随机生成的二维向量位置。 + public static Vector2 NextVector2(float minX, float maxX, float minY, float maxY) + { + return new Vector2(NextFloat(minX, maxX), NextFloat(minY, maxY)); + } + + /// + /// 生成指定长度的随机数字代码。 + /// + /// 数字代码的长度。 + /// 生成的随机数字代码。 + public static string RandomNumberCode(int len = 6) + { + int num = 0; + for (int i = 0; i < len; i++) + { + int number = RandomNumber(0, 10); + num = num * 10 + number; + } + + return num.ToString(); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/SocketHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/SocketHelper.cs new file mode 100644 index 0000000..15027c5 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/SocketHelper.cs @@ -0,0 +1,74 @@ +#if !FANTASY_WEBGL +using System.Net; +using System.Net.Sockets; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +namespace Fantasy.Helper +{ + /// + /// Socket帮助类 + /// + public static partial class SocketHelper + { + // always pass the same IPEndPointNonAlloc instead of allocating a new + // one each time. + // + // use IPEndPointNonAlloc.temp to get the latest SocketAdddress written + // by ReceiveFrom_Internal! + // + // IMPORTANT: .temp will be overwritten in next call! + // hash or manually copy it if you need to store it, e.g. + // when adding a new connection. + public static int ReceiveFrom_NonAlloc( + this Socket socket, + byte[] buffer, + int offset, + int size, + SocketFlags socketFlags, + EndPoint remoteEndPoint) + { + // call ReceiveFrom with IPEndPointNonAlloc. + // need to wrap this in ReceiveFrom_NonAlloc because it's not + // obvious that IPEndPointNonAlloc.Create does NOT create a new + // IPEndPoint. it saves the result in IPEndPointNonAlloc.temp! +#if FANTASY_UNITY + EndPoint casted = remoteEndPoint; + return socket.ReceiveFrom(buffer, offset, size, socketFlags, ref casted); +#else + return socket.ReceiveFrom(buffer, offset, size, socketFlags, ref remoteEndPoint); +#endif + } + + // same as above, different parameters + public static int ReceiveFrom_NonAlloc(this Socket socket, byte[] buffer, ref EndPoint remoteEndPoint) + { +#if UNITY + EndPoint casted = remoteEndPoint; + return socket.ReceiveFrom(buffer, ref casted); +#else + return socket.ReceiveFrom(buffer, ref remoteEndPoint); +#endif + + } + + // SendTo allocates too: + // https://github.com/mono/mono/blob/f74eed4b09790a0929889ad7fc2cf96c9b6e3757/mcs/class/System/System.Net.Sockets/Socket.cs#L2240 + // -> the allocation is in EndPoint.Serialize() + // NOTE: technically this function isn't necessary. + // could just pass IPEndPointNonAlloc. + // still good for strong typing. + //public static int SendTo_NonAlloc( + // this Socket socket, + // byte[] buffer, + // int offset, + // int size, + // SocketFlags socketFlags, + // IPEndPointNonAlloc remoteEndPoint) + //{ + // EndPoint casted = remoteEndPoint; + // return socket.SendTo(buffer, offset, size, socketFlags, casted); + //} + } +} +#endif + + diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/TimeHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/TimeHelper.cs new file mode 100644 index 0000000..b0eb60a --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/TimeHelper.cs @@ -0,0 +1,83 @@ +using System; +#if FANTASY_UNITY +using UnityEngine; +#endif + +namespace Fantasy.Helper +{ + /// + /// 提供与时间相关的帮助方法。 + /// + public static partial class TimeHelper + { + /// + /// 一小时的毫秒值。 + /// + public const long Hour = 3600000; + /// + /// 一分钟的毫秒值。 + /// + public const long Minute = 60000; + /// + /// 一天的毫秒值。 + /// + public const long OneDay = 86400000; + // 1970年1月1日的Ticks + private const long Epoch = 621355968000000000L; + /// + /// 获取当前时间的毫秒数,从1970年1月1日开始计算。 + /// + public static long Now => (DateTime.UtcNow.Ticks - Epoch) / 10000; +#if FANTASY_UNITY || FANTASY_CONSOLE + /// + /// 与服务器时间的偏差。 + /// + public static long TimeDiff; + /// + /// 获取当前服务器时间的毫秒数,加上与服务器时间的偏差。 + /// + public static long ServerNow => Now + TimeDiff; +#if FANTASY_UNITY + /// + /// 获取当前Unity运行的总时间的毫秒数。 + /// + public static long UnityNow => (long) (Time.time * 1000); +#endif +#endif + /// + /// 根据时间获取时间戳 + /// + public static long Transition(DateTime dateTime) + { + return (dateTime.ToUniversalTime().Ticks - Epoch) / 10000; + } + + /// + /// 根据时间获取 时间戳 + /// + public static long TransitionToSeconds(DateTime dateTime) + { + return (dateTime.ToUniversalTime().Ticks - Epoch) / 10000000; + } + + /// + /// 将毫秒数转换为日期时间。 + /// + /// 要转换的毫秒数。 + /// 转换后的日期时间。 + public static DateTime Transition(this long timeStamp) + { + return new DateTime(Epoch + timeStamp * 10000, DateTimeKind.Utc).ToUniversalTime(); + } + + /// + /// 将毫秒数转换为本地时间的日期时间。 + /// + /// 要转换的毫秒数。 + /// 转换后的本地时间的日期时间。 + public static DateTime TransitionLocal(this long timeStamp) + { + return new DateTime(Epoch + timeStamp * 10000, DateTimeKind.Utc).ToLocalTime(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/UnityWebRequest/UnityWebRequestHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/UnityWebRequest/UnityWebRequestHelper.cs new file mode 100644 index 0000000..dbc0334 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/UnityWebRequest/UnityWebRequestHelper.cs @@ -0,0 +1,244 @@ +#if FANTASY_UNITY +using System; +using Fantasy.Async; +using UnityEngine; +using UnityEngine.Networking; + +namespace Fantasy.Unity +{ + /// + /// UnityWebRequest的帮助类 + /// + public static class UnityWebRequestHelper + { + /// + /// 获取一个文本 + /// + /// + /// + /// + public static FTask GetText(string url, FCancellationToken cancellationToken = null) + { + var task = FTask.Create(false); + var unityWebRequest = UnityWebRequest.Get(url); + var unityWebRequestAsyncOperation = unityWebRequest.SendWebRequest(); + + if (cancellationToken != null) + { + cancellationToken.Add(() => + { + unityWebRequest.Abort(); + task.SetResult(null); + }); + } + + unityWebRequestAsyncOperation.completed += operation => + { + if (unityWebRequest.result == UnityWebRequest.Result.Success) + { + var text = unityWebRequest.downloadHandler.text; + task.SetResult(text); + } + else + { + Log.Error(unityWebRequest.error); + task.SetResult(null); + } + }; + + return task; + } + + /// + /// 获取一个Sprite + /// + /// + /// + /// + public static FTask GetSprite(string url, FCancellationToken cancellationToken = null) + { + var task = FTask.Create(false); + var unityWebRequest = UnityWebRequestTexture.GetTexture(Uri.EscapeUriString(url)); + var unityWebRequestAsyncOperation = unityWebRequest.SendWebRequest(); + + if (cancellationToken != null) + { + cancellationToken.Add(() => + { + unityWebRequest.Abort(); + task.SetResult(null); + }); + } + + unityWebRequestAsyncOperation.completed += operation => + { + if (unityWebRequest.result == UnityWebRequest.Result.Success) + { + var texture = DownloadHandlerTexture.GetContent(unityWebRequest); + var sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.one * 5, 1f); + task.SetResult(sprite); + } + else + { + Log.Error(unityWebRequest.error); + task.SetResult(null); + } + }; + + return task; + } + + /// + /// 获取一个Texture + /// + /// + /// + /// + public static FTask GetTexture(string url, FCancellationToken cancellationToken = null) + { + var task = FTask.Create(false); + var unityWebRequest = UnityWebRequestTexture.GetTexture(Uri.EscapeUriString(url)); + var unityWebRequestAsyncOperation = unityWebRequest.SendWebRequest(); + + if (cancellationToken != null) + { + cancellationToken.Add(() => + { + unityWebRequest.Abort(); + task.SetResult(null); + }); + } + + unityWebRequestAsyncOperation.completed += operation => + { + if (unityWebRequest.result == UnityWebRequest.Result.Success) + { + var texture = DownloadHandlerTexture.GetContent(unityWebRequest); + task.SetResult(texture); + } + else + { + Log.Error(unityWebRequest.error); + task.SetResult(null); + } + }; + + return task; + } + + /// + /// 获取Bytes + /// + /// + /// + /// + public static FTask GetBytes(string url, FCancellationToken cancellationToken = null) + { + var task = FTask.Create(false); + var unityWebRequest = UnityWebRequest.Get(url); + var unityWebRequestAsyncOperation = unityWebRequest.SendWebRequest(); + + if (cancellationToken != null) + { + cancellationToken.Add(() => + { + unityWebRequest.Abort(); + task.SetResult(null); + }); + } + + unityWebRequestAsyncOperation.completed += operation => + { + if (unityWebRequest.result == UnityWebRequest.Result.Success) + { + var bytes = unityWebRequest.downloadHandler.data; + task.SetResult(bytes); + } + else + { + Log.Error(unityWebRequest.error); + task.SetResult(null); + } + }; + + return task; + } + + /// + /// 获取AssetBundle + /// + /// + /// + /// + public static FTask GetAssetBundle(string url, FCancellationToken cancellationToken = null) + { + var task = FTask.Create(false); + var unityWebRequest = UnityWebRequestAssetBundle.GetAssetBundle(Uri.EscapeUriString(url)); + var unityWebRequestAsyncOperation = unityWebRequest.SendWebRequest(); + + if (cancellationToken != null) + { + cancellationToken.Add(() => + { + unityWebRequest.Abort(); + task.SetResult(null); + }); + } + + unityWebRequestAsyncOperation.completed += operation => + { + if (unityWebRequest.result == UnityWebRequest.Result.Success) + { + var assetBundle = DownloadHandlerAssetBundle.GetContent(unityWebRequest); + task.SetResult(assetBundle); + return; + } + + Log.Error(unityWebRequest.error); + task.SetResult(null); + }; + + return task; + } + + /// + /// 获取AudioClip + /// + /// + /// + /// + /// + public static FTask GetAudioClip(string url, AudioType audioType, FCancellationToken cancellationToken = null) + { + var task = FTask.Create(false); + var unityWebRequest = UnityWebRequestMultimedia.GetAudioClip(Uri.EscapeUriString(url), audioType); + var unityWebRequestAsyncOperation = unityWebRequest.SendWebRequest(); + + if (cancellationToken != null) + { + cancellationToken.Add(() => + { + unityWebRequest.Abort(); + task.SetResult(null); + }); + } + + unityWebRequestAsyncOperation.completed += operation => + { + if (unityWebRequest.result == UnityWebRequest.Result.Success) + { + var audioClip = DownloadHandlerAudioClip.GetContent(unityWebRequest); + task.SetResult(audioClip); + } + else + { + Log.Error(unityWebRequest.error); + task.SetResult(null); + } + }; + + return task; + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/UnityWebRequest/UnityWebRequestHelper.cs.meta b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/UnityWebRequest/UnityWebRequestHelper.cs.meta new file mode 100644 index 0000000..53b7c3c --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/UnityWebRequest/UnityWebRequestHelper.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4a679bf05117455388666f6d8cc35d7d +timeCreated: 1726022012 \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/WebSocketHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/WebSocketHelper.cs new file mode 100644 index 0000000..822db06 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/WebSocketHelper.cs @@ -0,0 +1,38 @@ +using System; +using System.Runtime.CompilerServices; + +namespace Fantasy.Helper +{ + /// + /// WebSocket帮助类 + /// + public static partial class WebSocketHelper + { + /// + /// 根据字符串获取WebSocket的连接地址 + /// + /// 目标服务器地址格式为:127.0.0.1:2000 + /// 目标服务器是否为加密连接也就是https + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static string GetWebSocketAddress(string address, bool isHttps) + { + var addressSplit = address.Split(':'); + if (addressSplit.Length != 2) + { + throw new FormatException("Invalid format"); + } + + var ipString = addressSplit[0]; + var portString = addressSplit[1]; + + if (!int.TryParse(portString, out var port) || port < 0 || port > 65535) + { + throw new FormatException("Invalid port number"); + } + + return isHttps ? $"wss://{ipString}:{portString}" : $"ws://{ipString}:{portString}"; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/WinPeriod.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/WinPeriod.cs new file mode 100644 index 0000000..a1a5aca --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Helper/WinPeriod.cs @@ -0,0 +1,24 @@ +using System.Runtime.InteropServices; + +namespace Fantasy.Helper +{ + /// + /// 精度设置 + /// + public static partial class WinPeriod + { + // 一般默认的精度不止1毫秒(不同操作系统有所不同),需要调用timeBeginPeriod与timeEndPeriod来设置精度 + [DllImport("winmm")] + private static extern void timeBeginPeriod(int t); + /// + /// 针对Windows平台设置精度 + /// + public static void Initialize() + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + timeBeginPeriod(1); + } + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Default/EntityIdStruct.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Default/EntityIdStruct.cs new file mode 100644 index 0000000..ef30b18 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Default/EntityIdStruct.cs @@ -0,0 +1,136 @@ +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Fantasy.Helper; + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.IdFactory +{ + /// + /// 表示一个唯一实体的ID。 + /// + [StructLayout(LayoutKind.Sequential, Pack = 1)] + internal struct EntityIdStruct + { + // EntityId:39 + 16 + 18 = 64 + // +-------------------+-----------------------------+------------------------------------+ + // | time(30) 最大34年 | SceneId(16) 最多65535个Scene | sequence(18) 每秒每个进程能生产262143个 + // +-------------------+-----------------------------+------------------------------------+ + public uint Time { get; set; } + public uint SceneId { get; set; } + public uint Sequence { get; set; } + + public const uint MaskSequence = 0x3FFFF; + public const uint MaskSceneId = 0xFFFF; + public const uint MaskTime = 0x3FFFFFFF; + + /// + /// WorldEntityIdStruct(如果超过下面参数的设定该ID会失效)。 + /// + /// time不能超过1073741823 + /// sceneId不能超过65535 + /// sequence不能超过262143 + public EntityIdStruct(uint time, uint sceneId, uint sequence) + { + // 因为都是在配置表里拿到参数、所以这个不做边界判定、能节省一点点性能。 + Time = time; + SceneId = sceneId; + Sequence = sequence; + } + + public static implicit operator long(EntityIdStruct entityIdStruct) + { + ulong result = 0; + result |= entityIdStruct.Sequence; + result |= (ulong)entityIdStruct.SceneId << 18; + result |= (ulong)entityIdStruct.Time << 34; + return (long)result; + } + + public static implicit operator EntityIdStruct(long entityId) + { + var result = (ulong) entityId; + var entityIdStruct = new EntityIdStruct + { + Sequence = (uint)(result & MaskSequence) + }; + result >>= 18; + entityIdStruct.SceneId = (uint)(result & MaskSceneId); + result >>= 16; + entityIdStruct.Time = (uint)(result & MaskTime); + return entityIdStruct; + } + } + + public sealed class EntityIdFactory : IEntityIdFactory + { + private readonly ushort _sceneId; + + private uint _lastTime; + private uint _lastSequence; + private static readonly long Epoch1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks / 10000; + private static readonly long EpochThisYear = new DateTime(2025, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks / 10000 - Epoch1970; + + private EntityIdFactory() { } + + public EntityIdFactory(uint sceneId) + { + switch (sceneId) + { + case > 65535: + { + throw new NotSupportedException($"sceneId:{sceneId} cannot be greater than 255255"); + } + default: + { + _sceneId = (ushort)sceneId; + break; + } + } + } + + public long Create + { + get + { + var time = (uint)((TimeHelper.Now - EpochThisYear) / 1000); + + if (time > _lastTime) + { + _lastTime = time; + _lastSequence = 0; + } + else if (++_lastSequence > EntityIdStruct.MaskSequence - 1) + { + _lastTime++; + _lastSequence = 0; + } + + return new EntityIdStruct(time, _sceneId, _lastSequence); + } + } + } + + public sealed class EntityIdFactoryTool : IIdFactoryTool + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetTime(ref long entityId) + { + var result = (ulong)entityId >> 34; + return (uint)(result & EntityIdStruct.MaskTime); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetSceneId(ref long entityId) + { + var result = (ulong)entityId >> 18; + return (uint)(result & EntityIdStruct.MaskSceneId); + } + + public byte GetWorldId(ref long entityId) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Default/RuntimeIdStruct.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Default/RuntimeIdStruct.cs new file mode 100644 index 0000000..a5d5e10 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Default/RuntimeIdStruct.cs @@ -0,0 +1,137 @@ +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Fantasy.Helper; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.IdFactory +{ + /// + /// 表示一个运行时的ID。 + /// + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct RuntimeIdStruct + { + // RuntimeId:23 + 8 + 8 + 25 = 64 + // +-------------------+-----------------------------+--------------------------------------+ + // | time(23) 最大60天 | SceneId(16) 最多65535个Scene | sequence(25) 每秒每个进程能生产33554431个 + // +-------------------+-----------------------------+--------------------------------------+ + public uint Time { get; private set; } + public uint SceneId { get; private set; } + public uint Sequence { get; private set; } + + public const uint MaskSequence = 0x1FFFFFF; + public const uint MaskSceneId = 0xFFFF; + public const uint MaskTime = 0x7FFFFF; + + /// + /// RuntimeIdStruct(如果超过下面参数的设定该ID会失效)。 + /// + /// time不能超过8388607 + /// sceneId不能超过65535 + /// sequence不能超过33554431 + public RuntimeIdStruct(uint time, uint sceneId, uint sequence) + { + // 因为都是在配置表里拿到参数、所以这个不做边界判定、能节省一点点性能。 + Time = time; + SceneId = sceneId; + Sequence = sequence; + } + + public static implicit operator long(RuntimeIdStruct runtimeIdStruct) + { + ulong result = runtimeIdStruct.Sequence; + result |= (ulong)runtimeIdStruct.SceneId << 25; + result |= (ulong)runtimeIdStruct.Time << 41; + return (long)result; + } + + public static implicit operator RuntimeIdStruct(long runtimeId) + { + var result = (ulong)runtimeId; + var runtimeIdStruct = new RuntimeIdStruct + { + Sequence = (uint)(result & MaskSequence) + }; + result >>= 25; + runtimeIdStruct.SceneId = (byte)(result & MaskSceneId); + result >>= 16; + runtimeIdStruct.Time = (uint)(result & MaskTime); + return runtimeIdStruct; + } + } + + public sealed class RuntimeIdFactory : IRuntimeIdFactory + { + private readonly uint _sceneId; + + private uint _lastTime; + private uint _lastSequence; + private readonly long _epochNow; + private readonly long _epoch1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks / 10000; + + private RuntimeIdFactory() { } + + public RuntimeIdFactory(uint sceneId) : this(TimeHelper.Now, sceneId) { } + + public RuntimeIdFactory(long epochNow, uint sceneId) + { + switch (sceneId) + { + case > 65535: + { + throw new NotSupportedException($"sceneId:{sceneId} cannot be greater than 255255"); + } + default: + { + _sceneId = (ushort)sceneId; + _epochNow = epochNow - _epoch1970; + break; + } + } + } + + public long Create + { + get + { + var time = (uint)((TimeHelper.Now - _epochNow) / 1000); + + if (time > _lastTime) + { + _lastTime = time; + _lastSequence = 0; + } + else if (++_lastSequence > RuntimeIdStruct.MaskSequence - 1) + { + _lastTime++; + _lastSequence = 0; + } + + return new RuntimeIdStruct(time, _sceneId, _lastSequence); + } + } + } + + public sealed class RuntimeIdFactoryTool : IIdFactoryTool + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetTime(ref long runtimeId) + { + var result = (ulong)runtimeId >> 41; + return (uint)(result & RuntimeIdStruct.MaskTime); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetSceneId(ref long runtimeId) + { + var result = (ulong)runtimeId >> 25; + return (uint)(result & RuntimeIdStruct.MaskSceneId); + } + + public byte GetWorldId(ref long entityId) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/IdFactoryHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/IdFactoryHelper.cs new file mode 100644 index 0000000..4251d53 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/IdFactoryHelper.cs @@ -0,0 +1,132 @@ +using System; +using System.Runtime.CompilerServices; +using Fantasy.Helper; +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable. + +namespace Fantasy.IdFactory +{ + /// + /// Id生成器帮助类 + /// + public static class IdFactoryHelper + { + private static IdFactoryType _idFactoryType = IdFactoryType.World; + + /// + /// EntityId工具 + /// + public static IIdFactoryTool EntityIdTool { get; private set; } = new WorldEntityIdFactoryTool(); + + /// + /// RuntimeId工具 + /// + public static IIdFactoryTool RuntimeIdTool { get; private set; } = new WorldRuntimeIdFactoryTool(); + + /// + /// 初始化 + /// + /// + public static void Initialize(IdFactoryType idFactoryType) + { + _idFactoryType = idFactoryType; + + switch (_idFactoryType) + { + case IdFactoryType.Default: + { + EntityIdTool = new EntityIdFactoryTool(); + RuntimeIdTool = new RuntimeIdFactoryTool(); + return; + } + case IdFactoryType.World: + { + EntityIdTool = new WorldEntityIdFactoryTool(); + RuntimeIdTool = new WorldRuntimeIdFactoryTool(); + return; + } + } + } + + internal static IEntityIdFactory EntityIdFactory(uint sceneId, byte worldId) + { + switch (_idFactoryType) + { + case IdFactoryType.Default: + { + return new EntityIdFactory(sceneId); + } + case IdFactoryType.World: + { + return new WorldEntityIdFactory(sceneId, worldId); + } + default: + { + throw new NotSupportedException($"IdFactoryType {_idFactoryType} is not supported."); + } + } + } + + internal static IRuntimeIdFactory RuntimeIdFactory(long epochNow, uint sceneId, byte worldId) + { + switch (_idFactoryType) + { + case IdFactoryType.Default: + { + return new RuntimeIdFactory(sceneId); + } + case IdFactoryType.World: + { + if (epochNow == 0) + { + epochNow = TimeHelper.Now; + } + + return new WorldRuntimeIdFactory(epochNow, sceneId, worldId); + } + default: + { + throw new NotSupportedException($"IdFactoryType {_idFactoryType} is not supported."); + } + } + } + + internal static long EntityId(uint time, uint sceneId, byte wordId, uint sequence) + { + switch (_idFactoryType) + { + case IdFactoryType.Default: + { + return new EntityIdStruct(time, sceneId, sequence); + } + case IdFactoryType.World: + { + return new WorldEntityIdStruct(time, sceneId, wordId, sequence); + } + default: + { + throw new NotSupportedException($"IdFactoryType {_idFactoryType} is not supported."); + } + } + } + + internal static long RuntimeId(uint time, uint sceneId, byte wordId, uint sequence) + { + switch (_idFactoryType) + { + case IdFactoryType.Default: + { + return new RuntimeIdStruct(time, sceneId, sequence); + } + case IdFactoryType.World: + { + return new WorldRuntimeIdStruct(time, sceneId, wordId, sequence); + } + default: + { + throw new NotSupportedException($"IdFactoryType {_idFactoryType} is not supported."); + } + } + } + } +} + diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/IdFactoryType.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/IdFactoryType.cs new file mode 100644 index 0000000..d465b5b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/IdFactoryType.cs @@ -0,0 +1,23 @@ +namespace Fantasy.IdFactory +{ + /// + /// ID生成器规则 + /// + public enum IdFactoryType + { + /// + /// 空。 + /// + None = 0, + /// + /// 默认生成器 + /// Scene最大为65535个。 + /// + Default = 1, + /// + /// ID中包含World,使用这种方式可以不用管理合区的ID重复的问题。 + /// 但Scene的数量也会限制到255个。 + /// + World = 2 + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Interface/IIdFactory.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Interface/IIdFactory.cs new file mode 100644 index 0000000..d71c15b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Interface/IIdFactory.cs @@ -0,0 +1,24 @@ +namespace Fantasy.IdFactory +{ + /// + /// EntityId生成器接口类 + /// + public interface IEntityIdFactory + { + /// + /// 创建一个新的Id + /// + public long Create { get; } + } + + /// + /// RuntimeId生成器接口类 + /// + public interface IRuntimeIdFactory + { + /// + /// 创建一个新的Id + /// + public long Create { get; } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Interface/IIdFactoryTool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Interface/IIdFactoryTool.cs new file mode 100644 index 0000000..8dd1e99 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/Interface/IIdFactoryTool.cs @@ -0,0 +1,27 @@ +namespace Fantasy.IdFactory +{ + /// + /// Id扩展工具接口 + /// + public interface IIdFactoryTool + { + /// + /// 获得创建时间 + /// + /// + /// + public uint GetTime(ref long entityId); + /// + /// 获得SceneId + /// + /// + /// + public uint GetSceneId(ref long entityId); + /// + /// 获得WorldId + /// + /// + /// + public byte GetWorldId(ref long entityId); + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/World/WorldEntityIdFactory.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/World/WorldEntityIdFactory.cs new file mode 100644 index 0000000..dbba88f --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/World/WorldEntityIdFactory.cs @@ -0,0 +1,153 @@ +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Fantasy.Helper; + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.IdFactory +{ + /// + /// 表示一个唯一实体的ID。 + /// + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct WorldEntityIdStruct + { + // EntityId:39 + 8 + 8 + 18 = 64 + // +-------------------+--------------------------+-----------------------+------------------------------------+ + // | time(30) 最大34年 | SceneId(8) 最多255个Scene | WordId(8) 最多255个世界 | sequence(18) 每秒每个进程能生产262143个 + // +-------------------+--------------------------+-----------------------+------------------------------------+ + public uint Time { get; private set; } + public uint SceneId { get; private set; } + public byte WordId { get; private set; } + public uint Sequence { get; private set; } + + public const uint MaskSequence = 0x3FFFF; + public const uint MaskSceneId = 0xFF; + public const uint MaskWordId = 0xFF; + public const uint MaskTime = 0x3FFFFFFF; + + /// + /// WorldEntityIdStruct(如果超过下面参数的设定该ID会失效)。 + /// + /// time不能超过1073741823 + /// sceneId不能超过255 + /// wordId不能超过255 + /// sequence不能超过262143 + public WorldEntityIdStruct(uint time, uint sceneId, byte wordId, uint sequence) + { + // 因为都是在配置表里拿到参数、所以这个不做边界判定、能节省一点点性能。 + Time = time; + SceneId = sceneId; + WordId = wordId; + Sequence = sequence; + } + + public static implicit operator long(WorldEntityIdStruct entityIdStruct) + { + ulong result = 0; + result |= entityIdStruct.Sequence; + result |= (ulong)entityIdStruct.WordId << 18; + result |= (ulong)(entityIdStruct.SceneId % (entityIdStruct.WordId * 1000)) << 26; + result |= (ulong)entityIdStruct.Time << 34; + return (long)result; + } + + public static implicit operator WorldEntityIdStruct(long entityId) + { + var result = (ulong) entityId; + var entityIdStruct = new WorldEntityIdStruct + { + Sequence = (uint)(result & MaskSequence) + }; + result >>= 18; + entityIdStruct.WordId = (byte)(result & MaskWordId); + result >>= 8; + entityIdStruct.SceneId = (uint)(result & MaskSceneId) + (uint)entityIdStruct.WordId * 1000; + result >>= 8; + entityIdStruct.Time = (uint)(result & MaskTime); + return entityIdStruct; + } + } + + public sealed class WorldEntityIdFactory : IEntityIdFactory + { + private readonly uint _sceneId; + private readonly byte _worldId; + + private uint _lastTime; + private uint _lastSequence; + private static readonly long Epoch1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks / 10000; + private static readonly long EpochThisYear = new DateTime(2025, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks / 10000 - Epoch1970; + + private WorldEntityIdFactory() { } + + public WorldEntityIdFactory(uint sceneId, byte worldId) + { + switch (sceneId) + { + case > 255255: + { + throw new NotSupportedException($"sceneId:{sceneId} cannot be greater than 255255"); + } + case < 1001: + { + throw new NotSupportedException($"sceneId:{sceneId} cannot be less than 1001"); + } + default: + { + _sceneId = sceneId; + _worldId = worldId; + break; + } + } + } + + public long Create + { + get + { + var time = (uint)((TimeHelper.Now - EpochThisYear) / 1000); + + if (time > _lastTime) + { + _lastTime = time; + _lastSequence = 0; + } + else if (++_lastSequence > WorldEntityIdStruct.MaskSequence - 1) + { + _lastTime++; + _lastSequence = 0; + } + + return new WorldEntityIdStruct(time, _sceneId, _worldId, _lastSequence); + } + } + } + + public sealed class WorldEntityIdFactoryTool : IIdFactoryTool + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetTime(ref long entityId) + { + var result = (ulong)entityId >> 34; + return (uint)(result & WorldEntityIdStruct.MaskTime); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetSceneId(ref long entityId) + { + var result = (ulong)entityId >> 18; + var worldId = (uint)(result & WorldEntityIdStruct.MaskWordId) * 1000; + result >>= 8; + return (uint)(result & WorldEntityIdStruct.MaskSceneId) + worldId; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte GetWorldId(ref long entityId) + { + var result = (ulong)entityId >> 18; + return (byte)(result & WorldEntityIdStruct.MaskWordId); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/World/WorldRuntimeIdFactory.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/World/WorldRuntimeIdFactory.cs new file mode 100644 index 0000000..a5d582b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/IdFactory/World/WorldRuntimeIdFactory.cs @@ -0,0 +1,155 @@ +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Fantasy.Helper; + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.IdFactory +{ + /// + /// 表示一个运行时的ID。 + /// + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct WorldRuntimeIdStruct + { + // RuntimeId:23 + 8 + 8 + 25 = 64 + // +-------------------+--------------------------+-----------------------+--------------------------------------+ + // | time(23) 最大60天 | SceneId(8) 最多255个Scene | WordId(8) 最多255个世界 | sequence(25) 每秒每个进程能生产33554431个 + // +-------------------+--------------------------+-----------------------+--------------------------------------+ + public uint Time { get; private set; } + public uint SceneId { get; private set; } + public byte WordId { get; private set; } + public uint Sequence { get; private set; } + + public const uint MaskSequence = 0x1FFFFFF; + public const uint MaskSceneId = 0xFF; + public const uint MaskWordId = 0xFF; + public const uint MaskTime = 0x7FFFFF; + + /// + /// WorldRuntimeIdStruct(如果超过下面参数的设定该ID会失效)。 + /// + /// time不能超过8388607 + /// sceneId不能超过255 + /// wordId不能超过255 + /// sequence不能超过33554431 + public WorldRuntimeIdStruct(uint time, uint sceneId, byte wordId, uint sequence) + { + // 因为都是在配置表里拿到参数、所以这个不做边界判定、能节省一点点性能。 + Time = time; + SceneId = sceneId; + WordId = wordId; + Sequence = sequence; + } + + public static implicit operator long(WorldRuntimeIdStruct runtimeIdStruct) + { + ulong result = runtimeIdStruct.Sequence; + result |= (ulong)runtimeIdStruct.WordId << 25; + result |= (ulong)(runtimeIdStruct.SceneId % (runtimeIdStruct.WordId * 1000)) << 33; + result |= (ulong)runtimeIdStruct.Time << 41; + return (long)result; + } + + public static implicit operator WorldRuntimeIdStruct(long runtimeId) + { + var result = (ulong)runtimeId; + var runtimeIdStruct = new WorldRuntimeIdStruct + { + Sequence = (uint)(result & MaskSequence) + }; + result >>= 25; + runtimeIdStruct.WordId = (byte)(result & MaskWordId); + result >>= 8; + runtimeIdStruct.SceneId = (uint)(result & MaskSceneId) + (uint)runtimeIdStruct.WordId * 1000; + result >>= 8; + runtimeIdStruct.Time = (uint)(result & MaskTime); + return runtimeIdStruct; + } + } + + public sealed class WorldRuntimeIdFactory : IRuntimeIdFactory + { + private readonly uint _sceneId; + private readonly byte _worldId; + + private uint _lastTime; + private uint _lastSequence; + private readonly long _epochNow; + private readonly long _epoch1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks / 10000; + + private WorldRuntimeIdFactory() { } + + public WorldRuntimeIdFactory(uint sceneId, byte worldId) : this(TimeHelper.Now, sceneId, worldId) { } + + public WorldRuntimeIdFactory(long epochNow, uint sceneId, byte worldId) + { + switch (sceneId) + { + case > 255255: + { + throw new NotSupportedException($"sceneId:{sceneId} cannot be greater than 255255"); + } + case < 1001: + { + throw new NotSupportedException($"sceneId:{sceneId} cannot be less than 1001"); + } + default: + { + _sceneId = sceneId; + _worldId = worldId; + _epochNow = epochNow - _epoch1970; + break; + } + } + } + + public long Create + { + get + { + var time = (uint)((TimeHelper.Now - _epochNow) / 1000); + + if (time > _lastTime) + { + _lastTime = time; + _lastSequence = 0; + } + else if (++_lastSequence > WorldRuntimeIdStruct.MaskSequence - 1) + { + _lastTime++; + _lastSequence = 0; + } + + return new WorldRuntimeIdStruct(time, _sceneId, _worldId, _lastSequence); + } + } + } + + public sealed class WorldRuntimeIdFactoryTool : IIdFactoryTool + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetTime(ref long runtimeId) + { + var result = (ulong)runtimeId >> 41; + return (uint)(result & WorldRuntimeIdStruct.MaskTime); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetSceneId(ref long runtimeId) + { + var result = (ulong)runtimeId >> 25; + var worldId = (uint)(result & WorldRuntimeIdStruct.MaskWordId) * 1000; + result >>= 8; + return (uint)(result & WorldRuntimeIdStruct.MaskSceneId) + worldId; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte GetWorldId(ref long runtimeId) + { + var result = (ulong)runtimeId >> 25; + return (byte)(result & WorldRuntimeIdStruct.MaskWordId); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/InnerErrorCode.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/InnerErrorCode.cs new file mode 100644 index 0000000..e549a22 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/InnerErrorCode.cs @@ -0,0 +1,66 @@ +namespace Fantasy.Network +{ + /// + /// 定义 Fantasy 框架中的内部错误代码。 + /// + public class InnerErrorCode + { + private InnerErrorCode() { } + /// + /// 表示 Rpc 消息发送失败的错误代码。 + /// + public const uint ErrRpcFail = 100000002; + /// + /// 表示未找到 Route 消息的错误代码。 + /// + public const uint ErrNotFoundRoute = 100000003; + /// + /// 表示发送 Route 消息超时的错误代码。 + /// + public const uint ErrRouteTimeout = 100000004; + /// + /// 表示未找到实体的错误代码。 + /// + public const uint ErrEntityNotFound = 100000008; + /// + /// 表示传送过程中发生错误的错误代码。 + /// + public const uint ErrTransfer = 100000009; + /// + /// 表示连接Roaming时候已经存在同RoamingType的Roaming了。 + /// + public const uint ErrLinkRoamingAlreadyExists = 100000009; + /// + /// 表示连接Roaming时候在漫游终端已经存在同Id的终端。 + /// + public const uint ErrAddRoamingTerminalAlreadyExists = 100000010; + /// + /// 表示未找到 Roaming 消息的错误代码。 + /// + public const uint ErrNotFoundRoaming = 100000011; + /// + /// 表示发送 Roaming 消息超时的错误代码。 + /// + public const uint ErrRoamingTimeout = 100000012; + /// + /// 表示再锁定 Roaming 消息的时候没有找到对应的Session错误代码。 + /// + public const uint ErrLockTerminusIdNotFoundSession = 100000013; + /// + /// 表示再锁定 Roaming 消息的时候没有找到对应的RoamingType错误代码。 + /// + public const uint ErrLockTerminusIdNotFoundRoamingType = 100000014; + /// + /// 表示再解除锁定 Roaming 消息的时候没有找到对应的Session错误代码。 + /// + public const uint ErrUnLockTerminusIdNotFoundSession = 100000015; + /// + /// 表示再解除锁定 Roaming 消息的时候没有找到对应的RoamingType错误代码。 + /// + public const uint ErrUnLockTerminusIdNotFoundRoamingType = 100000016; + /// + /// 表示再传送 Terminus 时对应的错误代码。 + /// + public const uint ErrTerminusStartTransfer = 100000017; + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/ConsoleLog.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/ConsoleLog.cs new file mode 100644 index 0000000..0d57e22 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/ConsoleLog.cs @@ -0,0 +1,144 @@ +#if FANTASY_NET +using Fantasy.Platform.Net; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy; + +/// +/// 标准的控制台Log +/// +public sealed class ConsoleLog : ILog +{ + /// + /// 初始化方法 + /// + /// + public void Initialize(ProcessMode processMode) { } + + /// + /// 记录跟踪级别的日志消息。 + /// + /// 日志消息。 + public void Trace(string message) + { + Console.ForegroundColor = ConsoleColor.White; + Console.WriteLine(message); + } + + /// + /// 记录警告级别的日志消息。 + /// + /// 日志消息。 + public void Warning(string message) + { + Console.ForegroundColor = ConsoleColor.Yellow; + Console.WriteLine(message); + } + + /// + /// 记录信息级别的日志消息。 + /// + /// 日志消息。 + public void Info(string message) + { + Console.ForegroundColor = ConsoleColor.Gray; + Console.WriteLine(message); + } + + /// + /// 记录调试级别的日志消息。 + /// + /// 日志消息。 + public void Debug(string message) + { + Console.ForegroundColor = ConsoleColor.DarkGreen; + Console.WriteLine(message); + } + + /// + /// 记录错误级别的日志消息。 + /// + /// 日志消息。 + public void Error(string message) + { + Console.ForegroundColor = ConsoleColor.DarkRed; + Console.WriteLine(message); + } + + /// + /// 记录严重错误级别的日志消息。 + /// + /// 日志消息。 + public void Fatal(string message) + { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine(message); + } + + /// + /// 记录跟踪级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public void Trace(string message, params object[] args) + { + Console.ForegroundColor = ConsoleColor.White; + Console.WriteLine(message, args); + } + + /// + /// 记录警告级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public void Warning(string message, params object[] args) + { + Console.ForegroundColor = ConsoleColor.Yellow; + Console.WriteLine(message, args); + } + + /// + /// 记录信息级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public void Info(string message, params object[] args) + { + Console.ForegroundColor = ConsoleColor.Gray; + Console.WriteLine(message, args); + } + + /// + /// 记录调试级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public void Debug(string message, params object[] args) + { + Console.ForegroundColor = ConsoleColor.DarkGreen; + Console.WriteLine(message, args); + } + + /// + /// 记录错误级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public void Error(string message, params object[] args) + { + Console.ForegroundColor = ConsoleColor.DarkRed; + Console.WriteLine(message, args); + } + + /// + /// 记录严重错误级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public void Fatal(string message, params object[] args) + { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine(message, args); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/ILog.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/ILog.cs new file mode 100644 index 0000000..b01e857 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/ILog.cs @@ -0,0 +1,74 @@ +#if FANTASY_NET +using Fantasy.Platform.Net; +#endif +namespace Fantasy +{ + /// + /// 定义日志记录功能的接口。 + /// + public interface ILog + { +#if FANTASY_NET + /// + /// 初始化 + /// + /// + void Initialize(ProcessMode processMode); +#endif + /// + /// 记录跟踪级别的日志消息。 + /// + /// 日志消息。 + void Trace(string message); + /// + /// 记录警告级别的日志消息。 + /// + /// 日志消息。 + void Warning(string message); + /// + /// 记录信息级别的日志消息。 + /// + /// 日志消息。 + void Info(string message); + /// + /// 记录调试级别的日志消息。 + /// + /// 日志消息。 + void Debug(string message); + /// + /// 记录错误级别的日志消息。 + /// + /// 日志消息。 + void Error(string message); + /// + /// 记录跟踪级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + void Trace(string message, params object[] args); + /// + /// 记录警告级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + void Warning(string message, params object[] args); + /// + /// 记录信息级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + void Info(string message, params object[] args); + /// + /// 记录调试级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + void Debug(string message, params object[] args); + /// + /// 记录错误级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + void Error(string message, params object[] args); + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/Log.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/Log.cs new file mode 100644 index 0000000..8069fff --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/Log.cs @@ -0,0 +1,189 @@ +using System; +using System.Diagnostics; +#if FANTASY_NET +using Fantasy.Platform.Net; +#endif + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +namespace Fantasy +{ + /// + /// 提供日志记录功能的静态类。 + /// + public static class Log + { + private static ILog _logCore; + private static bool _isRegister; +#if FANTASY_NET + /// + /// 初始化Log系统 + /// + public static void Initialize() + { + if (!_isRegister) + { + Register(new ConsoleLog()); + return; + } + + var processMode = ProcessMode.None; + + switch (ProcessDefine.Options.Mode) + { + case "Develop": + { + processMode = ProcessMode.Develop; + break; + } + case "Release": + { + processMode = ProcessMode.Release; + break; + } + } + + _logCore.Initialize(processMode); + } +#endif + /// + /// 注册一个日志系统 + /// + /// + public static void Register(ILog log) + { + if (_isRegister) + { + return; + } + + _logCore = log; + _isRegister = true; + } + + /// + /// 记录跟踪级别的日志消息。 + /// + /// 日志消息。 + public static void Trace(string msg) + { + var st = new StackTrace(1, true); + _logCore.Trace($"{msg}\n{st}"); + } + + /// + /// 记录调试级别的日志消息。 + /// + /// 日志消息。 + public static void Debug(string msg) + { + _logCore.Debug(msg); + } + + /// + /// 记录信息级别的日志消息。 + /// + /// 日志消息。 + public static void Info(string msg) + { + _logCore.Info(msg); + } + + /// + /// 记录跟踪级别的日志消息,并附带调用栈信息。 + /// + /// 日志消息。 + public static void TraceInfo(string msg) + { + var st = new StackTrace(1, true); + _logCore.Trace($"{msg}\n{st}"); + } + + /// + /// 记录警告级别的日志消息。 + /// + /// 日志消息。 + public static void Warning(string msg) + { + _logCore.Warning(msg); + } + + /// + /// 记录错误级别的日志消息,并附带调用栈信息。 + /// + /// 日志消息。 + public static void Error(string msg) + { + var st = new StackTrace(1, true); + _logCore.Error($"{msg}\n{st}"); + } + + /// + /// 记录异常的错误级别的日志消息,并附带调用栈信息。 + /// + /// 异常对象。 + public static void Error(Exception e) + { + if (e.Data.Contains("StackTrace")) + { + _logCore.Error($"{e.Data["StackTrace"]}\n{e}"); + return; + } + var str = e.ToString(); + _logCore.Error(str); + } + + /// + /// 记录跟踪级别的格式化日志消息,并附带调用栈信息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public static void Trace(string message, params object[] args) + { + var st = new StackTrace(1, true); + _logCore.Trace($"{string.Format(message, args)}\n{st}"); + } + + /// + /// 记录警告级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public static void Warning(string message, params object[] args) + { + _logCore.Warning(string.Format(message, args)); + } + + /// + /// 记录信息级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public static void Info(string message, params object[] args) + { + _logCore.Info(string.Format(message, args)); + } + + /// + /// 记录调试级别的格式化日志消息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public static void Debug(string message, params object[] args) + { + _logCore.Debug(string.Format(message, args)); + } + + /// + /// 记录错误级别的格式化日志消息,并附带调用栈信息。 + /// + /// 日志消息模板。 + /// 格式化参数。 + public static void Error(string message, params object[] args) + { + var st = new StackTrace(1, true); + var s = string.Format(message, args) + '\n' + st; + _logCore.Error(s); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/UnityLog.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/UnityLog.cs new file mode 100644 index 0000000..df95444 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Log/UnityLog.cs @@ -0,0 +1,74 @@ +using System.Collections.Generic; +#if UNITY_EDITOR +using System; +using System.Reflection; +using System.Text.RegularExpressions; +using UnityEditor; +using UnityEditor.Callbacks; +using UnityEditorInternal; +#else +using System; +#endif + +#if FANTASY_UNITY +namespace Fantasy +{ + public class UnityLog : ILog + { + public void Trace(string msg) + { + UnityEngine.Debug.Log(msg); + } + + public void Debug(string msg) + { + UnityEngine.Debug.Log(msg); + } + + public void Info(string msg) + { + UnityEngine.Debug.Log(msg); + } + + public void Warning(string msg) + { + UnityEngine.Debug.LogWarning(msg); + } + + public void Error(string msg) + { + UnityEngine.Debug.LogError(msg); + } + + public void Error(Exception e) + { + UnityEngine.Debug.LogException(e); + } + + public void Trace(string message, params object[] args) + { + UnityEngine.Debug.LogFormat(message, args); + } + + public void Warning(string message, params object[] args) + { + UnityEngine.Debug.LogWarningFormat(message, args); + } + + public void Info(string message, params object[] args) + { + UnityEngine.Debug.LogFormat(message, args); + } + + public void Debug(string message, params object[] args) + { + UnityEngine.Debug.LogFormat(message, args); + } + + public void Error(string message, params object[] args) + { + UnityEngine.Debug.LogErrorFormat(message, args); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/LowLevel/FantasyMemory.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/LowLevel/FantasyMemory.cs new file mode 100644 index 0000000..cadfd16 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/LowLevel/FantasyMemory.cs @@ -0,0 +1,267 @@ +#if FANTASY_NET +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using mimalloc; +#if NET7_0_OR_GREATER +using System.Runtime.Intrinsics; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#endif + +namespace Fantasy.LowLevel +{ + public static unsafe class FantasyMemory + { + private static delegate* managed _alloc; + private static delegate* managed _allocZeroed; + private static delegate* managed _free; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void Initialize() + { + // KCP 使用 FantasyMemory + kcp.KCP.ikcp_allocator(&Alloc, &Free); + + try + { + _ = MiMalloc.mi_version(); + } + catch + { + Log.Info("mimalloc的二进制文件丢失"); + return; + } + + try + { + var ptr = MiMalloc.mi_malloc(MiMalloc.MI_SMALL_SIZE_MAX); + MiMalloc.mi_free(ptr); + } + catch + { + Log.Info("mimalloc权限不足,\r\n可能的问题:\r\n1. 禁止了虚拟内存分配 -> 允许虚拟内存分配;\r\n2. 没有硬盘读写权限 -> 管理员获取所有权限"); + return; + } + + Custom(&MiAlloc, &MiAllocZeroed, &MiFree); + + return; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + static void* MiAlloc(nuint size) => MiMalloc.mi_malloc(size); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + static void* MiAllocZeroed(nuint size) + { + var ptr = MiAlloc(size); + Unsafe.InitBlockUnaligned(ptr, 0, (uint)size); + return ptr; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + static void MiFree(void* ptr) => MiMalloc.mi_free(ptr); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void Custom(delegate* alloc, delegate* allocZeroed, delegate* free) + { + _alloc = alloc; + _allocZeroed = allocZeroed; + _free = free; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static nuint Align(nuint size) => AlignUp(size, (nuint)sizeof(nint)); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static nuint AlignUp(nuint size, nuint alignment) => (size + (alignment - 1)) & ~(alignment - 1); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static nuint AlignDown(nuint size, nuint alignment) => size - (size & (alignment - 1)); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void* Alloc(nuint byteCount) + { + if (_alloc != null) + return _alloc(byteCount); +#if NET6_0_OR_GREATER + return NativeMemory.Alloc(byteCount); +#else + return (void*)Marshal.AllocHGlobal((nint)byteCount); +#endif + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void* AllocZeroed(nuint byteCount) + { + if (_allocZeroed != null) + return _allocZeroed(byteCount); + void* ptr; + if (_alloc != null) + { + ptr = _alloc(byteCount); + Unsafe.InitBlockUnaligned(ptr, 0, (uint)byteCount); + return ptr; + } +#if NET6_0_OR_GREATER + return NativeMemory.AllocZeroed(byteCount, 1); +#else + ptr = (void*)Marshal.AllocHGlobal((nint)byteCount); + Unsafe.InitBlockUnaligned(ptr, 0, (uint)byteCount); + return ptr; +#endif + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void Free(void* ptr) + { + if (_free != null) + { + _free(ptr); + return; + } +#if NET6_0_OR_GREATER + NativeMemory.Free(ptr); +#else + Marshal.FreeHGlobal((nint)ptr); +#endif + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void Copy(void* destination, void* source, nuint byteCount) => Unsafe.CopyBlockUnaligned(destination, source, (uint)byteCount); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void Move(void* destination, void* source, nuint byteCount) => Buffer.MemoryCopy(source, destination, byteCount, byteCount); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void Set(void* startAddress, byte value, nuint byteCount) => Unsafe.InitBlockUnaligned(startAddress, value, (uint)byteCount); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool Compare(void* left, void* right, nuint byteCount) + { + ref var first = ref *(byte*)left; + ref var second = ref *(byte*)right; + if (byteCount >= (nuint)sizeof(nuint)) + { + if (!Unsafe.AreSame(ref first, ref second)) + { +#if NET7_0_OR_GREATER + if (Vector128.IsHardwareAccelerated) + { +#if NET8_0_OR_GREATER + if (Vector512.IsHardwareAccelerated && byteCount >= (nuint)Vector512.Count) + { + nuint offset = 0; + var lengthToExamine = byteCount - (nuint)Vector512.Count; + if (lengthToExamine != 0) + { + do + { + if (Vector512.LoadUnsafe(ref first, offset) != Vector512.LoadUnsafe(ref second, offset)) + return false; + offset += (nuint)Vector512.Count; + } while (lengthToExamine > offset); + } + return Vector512.LoadUnsafe(ref first, lengthToExamine) == Vector512.LoadUnsafe(ref second, lengthToExamine); + } +#endif + if (Vector256.IsHardwareAccelerated && byteCount >= (nuint)Vector256.Count) + { + nuint offset = 0; + var lengthToExamine = byteCount - (nuint)Vector256.Count; + if (lengthToExamine != 0) + { + do + { + if (Vector256.LoadUnsafe(ref first, offset) != Vector256.LoadUnsafe(ref second, offset)) + return false; + offset += (nuint)Vector256.Count; + } while (lengthToExamine > offset); + } + return Vector256.LoadUnsafe(ref first, lengthToExamine) == Vector256.LoadUnsafe(ref second, lengthToExamine); + } + if (byteCount >= (nuint)Vector128.Count) + { + nuint offset = 0; + var lengthToExamine = byteCount - (nuint)Vector128.Count; + if (lengthToExamine != 0) + { + do + { + if (Vector128.LoadUnsafe(ref first, offset) != Vector128.LoadUnsafe(ref second, offset)) + return false; + offset += (nuint)Vector128.Count; + } while (lengthToExamine > offset); + } + return Vector128.LoadUnsafe(ref first, lengthToExamine) == Vector128.LoadUnsafe(ref second, lengthToExamine); + } + } + if (sizeof(nint) == 8 && Vector128.IsHardwareAccelerated) + { + var offset = byteCount - (nuint)sizeof(nuint); + var differentBits = Unsafe.ReadUnaligned(ref first) - Unsafe.ReadUnaligned(ref second); + differentBits |= Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref first, offset)) - Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref second, offset)); + return differentBits == 0; + } + else +#endif + { + nuint offset = 0; + var lengthToExamine = byteCount - (nuint)sizeof(nuint); + if (lengthToExamine > 0) + { + do + { +#if NET7_0_OR_GREATER + if (Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref first, offset)) != Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref second, offset))) +#else + if (Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref first, (nint)offset)) != Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref second, (nint)offset))) +#endif + return false; + offset += (nuint)sizeof(nuint); + } while (lengthToExamine > offset); + } +#if NET7_0_OR_GREATER + return Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref first, lengthToExamine)) == Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref second, lengthToExamine)); +#else + return Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref first, (nint)lengthToExamine)) == Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref second, (nint)lengthToExamine)); +#endif + } + } + + return true; + } + + if (byteCount < sizeof(uint) || sizeof(nint) != 8) + { + uint differentBits = 0; + var offset = byteCount & 2; + if (offset != 0) + { + differentBits = Unsafe.ReadUnaligned(ref first); + differentBits -= Unsafe.ReadUnaligned(ref second); + } + + if ((byteCount & 1) != 0) +#if NET7_0_OR_GREATER + differentBits |= Unsafe.AddByteOffset(ref first, offset) - (uint)Unsafe.AddByteOffset(ref second, offset); +#else + differentBits |= Unsafe.AddByteOffset(ref first, (nint)offset) - (uint)Unsafe.AddByteOffset(ref second, (nint)offset); +#endif + return differentBits == 0; + } + else + { + var offset = byteCount - sizeof(uint); + var differentBits = Unsafe.ReadUnaligned(ref first) - Unsafe.ReadUnaligned(ref second); +#if NET7_0_OR_GREATER + differentBits |= Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref first, offset)) - Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref second, offset)); +#else + differentBits |= Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref first, (nint)offset)) - Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref second, (nint)offset)); +#endif + return differentBits == 0; + } + } + } +} +#endif diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/LowLevel/FixedBytes.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/LowLevel/FixedBytes.cs new file mode 100644 index 0000000..7c5a7a4 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/LowLevel/FixedBytes.cs @@ -0,0 +1,107 @@ +#if FANTASY_NET || !FANTASY_WEBGL +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.LowLevel +{ + [StructLayout(LayoutKind.Sequential)] + public struct FixedBytes1 + { + private byte _e0; + + public Span AsSpan() => MemoryMarshal.CreateSpan(ref Unsafe.As(ref Unsafe.AsRef(in this)), Unsafe.SizeOf()); + } + + [StructLayout(LayoutKind.Sequential)] + public struct FixedBytes2 + { + private FixedBytes1 _e0; + private FixedBytes1 _e1; + + public Span AsSpan() => MemoryMarshal.CreateSpan(ref Unsafe.As(ref Unsafe.AsRef(in this)), Unsafe.SizeOf()); + } + + [StructLayout(LayoutKind.Sequential)] + public struct FixedBytes4 + { + private FixedBytes2 _e0; + private FixedBytes2 _e1; + + public Span AsSpan() => MemoryMarshal.CreateSpan(ref Unsafe.As(ref Unsafe.AsRef(in this)), Unsafe.SizeOf()); + } + + [StructLayout(LayoutKind.Sequential)] + public struct FixedBytes8 + { + private FixedBytes4 _e0; + private FixedBytes4 _e1; + + public Span AsSpan() => MemoryMarshal.CreateSpan(ref Unsafe.As(ref Unsafe.AsRef(in this)), Unsafe.SizeOf()); + } + + [StructLayout(LayoutKind.Sequential)] + public struct FixedBytes16 + { + private FixedBytes8 _e0; + private FixedBytes8 _e1; + + public Span AsSpan() => MemoryMarshal.CreateSpan(ref Unsafe.As(ref Unsafe.AsRef(in this)), Unsafe.SizeOf()); + } + + [StructLayout(LayoutKind.Sequential)] + public struct FixedBytes32 + { + private FixedBytes16 _e0; + private FixedBytes16 _e1; + + public Span AsSpan() => MemoryMarshal.CreateSpan(ref Unsafe.As(ref Unsafe.AsRef(in this)), Unsafe.SizeOf()); + } + + [StructLayout(LayoutKind.Sequential)] + public struct FixedBytes64 + { + private FixedBytes32 _e0; + private FixedBytes32 _e1; + + public Span AsSpan() => MemoryMarshal.CreateSpan(ref Unsafe.As(ref Unsafe.AsRef(in this)), Unsafe.SizeOf()); + } + + [StructLayout(LayoutKind.Sequential)] + public struct FixedBytes128 + { + private FixedBytes64 _e0; + private FixedBytes64 _e1; + + public Span AsSpan() => MemoryMarshal.CreateSpan(ref Unsafe.As(ref Unsafe.AsRef(in this)), Unsafe.SizeOf()); + } + + [StructLayout(LayoutKind.Sequential)] + public struct FixedBytes256 + { + private FixedBytes128 _e0; + private FixedBytes128 _e1; + + public Span AsSpan() => MemoryMarshal.CreateSpan(ref Unsafe.As(ref Unsafe.AsRef(in this)), Unsafe.SizeOf()); + } + + [StructLayout(LayoutKind.Sequential)] + public struct FixedBytes512 + { + private FixedBytes256 _e0; + private FixedBytes256 _e1; + + public Span AsSpan() => MemoryMarshal.CreateSpan(ref Unsafe.As(ref Unsafe.AsRef(in this)), Unsafe.SizeOf()); + } + + [StructLayout(LayoutKind.Sequential)] + public struct FixedBytes1024 + { + private FixedBytes512 _e0; + private FixedBytes512 _e1; + + public Span AsSpan() => MemoryMarshal.CreateSpan(ref Unsafe.As(ref Unsafe.AsRef(in this)), Unsafe.SizeOf()); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/LowLevel/XxHash.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/LowLevel/XxHash.cs new file mode 100644 index 0000000..dff36b3 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/LowLevel/XxHash.cs @@ -0,0 +1,171 @@ +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +#pragma warning disable CS1591 + +namespace Fantasy.LowLevel +{ + public static class XxHash + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int Hash32(string obj, uint seed = 0) => Hash32(obj.AsSpan(), seed); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int Hash32(in T obj, uint seed = 0) where T : unmanaged => Hash32(MemoryMarshal.CreateReadOnlySpan(ref Unsafe.As(ref Unsafe.AsRef(in obj)), Unsafe.SizeOf()), seed); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int Hash32(ReadOnlySpan buffer, uint seed = 0) where T : unmanaged => Hash32(MemoryMarshal.Cast(buffer), seed); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int Hash32(ReadOnlySpan buffer, uint seed = 0) + { + int length = buffer.Length; + ref byte local1 = ref MemoryMarshal.GetReference(buffer); + uint num1; + if (buffer.Length >= 16) + { + uint num2 = seed + 606290984U; + uint num3 = seed + 2246822519U; + uint num4 = seed; + uint num5 = seed - 2654435761U; + for (; length >= 16; length -= 16) + { + const nint elementOffset1 = 4; + const nint elementOffset2 = 8; + const nint elementOffset3 = 12; + nint byteOffset = buffer.Length - length; + ref byte local2 = ref Unsafe.AddByteOffset(ref local1, byteOffset); + uint num6 = num2 + Unsafe.ReadUnaligned(ref local2) * 2246822519U; + num2 = (uint)((((int)num6 << 13) | (int)(num6 >> 19)) * -1640531535); + uint num7 = num3 + Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref local2, elementOffset1)) * 2246822519U; + num3 = (uint)((((int)num7 << 13) | (int)(num7 >> 19)) * -1640531535); + uint num8 = num4 + Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref local2, elementOffset2)) * 2246822519U; + num4 = (uint)((((int)num8 << 13) | (int)(num8 >> 19)) * -1640531535); + uint num9 = num5 + Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref local2, elementOffset3)) * 2246822519U; + num5 = (uint)((((int)num9 << 13) | (int)(num9 >> 19)) * -1640531535); + } + + num1 = (uint)((((int)num2 << 1) | (int)(num2 >> 31)) + (((int)num3 << 7) | (int)(num3 >> 25)) + (((int)num4 << 12) | (int)(num4 >> 20)) + (((int)num5 << 18) | (int)(num5 >> 14)) + buffer.Length); + } + else + num1 = (uint)((int)seed + 374761393 + buffer.Length); + + for (; length >= 4; length -= 4) + { + nint byteOffset = buffer.Length - length; + uint num10 = Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref local1, byteOffset)); + uint num11 = num1 + num10 * 3266489917U; + num1 = (uint)((((int)num11 << 17) | (int)(num11 >> 15)) * 668265263); + } + + nint byteOffset1 = buffer.Length - length; + ref byte local3 = ref Unsafe.AddByteOffset(ref local1, byteOffset1); + for (int index = 0; index < length; ++index) + { + nint byteOffset2 = index; + uint num12 = Unsafe.AddByteOffset(ref local3, byteOffset2); + uint num13 = num1 + num12 * 374761393U; + num1 = (uint)((((int)num13 << 11) | (int)(num13 >> 21)) * -1640531535); + } + +#if NET7_0_OR_GREATER + int num14 = ((int)num1 ^ (int)(num1 >> 15)) * -2048144777; + int num15 = (num14 ^ (num14 >>> 13)) * -1028477379; + return num15 ^ (num15 >>> 16); +#else + int num14 = ((int)num1 ^ (int)(num1 >> 15)) * -2048144777; + int num15 = (num14 ^ (int)((uint)num14 >> 13)) * -1028477379; + return num15 ^ (int)((uint)num15 >> 16); +#endif + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long Hash64(string obj, ulong seed = 0) => Hash64(obj.AsSpan(), seed); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long Hash64(in T obj, ulong seed = 0) where T : unmanaged => Hash64(MemoryMarshal.CreateReadOnlySpan(ref Unsafe.As(ref Unsafe.AsRef(in obj)), Unsafe.SizeOf()), seed); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long Hash64(ReadOnlySpan buffer, ulong seed = 0) where T : unmanaged => Hash64(MemoryMarshal.Cast(buffer), seed); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long Hash64(ReadOnlySpan buffer, ulong seed = 0) + { + ref var local1 = ref MemoryMarshal.GetReference(buffer); + var length = buffer.Length; + ulong num1; + if (buffer.Length >= 32) + { + var num2 = seed + 6983438078262162902UL; + var num3 = seed + 14029467366897019727UL; + var num4 = seed; + var num5 = seed - 11400714785074694791UL; + for (; length >= 32; length -= 32) + { + ref var local2 = ref Unsafe.AddByteOffset(ref local1, (IntPtr)(buffer.Length - length)); + var num6 = num2 + Unsafe.ReadUnaligned(ref local2) * 14029467366897019727UL; + num2 = (ulong)((((long)num6 << 31) | (long)(num6 >> 33)) * -7046029288634856825L); + var num7 = num3 + Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref local2, new UIntPtr(8U))) * 14029467366897019727UL; + num3 = (ulong)((((long)num7 << 31) | (long)(num7 >> 33)) * -7046029288634856825L); + var num8 = num4 + Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref local2, new UIntPtr(16U))) * 14029467366897019727UL; + num4 = (ulong)((((long)num8 << 31) | (long)(num8 >> 33)) * -7046029288634856825L); + var num9 = num5 + Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref local2, new UIntPtr(24U))) * 14029467366897019727UL; + num5 = (ulong)((((long)num9 << 31) | (long)(num9 >> 33)) * -7046029288634856825L); + } + + var num10 = (((long)num2 << 1) | (long)(num2 >> 63)) + (((long)num3 << 7) | (long)(num3 >> 57)) + (((long)num4 << 12) | (long)(num4 >> 52)) + (((long)num5 << 18) | (long)(num5 >> 46)); + var num11 = num2 * 14029467366897019727UL; + var num12 = (((long)num11 << 31) | (long)(num11 >> 33)) * -7046029288634856825L; + var num13 = (num10 ^ num12) * -7046029288634856825L + -8796714831421723037L; + var num14 = num3 * 14029467366897019727UL; + var num15 = (((long)num14 << 31) | (long)(num14 >> 33)) * -7046029288634856825L; + var num16 = (num13 ^ num15) * -7046029288634856825L + -8796714831421723037L; + var num17 = num4 * 14029467366897019727UL; + var num18 = (((long)num17 << 31) | (long)(num17 >> 33)) * -7046029288634856825L; + var num19 = (num16 ^ num18) * -7046029288634856825L + -8796714831421723037L; + var num20 = num5 * 14029467366897019727UL; + var num21 = (((long)num20 << 31) | (long)(num20 >> 33)) * -7046029288634856825L; + num1 = (ulong)((num19 ^ num21) * -7046029288634856825L + -8796714831421723037L); + } + else + num1 = seed + 2870177450012600261UL; + + var num22 = num1 + (ulong)buffer.Length; + for (; length >= 8; length -= 8) + { + var num23 = Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref local1, (IntPtr)(buffer.Length - length))) * 14029467366897019727UL; + var num24 = (ulong)((((long)num23 << 31) | (long)(num23 >> 33)) * -7046029288634856825L); + var num25 = num22 ^ num24; + num22 = (ulong)((((long)num25 << 27) | (long)(num25 >> 37)) * -7046029288634856825L + -8796714831421723037L); + } + + if (length >= 4) + { + ulong num26 = Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref local1, (IntPtr)(buffer.Length - length))); + var num27 = num22 ^ (num26 * 11400714785074694791UL); + num22 = (ulong)((((long)num27 << 23) | (long)(num27 >> 41)) * -4417276706812531889L + 1609587929392839161L); + length -= 4; + } + + for (var byteOffset = 0; byteOffset < length; ++byteOffset) + { + ulong num28 = Unsafe.AddByteOffset(ref Unsafe.AddByteOffset(ref local1, (IntPtr)(buffer.Length - length)), (IntPtr)byteOffset); + var num29 = num22 ^ (num28 * 2870177450012600261UL); + num22 = (ulong)((((long)num29 << 11) | (long)(num29 >> 53)) * -7046029288634856825L); + } + +#if NET7_0_OR_GREATER + var num30 = (long)num22; + var num31 = (num30 ^ (num30 >>> 33)) * -4417276706812531889L; + var num32 = (num31 ^ (num31 >>> 29)) * 1609587929392839161L; + return num32 ^ (num32 >>> 32); +#else + var num30 = (long)num22; + var num31 = (num30 ^ (long)((ulong)num30 >> 33)) * -4417276706812531889L; + var num32 = (num31 ^ (long)((ulong)num31 >> 29)) * 1609587929392839161L; + return num32 ^ (long)((ulong)num32 >> 32); +#endif + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableHelper.cs new file mode 100644 index 0000000..098ba8a --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableHelper.cs @@ -0,0 +1,141 @@ +#if FANTASY_NET +using Fantasy.Async; +using Fantasy.InnerMessage; +using Fantasy.Platform.Net; +namespace Fantasy.Network.Route +{ + /// + /// 提供操作地址映射的辅助方法。 + /// + public static class AddressableHelper + { + // 声明一个私有静态只读列表 AddressableScenes,用于存储地址映射的场景配置信息 + private static readonly List AddressableScenes = new List(); + + static AddressableHelper() + { + // 遍历场景配置信息,筛选出地址映射类型的场景,并添加到 AddressableScenes 列表中 + foreach (var sceneConfig in SceneConfigData.Instance.List) + { + if (sceneConfig.SceneTypeString == "Addressable") + { + AddressableScenes.Add(new AddressableScene(sceneConfig)); + } + } + } + + /// + /// 添加地址映射并返回操作结果。 + /// + /// 场景实例。 + /// 地址映射的唯一标识。 + /// 路由 ID。 + /// 是否锁定。 + public static async FTask AddAddressable(Scene scene, long addressableId, long routeId, bool isLock = true) + { + // 获取指定索引的地址映射场景配置信息 + var addressableScene = AddressableScenes[(int)addressableId % AddressableScenes.Count]; + // 调用内部路由方法,发送添加地址映射的请求并等待响应 + var response = await scene.NetworkMessagingComponent.CallInnerRoute(addressableScene.RunTimeId, + new I_AddressableAdd_Request + { + AddressableId = addressableId, RouteId = routeId, IsLock = isLock + }); + if (response.ErrorCode != 0) + { + Log.Error($"AddAddressable error is {response.ErrorCode}"); + } + } + + /// + /// 获取地址映射的路由 ID。 + /// + /// 场景实例。 + /// 地址映射的唯一标识。 + /// 地址映射的路由 ID。 + public static async FTask GetAddressableRouteId(Scene scene, long addressableId) + { + // 获取指定索引的地址映射场景配置信息 + var addressableScene = AddressableScenes[(int)addressableId % AddressableScenes.Count]; + // 调用内部路由方法,发送获取地址映射路由 ID 的请求并等待响应 + var response = (I_AddressableGet_Response) await scene.NetworkMessagingComponent.CallInnerRoute(addressableScene.RunTimeId, + new I_AddressableGet_Request + { + AddressableId = addressableId + }); + // 检查响应错误码,如果为零,返回路由 ID;否则,输出错误信息并返回 0 + if (response.ErrorCode == 0) + { + return response.RouteId; + } + + Log.Error($"GetAddressable error is {response.ErrorCode} addressableId:{addressableId}"); + return 0; + } + + /// + /// 移除指定地址映射。 + /// + /// 场景实例。 + /// 地址映射的唯一标识。 + public static async FTask RemoveAddressable(Scene scene, long addressableId) + { + var addressableScene = AddressableScenes[(int)addressableId % AddressableScenes.Count]; + var response = await scene.NetworkMessagingComponent.CallInnerRoute(addressableScene.RunTimeId, + new I_AddressableRemove_Request + { + AddressableId = addressableId + }); + + if (response.ErrorCode != 0) + { + Log.Error($"RemoveAddressable error is {response.ErrorCode}"); + } + } + + /// + /// 锁定指定地址映射。 + /// + /// 场景实例。 + /// 地址映射的唯一标识。 + public static async FTask LockAddressable(Scene scene, long addressableId) + { + var addressableScene = AddressableScenes[(int)addressableId % AddressableScenes.Count]; + var response = await scene.NetworkMessagingComponent.CallInnerRoute(addressableScene.RunTimeId, + new I_AddressableLock_Request + { + AddressableId = addressableId + }); + + if (response.ErrorCode != 0) + { + Log.Error($"LockAddressable error is {response.ErrorCode}"); + } + } + + /// + /// 解锁指定地址映射。 + /// + /// 场景实例。 + /// 地址映射的唯一标识。 + /// 路由 ID。 + /// 解锁来源。 + public static async FTask UnLockAddressable(Scene scene, long addressableId, long routeId, string source) + { + var addressableScene = AddressableScenes[(int)addressableId % AddressableScenes.Count]; + var response = await scene.NetworkMessagingComponent.CallInnerRoute(addressableScene.RunTimeId, + new I_AddressableUnLock_Request + { + AddressableId = addressableId, + RouteId = routeId, + Source = source + }); + + if (response.ErrorCode != 0) + { + Log.Error($"UnLockAddressable error is {response.ErrorCode}"); + } + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableManageComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableManageComponent.cs new file mode 100644 index 0000000..8d08f08 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableManageComponent.cs @@ -0,0 +1,144 @@ +#if FANTASY_NET +using System; +using System.Collections.Generic; +using Fantasy.Async; +using Fantasy.Entitas; +using Fantasy.Entitas.Interface; + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +namespace Fantasy.Network.Route +{ + public class AddressableManageComponentAwakeSystem : AwakeSystem + { + protected override void Awake(AddressableManageComponent self) + { + self.AddressableLock = self.Scene.CoroutineLockComponent.Create(self.GetType().TypeHandle.Value.ToInt64()); + } + } + + public class AddressableManageComponentDestroySystem : DestroySystem + { + protected override void Destroy(AddressableManageComponent self) + { + foreach (var (_, waitCoroutineLock) in self.Locks) + { + waitCoroutineLock.Dispose(); + } + + self.Locks.Clear(); + self.Addressable.Clear(); + self.AddressableLock.Dispose(); + self.AddressableLock = null; + } + } + + public sealed class AddressableManageComponent : Entity + { + public CoroutineLock AddressableLock; + public readonly Dictionary Addressable = new(); + public readonly Dictionary Locks = new(); + + /// + /// 添加地址映射。 + /// + /// 地址映射的唯一标识。 + /// 路由 ID。 + /// 是否进行锁定。 + public async FTask Add(long addressableId, long routeId, bool isLock) + { + WaitCoroutineLock waitCoroutineLock = null; + + try + { + if (isLock) + { + waitCoroutineLock = await AddressableLock.Wait(addressableId); + } + + Addressable[addressableId] = routeId; +#if FANTASY_DEVELOP + Log.Debug($"AddressableManageComponent Add addressableId:{addressableId} routeId:{routeId}"); +#endif + } + catch (Exception e) + { + Log.Error(e); + } + finally + { + waitCoroutineLock?.Dispose(); + } + } + + /// + /// 获取地址映射的路由 ID。 + /// + /// 地址映射的唯一标识。 + /// 地址映射的路由 ID。 + public async FTask Get(long addressableId) + { + using (await AddressableLock.Wait(addressableId)) + { + Addressable.TryGetValue(addressableId, out var routeId); + return routeId; + } + } + + /// + /// 移除地址映射。 + /// + /// 地址映射的唯一标识。 + public async FTask Remove(long addressableId) + { + using (await AddressableLock.Wait(addressableId)) + { + Addressable.Remove(addressableId); +#if FANTASY_DEVELOP + Log.Debug($"Addressable Remove addressableId: {addressableId} _addressable:{Addressable.Count}"); +#endif + } + } + + /// + /// 锁定地址映射。 + /// + /// 地址映射的唯一标识。 + public async FTask Lock(long addressableId) + { + var waitCoroutineLock = await AddressableLock.Wait(addressableId); + Locks.Add(addressableId, waitCoroutineLock); + } + + /// + /// 解锁地址映射。 + /// + /// 地址映射的唯一标识。 + /// 新的路由 ID。 + /// 解锁来源。 + public void UnLock(long addressableId, long routeId, string source) + { + if (!Locks.Remove(addressableId, out var coroutineLock)) + { + Log.Error($"Addressable unlock not found addressableId: {addressableId} Source:{source}"); + return; + } + + Addressable.TryGetValue(addressableId, out var oldAddressableId); + + if (routeId != 0) + { + Addressable[addressableId] = routeId; + } + + coroutineLock.Dispose(); +#if FANTASY_DEVELOP + Log.Debug($"Addressable UnLock key: {addressableId} oldAddressableId : {oldAddressableId} routeId: {routeId} Source:{source}"); +#endif + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableMessageComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableMessageComponent.cs new file mode 100644 index 0000000..03e0def --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableMessageComponent.cs @@ -0,0 +1,91 @@ +using Fantasy.Async; +using Fantasy.Entitas; +using Fantasy.Entitas.Interface; + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#if FANTASY_NET +namespace Fantasy.Network.Route +{ + public class AddressableMessageComponentDestroySystem : DestroySystem + { + protected override void Destroy(AddressableMessageComponent self) + { + if (self.AddressableId != 0) + { + AddressableHelper.RemoveAddressable(self.Scene, self.AddressableId).Coroutine(); + self.AddressableId = 0; + } + } + } + + /// + /// 可寻址消息组件、挂载了这个组件可以接收Addressable消息 + /// + public sealed class AddressableMessageComponent : Entity + { + /// + /// 可寻址消息组件的唯一标识。 + /// + public long AddressableId; + + /// + /// 注册可寻址消息组件。 + /// + /// 是否进行锁定。 + public FTask Register(bool isLock = true) + { + if (Parent == null) + { + throw new Exception("AddressableRouteComponent must be mounted under a component"); + } + + AddressableId = Parent.Id; + + if (AddressableId == 0) + { + throw new Exception("AddressableRouteComponent.Parent.Id is null"); + } + +#if FANTASY_DEVELOP + Log.Debug($"AddressableMessageComponent Register addressableId:{AddressableId} RouteId:{Parent.RouteId}"); +#endif + return AddressableHelper.AddAddressable(Scene, AddressableId, Parent.RouteId, isLock); + } + + /// + /// 锁定可寻址消息组件。 + /// + public FTask Lock() + { +#if FANTASY_DEVELOP + Log.Debug($"AddressableMessageComponent Lock {Parent.Id}"); +#endif + return AddressableHelper.LockAddressable(Scene, Parent.Id); + } + + /// + /// 解锁可寻址消息组件。 + /// + /// 解锁来源。 + public FTask UnLock(string source) + { +#if FANTASY_DEVELOP + Log.Debug($"AddressableMessageComponent UnLock {Parent.Id} {Parent.RouteId}"); +#endif + return AddressableHelper.UnLockAddressable(Scene, Parent.Id, Parent.RouteId, source); + } + + /// + /// 锁定可寻址消息并且释放掉AddressableMessageComponent组件。 + /// 该方法不会自动取Addressable中心删除自己的信息。 + /// 用于传送或转移到其他服务器时使用 + /// + public async FTask LockAndRelease() + { + await Lock(); + AddressableId = 0; + Dispose(); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableRouteComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableRouteComponent.cs new file mode 100644 index 0000000..bf439d7 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableRouteComponent.cs @@ -0,0 +1,218 @@ +using Fantasy.Async; +using Fantasy.Entitas; +using Fantasy.Entitas.Interface; +using Fantasy.Helper; +using Fantasy.Network.Interface; +using Fantasy.PacketParser.Interface; +using Fantasy.Scheduler; +using Fantasy.Timer; + +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#if FANTASY_NET +namespace Fantasy.Network.Route +{ + public class AddressableRouteComponentAwakeSystem : AwakeSystem + { + protected override void Awake(AddressableRouteComponent self) + { + ((Session)self.Parent).AddressableRouteComponent = self; + + var selfScene = self.Scene; + self.TimerComponent = selfScene.TimerComponent; + self.NetworkMessagingComponent = selfScene.NetworkMessagingComponent; + self.MessageDispatcherComponent = selfScene.MessageDispatcherComponent; + self.AddressableRouteLock = + selfScene.CoroutineLockComponent.Create(self.GetType().TypeHandle.Value.ToInt64()); + } + } + + public class AddressableRouteComponentDestroySystem : DestroySystem + { + protected override void Destroy(AddressableRouteComponent self) + { + self.AddressableRouteLock.Dispose(); + + self.AddressableRouteId = 0; + self.AddressableId = 0; + self.TimerComponent = null; + self.AddressableRouteLock = null; + self.NetworkMessagingComponent = null; + self.MessageDispatcherComponent = null; + } + } + + /// + /// 可寻址路由消息组件,挂载了这个组件可以接收和发送 Addressable 消息。 + /// + public sealed class AddressableRouteComponent : Entity + { + public long AddressableId; + public long AddressableRouteId; + public CoroutineLock AddressableRouteLock; + public TimerComponent TimerComponent; + public NetworkMessagingComponent NetworkMessagingComponent; + public MessageDispatcherComponent MessageDispatcherComponent; + + internal void Send(IAddressableRouteMessage message) + { + Call(message).Coroutine(); + } + + internal async FTask Send(Type requestType, APackInfo packInfo) + { + await Call(requestType, packInfo); + } + + internal async FTask Call(Type requestType, APackInfo packInfo) + { + if (IsDisposed) + { + return MessageDispatcherComponent.CreateResponse(requestType, InnerErrorCode.ErrNotFoundRoute); + } + + packInfo.IsDisposed = true; + var failCount = 0; + var runtimeId = RuntimeId; + IResponse iRouteResponse = null; + + try + { + using (await AddressableRouteLock.Wait(AddressableId, "AddressableRouteComponent Call MemoryStream")) + { + while (!IsDisposed) + { + if (AddressableRouteId == 0) + { + AddressableRouteId = await AddressableHelper.GetAddressableRouteId(Scene, AddressableId); + } + + if (AddressableRouteId == 0) + { + return MessageDispatcherComponent.CreateResponse(requestType, + InnerErrorCode.ErrNotFoundRoute); + } + + iRouteResponse = await NetworkMessagingComponent.CallInnerRoute(AddressableRouteId, requestType, packInfo); + + if (runtimeId != RuntimeId) + { + iRouteResponse.ErrorCode = InnerErrorCode.ErrRouteTimeout; + } + + switch (iRouteResponse.ErrorCode) + { + case InnerErrorCode.ErrRouteTimeout: + { + return iRouteResponse; + } + case InnerErrorCode.ErrNotFoundRoute: + { + if (++failCount > 20) + { + Log.Error($"AddressableComponent.Call failCount > 20 route send message fail, routeId: {RouteId} AddressableRouteComponent:{Id}"); + return iRouteResponse; + } + + await TimerComponent.Net.WaitAsync(100); + + if (runtimeId != RuntimeId) + { + iRouteResponse.ErrorCode = InnerErrorCode.ErrRouteTimeout; + } + + AddressableRouteId = 0; + continue; + } + default: + { + return iRouteResponse; // 对于其他情况,直接返回响应,无需额外处理 + } + } + } + } + } + finally + { + packInfo.Dispose(); + } + + + return iRouteResponse; + } + + /// + /// 调用可寻址路由消息并等待响应。 + /// + /// 可寻址路由请求。 + private async FTask Call(IAddressableRouteMessage request) + { + if (IsDisposed) + { + return MessageDispatcherComponent.CreateResponse(request.GetType(), InnerErrorCode.ErrNotFoundRoute); + } + + var failCount = 0; + var runtimeId = RuntimeId; + + using (await AddressableRouteLock.Wait(AddressableId, "AddressableRouteComponent Call")) + { + while (true) + { + if (AddressableRouteId == 0) + { + AddressableRouteId = await AddressableHelper.GetAddressableRouteId(Scene, AddressableId); + } + + if (AddressableRouteId == 0) + { + return MessageDispatcherComponent.CreateResponse(request.GetType(), + InnerErrorCode.ErrNotFoundRoute); + } + + var iRouteResponse = await NetworkMessagingComponent.CallInnerRoute(AddressableRouteId, request); + + if (runtimeId != RuntimeId) + { + iRouteResponse.ErrorCode = InnerErrorCode.ErrRouteTimeout; + } + + switch (iRouteResponse.ErrorCode) + { + case InnerErrorCode.ErrNotFoundRoute: + { + if (++failCount > 20) + { + Log.Error( + $"AddressableRouteComponent.Call failCount > 20 route send message fail, routeId: {RouteId} AddressableRouteComponent:{Id}"); + return iRouteResponse; + } + + await TimerComponent.Net.WaitAsync(500); + + if (runtimeId != RuntimeId) + { + iRouteResponse.ErrorCode = InnerErrorCode.ErrRouteTimeout; + } + + AddressableRouteId = 0; + continue; + } + case InnerErrorCode.ErrRouteTimeout: + { + return iRouteResponse; + } + default: + { + return iRouteResponse; + } + } + } + } + } + } +} +#endif diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableScene.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableScene.cs new file mode 100644 index 0000000..3105fca --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/AddressableScene.cs @@ -0,0 +1,31 @@ +#if FANTASY_NET +using Fantasy.IdFactory; +using Fantasy.Platform.Net; + +namespace Fantasy.Network.Route +{ + /// + /// AddressableScene + /// + public sealed class AddressableScene + { + /// + /// Id + /// + public readonly long Id; + /// + /// RunTimeId + /// + public readonly long RunTimeId; + /// + /// 构造方法 + /// + /// sceneConfig + public AddressableScene(SceneConfig sceneConfig) + { + Id = IdFactoryHelper.EntityId(0, sceneConfig.Id, (byte)sceneConfig.WorldConfigId, 0); + RunTimeId = IdFactoryHelper.RuntimeId(0, sceneConfig.Id, (byte)sceneConfig.WorldConfigId, 0); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableAddHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableAddHandler.cs new file mode 100644 index 0000000..847625b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableAddHandler.cs @@ -0,0 +1,26 @@ +using Fantasy.Async; +using Fantasy.InnerMessage; +using Fantasy.Network.Interface; + +#if FANTASY_NET +namespace Fantasy.Network.Route +{ + /// + /// 声明一个 sealed 类 I_AddressableAddHandler,继承自 RouteRPC 类,并指定泛型参数 + /// + public sealed class I_AddressableAddHandler : RouteRPC + { + /// + /// 在收到地址映射添加请求时执行的逻辑。 + /// + /// 当前场景实例。 + /// 包含请求信息的 I_AddressableAdd_Request 实例。 + /// 用于构建响应的 I_AddressableAdd_Response 实例。 + /// 执行响应的回调操作。 + protected override async FTask Run(Scene scene, I_AddressableAdd_Request request, I_AddressableAdd_Response response, Action reply) + { + await scene.GetComponent().Add(request.AddressableId, request.RouteId, request.IsLock); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableGetHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableGetHandler.cs new file mode 100644 index 0000000..f53c1f1 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableGetHandler.cs @@ -0,0 +1,26 @@ +using Fantasy.Async; +using Fantasy.InnerMessage; +using Fantasy.Network.Interface; + +#if FANTASY_NET +namespace Fantasy.Network.Route +{ + /// + /// 声明一个 sealed 类 I_AddressableGetHandler,继承自 RouteRPC 类,并指定泛型参数 + /// + public sealed class I_AddressableGetHandler : RouteRPC + { + /// + /// 在收到地址映射获取请求时执行的逻辑。 + /// + /// 当前场景实例。 + /// 包含请求信息的 I_AddressableGet_Request 实例。 + /// 用于构建响应的 I_AddressableGet_Response 实例。 + /// 执行响应的回调操作。 + protected override async FTask Run(Scene scene, I_AddressableGet_Request request, I_AddressableGet_Response response, Action reply) + { + response.RouteId = await scene.GetComponent().Get(request.AddressableId); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableLockHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableLockHandler.cs new file mode 100644 index 0000000..b964274 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableLockHandler.cs @@ -0,0 +1,26 @@ +using Fantasy.Async; +using Fantasy.InnerMessage; +using Fantasy.Network.Interface; + +#if FANTASY_NET +namespace Fantasy.Network.Route +{ + /// + /// 声明一个 sealed 类 I_AddressableLockHandler,继承自 RouteRPC 类,并指定泛型参数 + /// + public sealed class I_AddressableLockHandler : RouteRPC + { + /// + /// 在收到地址映射锁定请求时执行的逻辑。 + /// + /// 当前场景实例。 + /// 包含请求信息的 I_AddressableLock_Request 实例。 + /// 用于构建响应的 I_AddressableLock_Response 实例。 + /// 执行响应的回调操作。 + protected override async FTask Run(Scene scene, I_AddressableLock_Request request, I_AddressableLock_Response response, Action reply) + { + await scene.GetComponent().Lock(request.AddressableId); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableRemoveHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableRemoveHandler.cs new file mode 100644 index 0000000..c4e9654 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableRemoveHandler.cs @@ -0,0 +1,26 @@ +using Fantasy.Async; +using Fantasy.InnerMessage; +using Fantasy.Network.Interface; + +#if FANTASY_NET +namespace Fantasy.Network.Route +{ + /// + /// 声明一个 sealed 类 I_AddressableRemoveHandler,继承自 RouteRPC 类,并指定泛型参数 + /// + public sealed class I_AddressableRemoveHandler : RouteRPC + { + /// + /// 在收到地址映射移除请求时执行的逻辑。 + /// + /// 当前场景实例。 + /// 包含请求信息的 I_AddressableRemove_Request 实例。 + /// 用于构建响应的 I_AddressableRemove_Response 实例。 + /// 执行响应的回调操作。 + protected override async FTask Run(Scene scene, I_AddressableRemove_Request request, I_AddressableRemove_Response response, Action reply) + { + await scene.GetComponent().Remove(request.AddressableId); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableUnLockHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableUnLockHandler.cs new file mode 100644 index 0000000..1ab3937 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Addressable/Handler/I_AddressableUnLockHandler.cs @@ -0,0 +1,27 @@ +using Fantasy.Async; +using Fantasy.InnerMessage; +using Fantasy.Network.Interface; + +#if FANTASY_NET +namespace Fantasy.Network.Route +{ + /// + /// 声明一个 sealed 类 I_AddressableUnLockHandler,继承自 RouteRPC 类,并指定泛型参数 + /// + public sealed class I_AddressableUnLockHandler : RouteRPC + { + /// + /// 在收到地址映射解锁请求时执行的逻辑。 + /// + /// 当前场景实例。 + /// 包含请求信息的 I_AddressableUnLock_Request 实例。 + /// 用于构建响应的 I_AddressableUnLock_Response 实例。 + /// 执行响应的回调操作。 + protected override async FTask Run(Scene scene, I_AddressableUnLock_Request request, I_AddressableUnLock_Response response, Action reply) + { + scene.GetComponent().UnLock(request.AddressableId, request.RouteId, request.Source); + await FTask.CompletedTask; + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/MemoryStreamBufferPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/MemoryStreamBufferPool.cs new file mode 100644 index 0000000..6e6d4f7 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/MemoryStreamBufferPool.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using Fantasy.Serialize; +#pragma warning disable CS8603 // Possible null reference return. + +namespace Fantasy.Network +{ + /// + /// MemoryStreamBuffer对象池类 + /// + public sealed class MemoryStreamBufferPool : IDisposable + { + private readonly int _poolSize; + private readonly int _maxMemoryStreamSize; + private readonly Queue _memoryStreamPool = new Queue(); + + /// + /// 构造方法 + /// + /// + /// + public MemoryStreamBufferPool(int maxMemoryStreamSize = 2048, int poolSize = 512) + { + _poolSize = poolSize; + _maxMemoryStreamSize = maxMemoryStreamSize; + } + + /// + /// 租借MemoryStream + /// + /// + /// + /// + public MemoryStreamBuffer RentMemoryStream(MemoryStreamBufferSource memoryStreamBufferSource, int size = 0) + { + if (size > _maxMemoryStreamSize) + { + return new MemoryStreamBuffer(memoryStreamBufferSource, size); + } + + if (size < _maxMemoryStreamSize) + { + size = _maxMemoryStreamSize; + } + + if (_memoryStreamPool.Count == 0) + { + return new MemoryStreamBuffer(memoryStreamBufferSource, size); + } + + if (_memoryStreamPool.TryDequeue(out var memoryStream)) + { + memoryStream.MemoryStreamBufferSource = memoryStreamBufferSource; + return memoryStream; + } + + return new MemoryStreamBuffer(memoryStreamBufferSource, size); + } + + /// + /// 归还ReturnMemoryStream + /// + /// + public void ReturnMemoryStream(MemoryStreamBuffer memoryStreamBuffer) + { + if (memoryStreamBuffer.Capacity > _maxMemoryStreamSize) + { + return; + } + + if (_memoryStreamPool.Count > _poolSize) + { + // 设置该值只能是内网或服务器转发的时候可能在连接之前发送的数据过多的情况下可以修改。 + // 设置过大会导致内存占用过大,所以要谨慎设置。 + return; + } + + memoryStreamBuffer.SetLength(0); + memoryStreamBuffer.MemoryStreamBufferSource = MemoryStreamBufferSource.None; + _memoryStreamPool.Enqueue(memoryStreamBuffer); + } + + /// + /// 销毁方法 + /// + public void Dispose() + { + foreach (var memoryStreamBuffer in _memoryStreamPool) + { + memoryStreamBuffer.MemoryStreamBufferSource = MemoryStreamBufferSource.None; + memoryStreamBuffer.Dispose(); + } + _memoryStreamPool.Clear(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Dispatcher/Interface/IMessageHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Dispatcher/Interface/IMessageHandler.cs new file mode 100644 index 0000000..d8f928e --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Dispatcher/Interface/IMessageHandler.cs @@ -0,0 +1,220 @@ +// ReSharper disable InconsistentNaming + +using System; +using System.Collections.Generic; +using Fantasy.Async; +using Fantasy.Network; +using Fantasy.Serialize; + +namespace Fantasy.Network.Interface +{ + /// + /// 表示消息处理器的接口,处理特定类型的消息。 + /// + public interface IMessageHandler + { + /// + /// 获取处理的消息类型。 + /// + /// 消息类型。 + public Type Type(); + /// + /// 处理消息的方法。 + /// + /// 会话对象。 + /// RPC标识。 + /// 消息类型代码。 + /// 要处理的消息。 + /// 异步任务。 + FTask Handle(Session session, uint rpcId, uint messageTypeCode, object message); + } + + /// + /// 泛型消息基类,实现了 接口。 + /// + public abstract class Message : IMessageHandler + { + /// + /// 获取处理的消息类型。 + /// + /// 消息类型。 + public Type Type() + { + return typeof(T); + } + + /// + /// 处理消息的方法。 + /// + /// 会话对象。 + /// RPC标识。 + /// 消息类型代码。 + /// 要处理的消息。 + /// 异步任务。 + public async FTask Handle(Session session, uint rpcId, uint messageTypeCode, object message) + { + try + { + await Run(session, (T) message); + } + catch (Exception e) + { + Log.Error(e); + } + } + + /// + /// 运行消息处理逻辑。 + /// + /// 会话对象。 + /// 要处理的消息。 + /// 异步任务。 + protected abstract FTask Run(Session session, T message); + } + + /// + /// 泛型消息RPC基类,实现了 接口,用于处理请求和响应类型的消息。 + /// + public abstract class MessageRPC : IMessageHandler where TRequest : IRequest where TResponse : AMessage, IResponse, new() + { + /// + /// 获取处理的消息类型。 + /// + /// 消息类型。 + public Type Type() + { + return typeof(TRequest); + } + + /// + /// 处理消息的方法。 + /// + /// 会话对象。 + /// RPC标识。 + /// 消息类型代码。 + /// 要处理的消息。 + /// 异步任务。 + public async FTask Handle(Session session, uint rpcId, uint messageTypeCode, object message) + { + if (message is not TRequest request) + { + Log.Error($"消息类型转换错误: {message.GetType().Name} to {typeof(TRequest).Name}"); + return; + } + + var response = new TResponse(); + var isReply = false; + + void Reply() + { + if (isReply) + { + return; + } + + isReply = true; + + if (session.IsDisposed) + { + return; + } + + session.Send(response, rpcId); + } + + try + { + await Run(session, request, response, Reply); + } + catch (Exception e) + { + Log.Error(e); + response.ErrorCode = InnerErrorCode.ErrRpcFail; + } + finally + { + Reply(); + } + } + + /// + /// 运行消息处理逻辑。 + /// + /// 会话对象。 + /// 请求消息。 + /// 响应消息。 + /// 发送响应的方法。 + /// 异步任务。 + protected abstract FTask Run(Session session, TRequest request, TResponse response, Action reply); + } +#if FANTASY_UNITY + public interface IMessageDelegateHandler + { + /// + /// 注册消息处理器。 + /// + /// + public void Register(object @delegate); + /// + /// 取消注册消息处理器。 + /// + /// + public int UnRegister(object @delegate); + /// + /// 处理消息的方法。 + /// + /// + /// + public void Handle(Session session, object message); + } + public delegate FTask MessageDelegate(Session session, T msg) where T : IMessage; + public sealed class MessageDelegateHandler : IMessageDelegateHandler, IDisposable where T : IMessage + { + private readonly List> _delegates = new List>(); + + public Type Type() + { + return typeof(T); + } + + public void Register(object @delegate) + { + var a = (MessageDelegate)@delegate; + + if (_delegates.Contains(a)) + { + Log.Error($"{typeof(T).Name} already register action delegateName:{a.Method.Name}"); + return; + } + + _delegates.Add(a); + } + + public int UnRegister(object @delegate) + { + _delegates.Remove((MessageDelegate)@delegate); + return _delegates.Count; + } + + public void Handle(Session session, object message) + { + foreach (var registerDelegate in _delegates) + { + try + { + registerDelegate(session, (T)message).Coroutine(); + } + catch (Exception e) + { + Log.Error(e); + } + } + } + + public void Dispose() + { + _delegates.Clear(); + } + } +#endif +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Dispatcher/Interface/IRouteMessageHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Dispatcher/Interface/IRouteMessageHandler.cs new file mode 100644 index 0000000..4a367b2 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Dispatcher/Interface/IRouteMessageHandler.cs @@ -0,0 +1,490 @@ +using Fantasy.Async; +using Fantasy.Entitas; +using Fantasy.InnerMessage; +using Fantasy.Network; +using Fantasy.Serialize; + +#if FANTASY_NET +// ReSharper disable InconsistentNaming + +namespace Fantasy.Network.Interface +{ + /// + /// 表示路由消息处理器的接口,处理特定类型的路由消息。 + /// + public interface IRouteMessageHandler + { + /// + /// 获取处理的消息类型。 + /// + /// 消息类型。 + public Type Type(); + + /// + /// 处理路由消息的方法。 + /// + /// 会话对象。 + /// 实体对象。 + /// RPC标识。 + /// 要处理的路由消息。 + /// 异步任务。 + FTask Handle(Session session, Entity entity, uint rpcId, object routeMessage); + } + + /// + /// 泛型路由基类,实现了 接口,用于处理特定实体和路由消息类型的路由。 + /// + /// 实体类型。 + /// 路由消息类型。 + public abstract class Route : IRouteMessageHandler where TEntity : Entity where TMessage : IRouteMessage + { + /// + /// 获取处理的消息类型。 + /// + /// 消息类型。 + public Type Type() + { + return typeof(TMessage); + } + + /// + /// 处理路由消息的方法。 + /// + /// 会话对象。 + /// 实体对象。 + /// RPC标识。 + /// 要处理的路由消息。 + /// 异步任务。 + public async FTask Handle(Session session, Entity entity, uint rpcId, object routeMessage) + { + if (routeMessage is not TMessage ruteMessage) + { + Log.Error($"Message type conversion error: {routeMessage.GetType().FullName} to {typeof(TMessage).Name}"); + return; + } + + if (entity is not TEntity tEntity) + { + Log.Error($"Route type conversion error: {entity.GetType().Name} to {nameof(TEntity)}"); + return; + } + + try + { + await Run(tEntity, ruteMessage); + } + catch (Exception e) + { + if (entity is not Scene scene) + { + scene = entity.Scene; + } + + Log.Error($"SceneConfigId:{session.Scene.SceneConfigId} ProcessConfigId:{scene.Process.Id} SceneType:{scene.SceneType} EntityId {tEntity.Id} : Error {e}"); + } + } + + /// + /// 运行路由消息处理逻辑。 + /// + /// 实体对象。 + /// 要处理的路由消息。 + /// 异步任务。 + protected abstract FTask Run(TEntity entity, TMessage message); + } + + /// + /// 泛型路由RPC基类,实现了 接口,用于处理请求和响应类型的路由。 + /// + /// 实体类型。 + /// 路由请求类型。 + /// 路由响应类型。 + public abstract class RouteRPC : IRouteMessageHandler where TEntity : Entity where TRouteRequest : IRouteRequest where TRouteResponse : AMessage, IRouteResponse, new() + { + /// + /// 获取处理的消息类型。 + /// + /// 消息类型。 + public Type Type() + { + return typeof(TRouteRequest); + } + + /// + /// 处理路由消息的方法。 + /// + /// 会话对象。 + /// 实体对象。 + /// RPC标识。 + /// 要处理的路由消息。 + /// 异步任务。 + public async FTask Handle(Session session, Entity entity, uint rpcId, object routeMessage) + { + if (routeMessage is not TRouteRequest tRouteRequest) + { + Log.Error($"Message type conversion error: {routeMessage.GetType().FullName} to {typeof(TRouteRequest).Name}"); + return; + } + + if (entity is not TEntity tEntity) + { + Log.Error($"Route type conversion error: {entity.GetType().Name} to {nameof(TEntity)}"); + return; + } + + var isReply = false; + var response = new TRouteResponse(); + + void Reply() + { + if (isReply) + { + return; + } + + isReply = true; + + if (session.IsDisposed) + { + return; + } + + session.Send(response, rpcId); + } + + try + { + await Run(tEntity, tRouteRequest, response, Reply); + } + catch (Exception e) + { + if (entity is not Scene scene) + { + scene = entity.Scene; + } + + Log.Error($"SceneConfigId:{session.Scene.SceneConfigId} ProcessConfigId:{scene.Process.Id} SceneType:{scene.SceneType} EntityId {tEntity.Id} : Error {e}"); + response.ErrorCode = InnerErrorCode.ErrRpcFail; + } + finally + { + Reply(); + } + } + + /// + /// 运行路由消息处理逻辑。 + /// + /// 实体对象。 + /// 请求路由消息。 + /// 响应路由消息。 + /// 发送响应的方法。 + /// 异步任务。 + protected abstract FTask Run(TEntity entity, TRouteRequest request, TRouteResponse response, Action reply); + } + + /// + /// 泛型可寻址路由基类,实现了 接口,用于处理特定实体和可寻址路由消息类型的路由。 + /// + /// 实体类型。 + /// 可寻址路由消息类型。 + public abstract class Addressable : IRouteMessageHandler where TEntity : Entity where TMessage : IAddressableRouteMessage + { + /// + /// 获取消息类型。 + /// + /// 消息类型。 + public Type Type() + { + return typeof(TMessage); + } + + /// + /// 处理可寻址路由消息。 + /// + /// 会话。 + /// 实体。 + /// RPC标识。 + /// 可寻址路由消息。 + public async FTask Handle(Session session, Entity entity, uint rpcId, object routeMessage) + { + if (routeMessage is not TMessage ruteMessage) + { + Log.Error($"Message type conversion error: {routeMessage.GetType().FullName} to {typeof(TMessage).Name}"); + return; + } + + if (entity is not TEntity tEntity) + { + Log.Error($"Route type conversion error: {entity.GetType().Name} to {nameof(TEntity)}"); + return; + } + + try + { + await Run(tEntity, ruteMessage); + } + catch (Exception e) + { + if (entity is not Scene scene) + { + scene = entity.Scene; + } + + Log.Error($"SceneConfigId:{session.Scene.SceneConfigId} ProcessConfigId:{scene.Process.Id} SceneType:{scene.SceneType} EntityId {tEntity.Id} : Error {e}"); + } + finally + { + session.Send(new RouteResponse(), rpcId); + } + } + + /// + /// 运行处理可寻址路由消息。 + /// + /// 实体。 + /// 可寻址路由消息。 + protected abstract FTask Run(TEntity entity, TMessage message); + } + + /// + /// 泛型可寻址RPC路由基类,实现了 接口,用于处理特定实体和可寻址RPC路由请求类型的路由。 + /// + /// 实体类型。 + /// 可寻址RPC路由请求类型。 + /// 可寻址RPC路由响应类型。 + public abstract class AddressableRPC : IRouteMessageHandler where TEntity : Entity where TRouteRequest : IAddressableRouteRequest where TRouteResponse : IAddressableRouteResponse, new() + { + /// + /// 获取消息类型。 + /// + /// 消息类型。 + public Type Type() + { + return typeof(TRouteRequest); + } + + /// + /// 处理可寻址RPC路由请求。 + /// + /// 会话。 + /// 实体。 + /// RPC标识。 + /// 可寻址RPC路由请求。 + public async FTask Handle(Session session, Entity entity, uint rpcId, object routeMessage) + { + if (routeMessage is not TRouteRequest tRouteRequest) + { + Log.Error($"Message type conversion error: {routeMessage.GetType().FullName} to {typeof(TRouteRequest).Name}"); + return; + } + + if (entity is not TEntity tEntity) + { + Log.Error($"Route type conversion error: {entity.GetType().Name} to {nameof(TEntity)}"); + return; + } + + var isReply = false; + var response = new TRouteResponse(); + + void Reply() + { + if (isReply) + { + return; + } + + isReply = true; + + if (session.IsDisposed) + { + return; + } + + session.Send(response, rpcId); + } + + try + { + await Run(tEntity, tRouteRequest, response, Reply); + } + catch (Exception e) + { + if (entity is not Scene scene) + { + scene = entity.Scene; + } + + Log.Error($"SceneConfigId:{session.Scene.SceneConfigId} ProcessConfigId:{scene.Process.Id} SceneType:{scene.SceneType} EntityId {tEntity.Id} : Error {e}"); + response.ErrorCode = InnerErrorCode.ErrRpcFail; + } + finally + { + Reply(); + } + } + + /// + /// 运行处理可寻址RPC路由请求。 + /// + /// 实体。 + /// 可寻址RPC路由请求。 + /// 可寻址RPC路由响应。 + /// 回复操作。 + protected abstract FTask Run(TEntity entity, TRouteRequest request, TRouteResponse response, Action reply); + } + + /// + /// 泛型漫游路由基类,实现了 接口,用于处理特定实体和漫游路由消息类型的路由。 + /// + /// 实体类型。 + /// 漫游消息类型。 + public abstract class Roaming : IRouteMessageHandler where TEntity : Entity where TMessage : IRoamingMessage + { + /// + /// 获取消息类型。 + /// + /// 消息类型。 + public Type Type() + { + return typeof(TMessage); + } + + /// + /// 处理漫游消息。 + /// + /// 会话。 + /// 实体。 + /// RPC标识。 + /// 漫游消息。 + public async FTask Handle(Session session, Entity entity, uint rpcId, object routeMessage) + { + if (routeMessage is not TMessage ruteMessage) + { + Log.Error($"Message type conversion error: {routeMessage.GetType().FullName} to {typeof(TMessage).Name}"); + return; + } + + if (entity is not TEntity tEntity) + { + Log.Error($"Route type conversion error: {entity.GetType().Name} to {nameof(TEntity)}"); + return; + } + + try + { + await Run(tEntity, ruteMessage); + } + catch (Exception e) + { + if (entity is not Scene scene) + { + scene = entity.Scene; + } + + Log.Error($"SceneConfigId:{session.Scene.SceneConfigId} ProcessConfigId:{scene.Process.Id} SceneType:{scene.SceneType} EntityId {tEntity.Id} : Error {e}"); + } + finally + { + session.Send(new RouteResponse(), rpcId); + } + } + + /// + /// 运行处理漫游消息。 + /// + /// 终点实体。 + /// 漫游消息。 + protected abstract FTask Run(TEntity terminus, TMessage message); + } + + /// + /// 漫游RPC路由基类,实现了 接口,用于处理特定实体和漫游RPC路由请求类型的路由。 + /// + /// 实体类型。 + /// 漫游RPC路由请求类型。 + /// 漫游RPC路由响应类型。 + public abstract class RoamingRPC : IRouteMessageHandler where TEntity : Entity where TRouteRequest : IRoamingRequest where TRouteResponse : IRoamingResponse, new() + { + /// + /// 获取消息类型。 + /// + /// 消息类型。 + public Type Type() + { + return typeof(TRouteRequest); + } + + /// + /// 处理漫游RPC路由请求。 + /// + /// 会话。 + /// 实体。 + /// RPC标识。 + /// 漫游RPC路由请求。 + public async FTask Handle(Session session, Entity entity, uint rpcId, object routeMessage) + { + if (routeMessage is not TRouteRequest tRouteRequest) + { + Log.Error($"Message type conversion error: {routeMessage.GetType().FullName} to {typeof(TRouteRequest).Name}"); + return; + } + + if (entity is not TEntity tEntity) + { + Log.Error($"Route type conversion error: {entity.GetType().Name} to {nameof(TEntity)}"); + return; + } + + var isReply = false; + var response = new TRouteResponse(); + + void Reply() + { + if (isReply) + { + return; + } + + isReply = true; + + if (session.IsDisposed) + { + return; + } + + session.Send(response, rpcId); + } + + try + { + await Run(tEntity, tRouteRequest, response, Reply); + } + catch (Exception e) + { + if (entity is not Scene scene) + { + scene = entity.Scene; + } + + Log.Error($"SceneConfigId:{session.Scene.SceneConfigId} ProcessConfigId:{scene.Process.Id} SceneType:{scene.SceneType} EntityId {tEntity.Id} : Error {e}"); + response.ErrorCode = InnerErrorCode.ErrRpcFail; + } + finally + { + Reply(); + } + } + + /// + /// 运行处理漫游RPC路由请求。 + /// + /// 终点实体。 + /// 漫游RPC路由请求。 + /// 漫游RPC路由响应。 + /// 回复操作。 + protected abstract FTask Run(TEntity terminus, TRouteRequest request, TRouteResponse response, Action reply); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Dispatcher/MessageDispatcherComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Dispatcher/MessageDispatcherComponent.cs new file mode 100644 index 0000000..0a24770 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Dispatcher/MessageDispatcherComponent.cs @@ -0,0 +1,426 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Fantasy.Assembly; +using Fantasy.Async; +using Fantasy.DataStructure.Collection; +using Fantasy.DataStructure.Dictionary; +using Fantasy.Entitas; +using Fantasy.InnerMessage; +using Fantasy.Network; +#pragma warning disable CS8604 // Possible null reference argument. + +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +namespace Fantasy.Network.Interface +{ + /// + /// 用于存储消息处理器的信息,包括类型和对象实例。 + /// + /// 消息处理器的类型 + internal sealed class HandlerInfo + { + /// + /// 获取或设置消息处理器对象。 + /// + public T Obj; + /// + /// 获取或设置消息处理器的类型。 + /// + public Type Type; + } + + /// + /// 网络消息分发组件。 + /// + public sealed class MessageDispatcherComponent : Entity, IAssembly + { + public long AssemblyIdentity { get; set; } + private readonly Dictionary _responseTypes = new Dictionary(); + private readonly DoubleMapDictionary _networkProtocols = new DoubleMapDictionary(); + private readonly Dictionary _messageHandlers = new Dictionary(); + private readonly OneToManyList _assemblyResponseTypes = new OneToManyList(); + private readonly OneToManyList _assemblyNetworkProtocols = new OneToManyList(); + private readonly OneToManyList> _assemblyMessageHandlers = new OneToManyList>(); +#if FANTASY_UNITY + private readonly Dictionary _messageDelegateHandlers = new Dictionary(); +#endif +#if FANTASY_NET + private readonly Dictionary _customRouteMap = new Dictionary(); + private readonly OneToManyList _assemblyCustomRouteMap = new OneToManyList(); + private readonly Dictionary _routeMessageHandlers = new Dictionary(); + private readonly OneToManyList> _assemblyRouteMessageHandlers = new OneToManyList>(); +#endif + private CoroutineLock _receiveRouteMessageLock; + + #region Initialize + + internal async FTask Initialize() + { + _receiveRouteMessageLock = Scene.CoroutineLockComponent.Create(GetType().TypeHandle.Value.ToInt64()); + await AssemblySystem.Register(this); + return this; + } + + public async FTask Load(long assemblyIdentity) + { + var tcs = FTask.Create(false); + Scene?.ThreadSynchronizationContext.Post(() => + { + LoadInner(assemblyIdentity); + tcs.SetResult(); + }); + await tcs; + } + + private void LoadInner(long assemblyIdentity) + { + // 遍历所有实现了IMessage接口的类型,获取OpCode并添加到_networkProtocols字典中 + foreach (var type in AssemblySystem.ForEach(assemblyIdentity, typeof(IMessage))) + { + var obj = (IMessage) Activator.CreateInstance(type); + var opCode = obj.OpCode(); + + _networkProtocols.Add(opCode, type); + + var responseType = type.GetProperty("ResponseType"); + + // 如果类型具有ResponseType属性,将其添加到_responseTypes字典中 + if (responseType != null) + { + _responseTypes.Add(type, responseType.PropertyType); + _assemblyResponseTypes.Add(assemblyIdentity, type); + } + + _assemblyNetworkProtocols.Add(assemblyIdentity, opCode); + } + + // 遍历所有实现了IMessageHandler接口的类型,创建实例并添加到_messageHandlers字典中 + foreach (var type in AssemblySystem.ForEach(assemblyIdentity, typeof(IMessageHandler))) + { + var obj = (IMessageHandler) Activator.CreateInstance(type); + + if (obj == null) + { + throw new Exception($"message handle {type.Name} is null"); + } + + var key = obj.Type(); + _messageHandlers.Add(key, obj); + _assemblyMessageHandlers.Add(assemblyIdentity, new HandlerInfo() + { + Obj = obj, Type = key + }); + } + + // 如果编译符号FANTASY_NET存在,遍历所有实现了IRouteMessageHandler接口的类型,创建实例并添加到_routeMessageHandlers字典中 +#if FANTASY_NET + foreach (var type in AssemblySystem.ForEach(assemblyIdentity, typeof(IRouteMessageHandler))) + { + var obj = (IRouteMessageHandler) Activator.CreateInstance(type); + + if (obj == null) + { + throw new Exception($"message handle {type.Name} is null"); + } + + var key = obj.Type(); + _routeMessageHandlers.Add(key, obj); + _assemblyRouteMessageHandlers.Add(assemblyIdentity, new HandlerInfo() + { + Obj = obj, Type = key + }); + } + + foreach (var type in AssemblySystem.ForEach(assemblyIdentity, typeof(ICustomRoute))) + { + var obj = (ICustomRoute) Activator.CreateInstance(type); + + if (obj == null) + { + throw new Exception($"message handle {type.Name} is null"); + } + + var opCode = obj.OpCode(); + _customRouteMap[opCode] = obj.RouteType; + _assemblyCustomRouteMap.Add(assemblyIdentity, opCode); + } +#endif + } + + public async FTask ReLoad(long assemblyIdentity) + { + var tcs = FTask.Create(false); + Scene?.ThreadSynchronizationContext.Post(() => + { + OnUnLoadInner(assemblyIdentity); + LoadInner(assemblyIdentity); + tcs.SetResult(); + }); + await tcs; + } + + public async FTask OnUnLoad(long assemblyIdentity) + { + var tcs = FTask.Create(false); + Scene?.ThreadSynchronizationContext.Post(() => + { + OnUnLoadInner(assemblyIdentity); + tcs.SetResult(); + }); + await tcs; + } + + private void OnUnLoadInner(long assemblyIdentity) + { + // 移除程序集对应的ResponseType类型和OpCode信息 + if (_assemblyResponseTypes.TryGetValue(assemblyIdentity, out var removeResponseTypes)) + { + foreach (var removeResponseType in removeResponseTypes) + { + _responseTypes.Remove(removeResponseType); + } + + _assemblyResponseTypes.RemoveByKey(assemblyIdentity); + } + + if (_assemblyNetworkProtocols.TryGetValue(assemblyIdentity, out var removeNetworkProtocols)) + { + foreach (var removeNetworkProtocol in removeNetworkProtocols) + { + _networkProtocols.RemoveByKey(removeNetworkProtocol); + } + + _assemblyNetworkProtocols.RemoveByKey(assemblyIdentity); + } + + // 移除程序集对应的消息处理器信息 + if (_assemblyMessageHandlers.TryGetValue(assemblyIdentity, out var removeMessageHandlers)) + { + foreach (var removeMessageHandler in removeMessageHandlers) + { + _messageHandlers.Remove(removeMessageHandler.Type); + } + + _assemblyMessageHandlers.RemoveByKey(assemblyIdentity); + } + + // 如果编译符号FANTASY_NET存在,移除程序集对应的路由消息处理器信息 +#if FANTASY_NET + if (_assemblyRouteMessageHandlers.TryGetValue(assemblyIdentity, out var removeRouteMessageHandlers)) + { + foreach (var removeRouteMessageHandler in removeRouteMessageHandlers) + { + _routeMessageHandlers.Remove(removeRouteMessageHandler.Type); + } + + _assemblyRouteMessageHandlers.RemoveByKey(assemblyIdentity); + } + + if (_assemblyCustomRouteMap.TryGetValue(assemblyIdentity, out var removeCustomRouteMap)) + { + foreach (var removeCustom in removeCustomRouteMap) + { + _customRouteMap.Remove(removeCustom); + } + + _assemblyCustomRouteMap.RemoveByKey(assemblyIdentity); + } +#endif + } + +#if FANTASY_UNITY + /// + /// 手动注册一个消息处理器。 + /// + /// + /// + public void RegisterHandler(MessageDelegate @delegate) where T : IMessage + { + var type = typeof(T); + + if (!_messageDelegateHandlers.TryGetValue(type, out var messageDelegate)) + { + messageDelegate = new MessageDelegateHandler(); + _messageDelegateHandlers.Add(type,messageDelegate); + } + + messageDelegate.Register(@delegate); + } + + /// + /// 手动卸载一个消息处理器,必须是通过RegisterHandler方法注册的消息处理器。 + /// + /// + /// + public void UnRegisterHandler(MessageDelegate @delegate) where T : IMessage + { + var type = typeof(T); + + if (!_messageDelegateHandlers.TryGetValue(type, out var messageDelegate)) + { + return; + } + + if (messageDelegate.UnRegister(@delegate) != 0) + { + return; + } + + _messageDelegateHandlers.Remove(type); + } +#endif + #endregion + + /// + /// 处理普通消息,将消息分发给相应的消息处理器。 + /// + /// 会话对象 + /// 消息类型 + /// 消息对象 + /// RPC标识 + /// 协议码 + public void MessageHandler(Session session, Type type, object message, uint rpcId, uint protocolCode) + { +#if FANTASY_UNITY + if(_messageDelegateHandlers.TryGetValue(type,out var messageDelegateHandler)) + { + messageDelegateHandler.Handle(session, message); + return; + } +#endif + if (!_messageHandlers.TryGetValue(type, out var messageHandler)) + { + Log.Warning($"Scene:{session.Scene.Id} Found Unhandled Message: {message.GetType()}"); + return; + } + + // 调用消息处理器的Handle方法并启动协程执行处理逻辑 + messageHandler.Handle(session, rpcId, protocolCode, message).Coroutine(); + } + + // 如果编译符号FANTASY_NET存在,定义处理路由消息的方法 +#if FANTASY_NET + /// + /// 处理路由消息,将消息分发给相应的路由消息处理器。 + /// + /// 会话对象 + /// 消息类型 + /// 实体对象 + /// 消息对象 + /// RPC标识 + public async FTask RouteMessageHandler(Session session, Type type, Entity entity, object message, uint rpcId) + { + if (!_routeMessageHandlers.TryGetValue(type, out var routeMessageHandler)) + { + Log.Warning($"Scene:{session.Scene.Id} Found Unhandled RouteMessage: {message.GetType()}"); + + if (message is IRouteRequest request) + { + FailRouteResponse(session, request.GetType(), InnerErrorCode.ErrEntityNotFound, rpcId); + } + + return; + } + + var runtimeId = entity.RuntimeId; + var sessionRuntimeId = session.RuntimeId; + + if (entity is Scene) + { + // 如果是Scene的话、就不要加锁了、如果加锁很一不小心就可能会造成死锁 + await routeMessageHandler.Handle(session, entity, rpcId, message); + return; + } + + // 使用协程锁来确保多线程安全 + using (await _receiveRouteMessageLock.Wait(runtimeId)) + { + if (sessionRuntimeId != session.RuntimeId) + { + return; + } + + if (runtimeId != entity.RuntimeId) + { + if (message is IRouteRequest request) + { + FailRouteResponse(session, request.GetType(), InnerErrorCode.ErrEntityNotFound, rpcId); + } + + return; + } + + await routeMessageHandler.Handle(session, entity, rpcId, message); + } + } + + internal bool GetCustomRouteType(long protocolCode, out int routeType) + { + return _customRouteMap.TryGetValue(protocolCode, out routeType); + } +#endif + internal void FailRouteResponse(Session session, Type requestType, uint error, uint rpcId) + { + var response = CreateRouteResponse(requestType, error); + session.Send(response, rpcId); + } + + internal IResponse CreateResponse(Type requestType, uint error) + { + IResponse response; + + if (_responseTypes.TryGetValue(requestType, out var responseType)) + { + response = (IResponse) Activator.CreateInstance(responseType); + } + else + { + response = new Response(); + } + + response.ErrorCode = error; + return response; + } + + internal IRouteResponse CreateRouteResponse(Type requestType, uint error) + { + IRouteResponse response; + + if (_responseTypes.TryGetValue(requestType, out var responseType)) + { + response = (IRouteResponse) Activator.CreateInstance(responseType); + } + else + { + response = new RouteResponse(); + } + + response.ErrorCode = error; + return response; + } + + /// + /// 根据消息类型获取对应的OpCode。 + /// + /// 消息类型 + /// 消息对应的OpCode + public uint GetOpCode(Type type) + { + return _networkProtocols.GetKeyByValue(type); + } + + /// + /// 根据OpCode获取对应的消息类型。 + /// + /// OpCode + /// OpCode对应的消息类型 + public Type GetOpCodeType(uint code) + { + return _networkProtocols.GetValueByKey(code); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/IMessage.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/IMessage.cs new file mode 100644 index 0000000..aea7d08 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/IMessage.cs @@ -0,0 +1,95 @@ +using System; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Network.Interface +{ + /// + /// 表示通用消息接口。 + /// + public interface IMessage + { + /// + /// 获取消息的操作代码。 + /// + /// 操作代码。 + uint OpCode(); + } + + /// + /// 表示请求消息接口。 + /// + public interface IRequest : IMessage + { + + } + + /// + /// 表示响应消息接口。 + /// + public interface IResponse : IMessage + { + /// + /// 获取或设置错误代码。 + /// + uint ErrorCode { get; set; } + } + // 普通路由消息 + /// + /// 表示普通路由消息的接口,继承自请求接口。 + /// + public interface IRouteMessage : IRequest + { + + } + + /// + /// 普通路由请求接口,继承自普通路由消息接口。 + /// + public interface IRouteRequest : IRouteMessage { } + /// + /// 普通路由响应接口,继承自响应接口。 + /// + public interface IRouteResponse : IResponse { } + // 可寻址协议 + /// + /// 表示可寻址协议的普通路由消息接口,继承自普通路由消息接口。 + /// + public interface IAddressableRouteMessage : IRouteMessage { } + /// + /// 可寻址协议的普通路由请求接口,继承自可寻址协议的普通路由消息接口。 + /// + public interface IAddressableRouteRequest : IRouteRequest { } + /// + /// 可寻址协议的普通路由响应接口,继承自普通路由响应接口。 + /// + public interface IAddressableRouteResponse : IRouteResponse { } + // 自定义Route协议 + public interface ICustomRoute : IMessage + { + int RouteType { get; } + } + /// + /// 表示自定义Route协议的普通路由消息接口,继承自普通路由消息接口。 + /// + public interface ICustomRouteMessage : IRouteMessage, ICustomRoute { } + /// + /// 自定义Route协议的普通路由请求接口,继承自自定义Route协议的普通路由消息接口。 + /// + public interface ICustomRouteRequest : IRouteRequest, ICustomRoute { } + /// + /// 自定义Route协议的普通路由响应接口,继承自普通路由响应接口。 + /// + public interface ICustomRouteResponse : IRouteResponse { } + /// + /// 表示漫游协议的普通路由消息接口,继承自普通路由消息接口。 + /// + public interface IRoamingMessage : IRouteMessage, ICustomRoute { } + /// + /// 漫游协议的普通路由请求接口,继承自自定义Route协议的普通路由消息接口。 + /// + public interface IRoamingRequest : IRoamingMessage { } + /// + /// 漫游协议的普通路由响应接口,继承自普通路由响应接口。 + /// + public interface IRoamingResponse : IRouteResponse { } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/InnerMessage.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/InnerMessage.cs new file mode 100644 index 0000000..643c92b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/InnerMessage.cs @@ -0,0 +1,319 @@ +using Fantasy.Network.Interface; +using Fantasy.Serialize; +using MongoDB.Bson.Serialization.Attributes; +using ProtoBuf; +#if FANTASY_NET +using Fantasy.Network.Roaming; +#endif +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +// ReSharper disable InconsistentNaming +// ReSharper disable PropertyCanBeMadeInitOnly.Global +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.InnerMessage +{ + [ProtoContract] + public sealed partial class BenchmarkMessage : AMessage, IMessage + { + public uint OpCode() + { + return Fantasy.Network.OpCode.BenchmarkMessage; + } + } + [ProtoContract] + public partial class BenchmarkRequest : AMessage, IRequest + { + public uint OpCode() + { + return Fantasy.Network.OpCode.BenchmarkRequest; + } + [ProtoIgnore] + public BenchmarkResponse ResponseType { get; set; } + [ProtoMember(1)] + public long RpcId { get; set; } + } + + [ProtoContract] + public partial class BenchmarkResponse : AMessage, IResponse + { + public uint OpCode() + { + return Fantasy.Network.OpCode.BenchmarkResponse; + } + [ProtoMember(1)] + public long RpcId { get; set; } + [ProtoMember(2)] + public uint ErrorCode { get; set; } + } + public sealed partial class Response : AMessage, IResponse + { + public uint OpCode() + { + return Fantasy.Network.OpCode.DefaultResponse; + } + [ProtoMember(1)] + public long RpcId { get; set; } + [ProtoMember(2)] + public uint ErrorCode { get; set; } + } + [ProtoContract] + public sealed partial class RouteResponse : AMessage, IRouteResponse + { + public uint OpCode() + { + return Fantasy.Network.OpCode.DefaultRouteResponse; + } + [ProtoMember(1)] + public long RpcId { get; set; } + [ProtoMember(2)] + public uint ErrorCode { get; set; } + } + [ProtoContract] + public partial class PingRequest : AMessage, IRequest + { + public uint OpCode() + { + return Fantasy.Network.OpCode.PingRequest; + } + [ProtoIgnore] + public PingResponse ResponseType { get; set; } + [ProtoMember(1)] + public long RpcId { get; set; } + } + + [ProtoContract] + public partial class PingResponse : AMessage, IResponse + { + public uint OpCode() + { + return Fantasy.Network.OpCode.PingResponse; + } + [ProtoMember(1)] + public long RpcId { get; set; } + [ProtoMember(2)] + public uint ErrorCode { get; set; } + [ProtoMember(3)] + public long Now; + } + [ProtoContract] + public partial class I_AddressableAdd_Request : AMessage, IRouteRequest + { + [ProtoIgnore] + public I_AddressableAdd_Response ResponseType { get; set; } + public uint OpCode() { return Fantasy.Network.OpCode.AddressableAddRequest; } + public long RouteTypeOpCode() { return 1; } + [ProtoMember(1)] + public long AddressableId { get; set; } + [ProtoMember(2)] + public long RouteId { get; set; } + [ProtoMember(3)] + public bool IsLock { get; set; } + } + [ProtoContract] + public partial class I_AddressableAdd_Response : AMessage, IRouteResponse + { + public uint OpCode() { return Fantasy.Network.OpCode.AddressableAddResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } + [ProtoContract] + public partial class I_AddressableGet_Request : AMessage, IRouteRequest + { + [ProtoIgnore] + public I_AddressableGet_Response ResponseType { get; set; } + public uint OpCode() { return Fantasy.Network.OpCode.AddressableGetRequest; } + public long RouteTypeOpCode() { return 1; } + [ProtoMember(1)] + public long AddressableId { get; set; } + } + [ProtoContract] + public partial class I_AddressableGet_Response : AMessage, IRouteResponse + { + public uint OpCode() { return Fantasy.Network.OpCode.AddressableGetResponse; } + [ProtoMember(2)] + public uint ErrorCode { get; set; } + [ProtoMember(1)] + public long RouteId { get; set; } + } + [ProtoContract] + public partial class I_AddressableRemove_Request : AMessage, IRouteRequest + { + [ProtoIgnore] + public I_AddressableRemove_Response ResponseType { get; set; } + public uint OpCode() { return Fantasy.Network.OpCode.AddressableRemoveRequest; } + public long RouteTypeOpCode() { return 1; } + [ProtoMember(1)] + public long AddressableId { get; set; } + } + [ProtoContract] + public partial class I_AddressableRemove_Response : AMessage, IRouteResponse + { + public uint OpCode() { return Fantasy.Network.OpCode.AddressableRemoveResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } + [ProtoContract] + public partial class I_AddressableLock_Request : AMessage, IRouteRequest + { + [ProtoIgnore] + public I_AddressableLock_Response ResponseType { get; set; } + public uint OpCode() { return Fantasy.Network.OpCode.AddressableLockRequest; } + public long RouteTypeOpCode() { return 1; } + [ProtoMember(1)] + public long AddressableId { get; set; } + } + [ProtoContract] + public partial class I_AddressableLock_Response : AMessage, IRouteResponse + { + public uint OpCode() { return Fantasy.Network.OpCode.AddressableLockResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } + [ProtoContract] + public partial class I_AddressableUnLock_Request : AMessage, IRouteRequest + { + [ProtoIgnore] + public I_AddressableUnLock_Response ResponseType { get; set; } + public uint OpCode() { return Fantasy.Network.OpCode.AddressableUnLockRequest; } + public long RouteTypeOpCode() { return 1; } + [ProtoMember(1)] + public long AddressableId { get; set; } + [ProtoMember(2)] + public long RouteId { get; set; } + [ProtoMember(3)] + public string Source { get; set; } + } + [ProtoContract] + public partial class I_AddressableUnLock_Response : AMessage, IRouteResponse + { + public uint OpCode() { return Fantasy.Network.OpCode.AddressableUnLockResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } +#if FANTASY_NET + [ProtoContract] + public sealed class I_LinkRoamingRequest : AMessage, IRouteRequest + { + [ProtoIgnore] + public I_LinkRoamingResponse ResponseType { get; set; } + public uint OpCode() { return Fantasy.Network.OpCode.LinkRoamingRequest; } + public long RouteTypeOpCode() { return 1; } + [ProtoMember(1)] + public long RoamingId { get; set; } + [ProtoMember(2)] + public int RoamingType { get; set; } + [ProtoMember(3)] + public long ForwardSessionRouteId { get; set; } + [ProtoMember(4)] + public long SceneRouteId { get; set; } + } + [ProtoContract] + public sealed class I_LinkRoamingResponse : AMessage, IRouteResponse + { + public uint OpCode() { return Fantasy.Network.OpCode.LinkRoamingResponse; } + [ProtoMember(1)] + public long TerminusId { get; set; } + [ProtoMember(2)] + public uint ErrorCode { get; set; } + } + [ProtoContract] + public sealed class I_UnLinkRoamingRequest : AMessage, IRouteRequest + { + [ProtoIgnore] + public I_UnLinkRoamingResponse ResponseType { get; set; } + public uint OpCode() { return Fantasy.Network.OpCode.UnLinkRoamingRequest; } + public long RouteTypeOpCode() { return 1; } + [ProtoMember(1)] + public long RoamingId { get; set; } + [ProtoMember(2)] + public bool DisposeRoaming { get; set; } + } + [ProtoContract] + public sealed class I_UnLinkRoamingResponse : AMessage, IRouteResponse + { + public uint OpCode() { return Fantasy.Network.OpCode.UnLinkRoamingResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } + [ProtoContract] + public partial class I_LockTerminusIdRequest : AMessage, IRouteRequest + { + [ProtoIgnore] + public I_LockTerminusIdResponse ResponseType { get; set; } + public uint OpCode() { return Fantasy.Network.OpCode.LockTerminusIdRequest; } + [ProtoMember(1)] + public long SessionRuntimeId { get; set; } + [ProtoMember(2)] + public int RoamingType { get; set; } + } + [ProtoContract] + public partial class I_LockTerminusIdResponse : AMessage, IRouteResponse + { + public uint OpCode() { return Fantasy.Network.OpCode.LockTerminusIdResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } + [ProtoContract] + public sealed class I_UnLockTerminusIdRequest : AMessage, IRouteRequest + { + [ProtoIgnore] + public I_UnLockTerminusIdResponse ResponseType { get; set; } + public uint OpCode() { return Fantasy.Network.OpCode.UnLockTerminusIdRequest; } + public long RouteTypeOpCode() { return 1; } + [ProtoMember(1)] + public long SessionRuntimeId { get; set; } + [ProtoMember(2)] + public int RoamingType { get; set; } + [ProtoMember(3)] + public long TerminusId { get; set; } + [ProtoMember(4)] + public long TargetSceneRouteId { get; set; } + } + [ProtoContract] + public sealed class I_UnLockTerminusIdResponse : AMessage, IRouteResponse + { + public uint OpCode() { return Fantasy.Network.OpCode.UnLockTerminusIdResponse; } + [ProtoMember(1)] + public uint ErrorCode { get; set; } + } + /// + /// 漫游传送终端的请求 + /// + public partial class I_TransferTerminusRequest : AMessage, IRouteRequest + { + [BsonIgnore] + public I_TransferTerminusResponse ResponseType { get; set; } + public uint OpCode() { return Fantasy.Network.OpCode.TransferTerminusRequest; } + public Terminus Terminus { get; set; } + } + public partial class I_TransferTerminusResponse : AMessage, IRouteResponse + { + public uint OpCode() { return Fantasy.Network.OpCode.TransferTerminusResponse; } + public uint ErrorCode { get; set; } + } + /// + /// 用于服务器之间获取漫游的TerminusId。 + /// + [ProtoContract] + public partial class I_GetTerminusIdRequest : AMessage, IRouteRequest + { + [ProtoIgnore] + public I_GetTerminusIdResponse ResponseType { get; set; } + public uint OpCode() { return Fantasy.Network.OpCode.GetTerminusIdRequest; } + [ProtoMember(1)] + public int RoamingType { get; set; } + [ProtoMember(2)] + public long SessionRuntimeId { get; set; } + } + [ProtoContract] + public partial class I_GetTerminusIdResponse : AMessage, IRouteResponse + { + public uint OpCode() { return Fantasy.Network.OpCode.GetTerminusIdResponse; } + [ProtoMember(1)] + public long TerminusId { get; set; } + [ProtoMember(2)] + public uint ErrorCode { get; set; } + } +#endif +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/BufferPacketParser.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/BufferPacketParser.cs new file mode 100644 index 0000000..e4d1540 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/BufferPacketParser.cs @@ -0,0 +1,386 @@ +using System; +using System.Buffers; +using System.IO; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Fantasy.Helper; +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.PacketParser.Interface; +using Fantasy.Serialize; + +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +namespace Fantasy.PacketParser +{ + /// + /// BufferPacketParser消息格式化器抽象类 + /// 这个不会用在TCP协议中、因此不用考虑分包和粘包的问题。 + /// 目前这个只会用在KCP协议中、因为KCP出来的就是一个完整的包、所以可以一次性全部解析出来。 + /// 如果是用在其他协议上可能会出现问题。 + /// + public abstract class BufferPacketParser : APacketParser + { + protected uint RpcId; + protected long RouteId; + protected uint ProtocolCode; + protected int MessagePacketLength; + public override void Dispose() + { + RpcId = 0; + RouteId = 0; + ProtocolCode = 0; + MessagePacketLength = 0; + base.Dispose(); + } + /// + /// 解包方法 + /// + /// buffer + /// count + /// packInfo + /// + public abstract bool UnPack(byte[] buffer, ref int count, out APackInfo packInfo); + } +#if FANTASY_NET + /// + /// 服务器之间专用的BufferPacketParser消息格式化器 + /// + public sealed class InnerBufferPacketParser : BufferPacketParser + { + /// + /// + /// + /// + /// + /// + /// + /// + public override unsafe bool UnPack(byte[] buffer, ref int count, out APackInfo packInfo) + { + packInfo = null; + + if (buffer.Length < count) + { + throw new ScanException($"The buffer length is less than the specified count. buffer.Length={buffer.Length} count={count}"); + } + + if (count < Packet.InnerPacketHeadLength) + { + // 如果内存资源中的数据长度小于内部消息头的长度,无法解析 + return false; + } + + fixed (byte* bufferPtr = buffer) + { + MessagePacketLength = *(int*)bufferPtr; + + if (MessagePacketLength > Packet.PacketBodyMaxLength || count < MessagePacketLength) + { + // 检查消息体长度是否超出限制 + throw new ScanException($"The received information exceeds the maximum limit = {MessagePacketLength}"); + } + + ProtocolCode = *(uint*)(bufferPtr + Packet.PacketLength); + RpcId = *(uint*)(bufferPtr + Packet.InnerPacketRpcIdLocation); + RouteId = *(long*)(bufferPtr + Packet.InnerPacketRouteRouteIdLocation); + } + + packInfo = InnerPackInfo.Create(Network); + packInfo.RpcId = RpcId; + packInfo.RouteId = RouteId; + packInfo.ProtocolCode = ProtocolCode; + packInfo.RentMemoryStream(MemoryStreamBufferSource.UnPack, count).Write(buffer, 0, count); + return true; + } + + public override MemoryStreamBuffer Pack(ref uint rpcId, ref long routeId, MemoryStreamBuffer memoryStream, IMessage message) + { + return memoryStream == null ? Pack(ref rpcId, ref routeId, message) : Pack(ref rpcId, ref routeId, memoryStream); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private unsafe MemoryStreamBuffer Pack(ref uint rpcId, ref long routeId, MemoryStreamBuffer memoryStream) + { + fixed (byte* bufferPtr = memoryStream.GetBuffer()) + { + *(uint*)(bufferPtr + Packet.InnerPacketRpcIdLocation) = rpcId; + *(long*)(bufferPtr + Packet.InnerPacketRouteRouteIdLocation) = routeId; + } + + return memoryStream; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private unsafe MemoryStreamBuffer Pack(ref uint rpcId, ref long routeId, IMessage message) + { + var memoryStreamLength = 0; + var messageType = message.GetType(); + var memoryStream = Network.MemoryStreamBufferPool.RentMemoryStream(MemoryStreamBufferSource.Pack); + OpCodeIdStruct opCodeIdStruct = message.OpCode(); + memoryStream.Seek(Packet.InnerPacketHeadLength, SeekOrigin.Begin); + + if (SerializerManager.TryGetSerializer(opCodeIdStruct.OpCodeProtocolType, out var serializer)) + { + serializer.Serialize(messageType, message, memoryStream); + memoryStreamLength = (int)memoryStream.Position; + } + else + { + Log.Error($"type:{messageType} Does not support processing protocol"); + } + + var opCode = Scene.MessageDispatcherComponent.GetOpCode(messageType); + var packetBodyCount = memoryStreamLength - Packet.InnerPacketHeadLength; + + if (packetBodyCount == 0) + { + // protoBuf做了一个优化、就是当序列化的对象里的属性和字段都为默认值的时候就不会序列化任何东西。 + // 为了TCP的分包和粘包、需要判定下是当前包数据不完整还是本应该如此、所以用-1代表。 + packetBodyCount = -1; + } + + if (packetBodyCount > Packet.PacketBodyMaxLength) + { + // 检查消息体长度是否超出限制 + throw new Exception($"Message content exceeds {Packet.PacketBodyMaxLength} bytes"); + } + + fixed (byte* bufferPtr = memoryStream.GetBuffer()) + { + *(int*)bufferPtr = packetBodyCount; + *(uint*)(bufferPtr + Packet.PacketLength) = opCode; + *(uint*)(bufferPtr + Packet.InnerPacketRpcIdLocation) = rpcId; + *(long*)(bufferPtr + Packet.InnerPacketRouteRouteIdLocation) = routeId; + } + + return memoryStream; + } + } +#endif + /// + /// 客户端和服务器之间专用的BufferPacketParser消息格式化器 + /// + public sealed class OuterBufferPacketParser : BufferPacketParser + { + /// + /// + /// + /// + /// + /// + /// + /// + public override unsafe bool UnPack(byte[] buffer, ref int count, out APackInfo packInfo) + { + packInfo = null; + + if (buffer.Length < count) + { + throw new ScanException($"The buffer length is less than the specified count. buffer.Length={buffer.Length} count={count}"); + } + + if (count < Packet.OuterPacketHeadLength) + { + // 如果内存资源中的数据长度小于内部消息头的长度,无法解析 + return false; + } + + fixed (byte* bufferPtr = buffer) + { + MessagePacketLength = *(int*)bufferPtr; + + if (MessagePacketLength > Packet.PacketBodyMaxLength || count < MessagePacketLength) + { + // 检查消息体长度是否超出限制 + throw new ScanException($"The received information exceeds the maximum limit = {MessagePacketLength}"); + } + + ProtocolCode = *(uint*)(bufferPtr + Packet.PacketLength); + RpcId = *(uint*)(bufferPtr + Packet.OuterPacketRpcIdLocation); + } + + packInfo = OuterPackInfo.Create(Network); + packInfo.RpcId = RpcId; + packInfo.ProtocolCode = ProtocolCode; + packInfo.RentMemoryStream(MemoryStreamBufferSource.UnPack, count).Write(buffer, 0, count); + return true; + } + + public override MemoryStreamBuffer Pack(ref uint rpcId, ref long routeId, MemoryStreamBuffer memoryStream, IMessage message) + { + return memoryStream == null ? Pack(ref rpcId, message) : Pack(ref rpcId, memoryStream); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private unsafe MemoryStreamBuffer Pack(ref uint rpcId, MemoryStreamBuffer memoryStream) + { + fixed (byte* bufferPtr = memoryStream.GetBuffer()) + { + *(uint*)(bufferPtr + Packet.InnerPacketRpcIdLocation) = rpcId; + } + + return memoryStream; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private unsafe MemoryStreamBuffer Pack(ref uint rpcId, IMessage message) + { + var memoryStreamLength = 0; + var messageType = message.GetType(); + var memoryStream = Network.MemoryStreamBufferPool.RentMemoryStream(MemoryStreamBufferSource.Pack); + OpCodeIdStruct opCodeIdStruct = message.OpCode(); + memoryStream.Seek(Packet.OuterPacketHeadLength, SeekOrigin.Begin); + + if (SerializerManager.TryGetSerializer(opCodeIdStruct.OpCodeProtocolType, out var serializer)) + { + serializer.Serialize(messageType, message, memoryStream); + memoryStreamLength = (int)memoryStream.Position; + } + else + { + Log.Error($"type:{messageType} Does not support processing protocol"); + } + + var opCode = Scene.MessageDispatcherComponent.GetOpCode(messageType); + var packetBodyCount = memoryStreamLength - Packet.OuterPacketHeadLength; + + if (packetBodyCount == 0) + { + // protoBuf做了一个优化、就是当序列化的对象里的属性和字段都为默认值的时候就不会序列化任何东西。 + // 为了TCP的分包和粘包、需要判定下是当前包数据不完整还是本应该如此、所以用-1代表。 + packetBodyCount = -1; + } + + if (packetBodyCount > Packet.PacketBodyMaxLength) + { + // 检查消息体长度是否超出限制 + throw new Exception($"Message content exceeds {Packet.PacketBodyMaxLength} bytes"); + } + + fixed (byte* bufferPtr = memoryStream.GetBuffer()) + { + *(int*)bufferPtr = packetBodyCount; + *(uint*)(bufferPtr + Packet.PacketLength) = opCode; + *(uint*)(bufferPtr + Packet.OuterPacketRpcIdLocation) = rpcId; + } + + return memoryStream; + } + } + /// + /// Webgl专用的客户端和服务器之间专用的BufferPacketParser消息格式化器 + /// + public sealed class OuterWebglBufferPacketParser : BufferPacketParser + { + /// + /// + /// + /// + /// + /// + /// + /// + public override bool UnPack(byte[] buffer, ref int count, out APackInfo packInfo) + { + packInfo = null; + + if (buffer.Length < count) + { + throw new ScanException($"The buffer length is less than the specified count. buffer.Length={buffer.Length} count={count}"); + } + + if (count < Packet.OuterPacketHeadLength) + { + // 如果内存资源中的数据长度小于内部消息头的长度,无法解析 + return false; + } + + MessagePacketLength = BitConverter.ToInt32(buffer, 0); + + if (MessagePacketLength > Packet.PacketBodyMaxLength || count < MessagePacketLength) + { + // 检查消息体长度是否超出限制 + throw new ScanException($"The received information exceeds the maximum limit = {MessagePacketLength}"); + } + + ProtocolCode = BitConverter.ToUInt32(buffer, Packet.PacketLength); + RpcId = BitConverter.ToUInt32(buffer, Packet.OuterPacketRpcIdLocation); + + packInfo = OuterPackInfo.Create(Network); + packInfo.RpcId = RpcId; + packInfo.ProtocolCode = ProtocolCode; + packInfo.RentMemoryStream(MemoryStreamBufferSource.UnPack, count).Write(buffer, 0, count); + return true; + } + + public override MemoryStreamBuffer Pack(ref uint rpcId, ref long routeId, MemoryStreamBuffer memoryStream, IMessage message) + { + return memoryStream == null ? Pack(ref rpcId, message) : Pack(ref rpcId, memoryStream); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private MemoryStreamBuffer Pack(ref uint rpcId, MemoryStreamBuffer memoryStream) + { + var buffer = memoryStream.GetBuffer().AsSpan(); +#if FANTASY_NET + MemoryMarshal.Write(buffer.Slice(Packet.OuterPacketRpcIdLocation, sizeof(uint)), in rpcId); +#endif +#if FANTASY_UNITY + MemoryMarshal.Write(buffer.Slice(Packet.OuterPacketRpcIdLocation, sizeof(uint)), ref rpcId); +#endif + return memoryStream; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private MemoryStreamBuffer Pack(ref uint rpcId, IMessage message) + { + var memoryStreamLength = 0; + var messageType = message.GetType(); + var memoryStream = Network.MemoryStreamBufferPool.RentMemoryStream(MemoryStreamBufferSource.UnPack); + OpCodeIdStruct opCodeIdStruct = message.OpCode(); + memoryStream.Seek(Packet.OuterPacketHeadLength, SeekOrigin.Begin); + + if (SerializerManager.TryGetSerializer(opCodeIdStruct.OpCodeProtocolType, out var serializer)) + { + serializer.Serialize(messageType, message, memoryStream); + memoryStreamLength = (int)memoryStream.Position; + } + else + { + Log.Error($"type:{messageType} Does not support processing protocol"); + } + + var opCode = Scene.MessageDispatcherComponent.GetOpCode(messageType); + var packetBodyCount = memoryStreamLength - Packet.OuterPacketHeadLength; + + if (packetBodyCount == 0) + { + // protoBuf做了一个优化、就是当序列化的对象里的属性和字段都为默认值的时候就不会序列化任何东西。 + // 为了TCP的分包和粘包、需要判定下是当前包数据不完整还是本应该如此、所以用-1代表。 + packetBodyCount = -1; + } + + if (packetBodyCount > Packet.PacketBodyMaxLength) + { + // 检查消息体长度是否超出限制 + throw new Exception($"Message content exceeds {Packet.PacketBodyMaxLength} bytes"); + } + + var buffer = memoryStream.GetBuffer().AsSpan(); +#if FANTASY_NET + MemoryMarshal.Write(buffer, in packetBodyCount); + MemoryMarshal.Write(buffer.Slice(Packet.PacketLength, sizeof(uint)), in opCode); + MemoryMarshal.Write(buffer.Slice(Packet.OuterPacketRpcIdLocation, sizeof(uint)), in rpcId); +#endif +#if FANTASY_UNITY + MemoryMarshal.Write(buffer, ref packetBodyCount); + MemoryMarshal.Write(buffer.Slice(Packet.PacketLength, sizeof(uint)), ref opCode); + MemoryMarshal.Write(buffer.Slice(Packet.OuterPacketRpcIdLocation, sizeof(uint)), ref rpcId); +#endif + return memoryStream; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/CircularBufferPacketParser.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/CircularBufferPacketParser.cs new file mode 100644 index 0000000..24c368b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/CircularBufferPacketParser.cs @@ -0,0 +1,170 @@ +// using System.Runtime.CompilerServices; +// // ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +// #pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +// +// namespace Fantasy +// { +// // 这个对处理分包和粘包逻辑不完整、考虑现在没有任何地方使用了、就先不修改了。 +// // 后面用到了再修改、现在这个只是留做备份、万一以后用到了呢。 +// public abstract class CircularBufferPacketParser : APacketParser +// { +// protected uint RpcId; +// protected long RouteId; +// protected uint ProtocolCode; +// protected int MessagePacketLength; +// protected bool IsUnPackHead = true; +// protected readonly byte[] MessageHead = new byte[Packet.InnerPacketHeadLength]; +// public abstract bool UnPack(CircularBuffer buffer, out APackInfo packInfo); +// } +// +// #if FANTASY_NET +// public sealed class InnerCircularBufferPacketParser : CircularBufferPacketParser, IInnerPacketParser +// { +// public override bool UnPack(CircularBuffer buffer, out APackInfo packInfo) +// { +// packInfo = null; +// +// // 在对象没有被释放的情况下循环解析数据 +// while (!IsDisposed) +// { +// if (IsUnPackHead) +// { +// // 如果缓冲区中的数据长度小于内部消息头的长度,无法解析 +// if (buffer.Length < Packet.InnerPacketHeadLength) +// { +// return false; +// } +// +// // 从缓冲区中读取内部消息头的数据 +// _ = buffer.Read(MessageHead, 0, Packet.InnerPacketHeadLength); +// MessagePacketLength = BitConverter.ToInt32(MessageHead, 0); +// +// // 检查消息体长度是否超出限制 +// if (MessagePacketLength > Packet.PacketBodyMaxLength) +// { +// throw new ScanException( +// $"The received information exceeds the maximum limit = {MessagePacketLength}"); +// } +// +// // 解析协议编号、RPC ID 和 Route ID +// ProtocolCode = BitConverter.ToUInt32(MessageHead, Packet.PacketLength); +// RpcId = BitConverter.ToUInt32(MessageHead, Packet.InnerPacketRpcIdLocation); +// RouteId = BitConverter.ToInt64(MessageHead, Packet.InnerPacketRouteRouteIdLocation); +// IsUnPackHead = false; +// } +// +// try +// { +// // 如果缓冲区中的数据长度小于消息体的长度,无法解析 +// if (MessagePacketLength < 0 || buffer.Length < MessagePacketLength) +// { +// return false; +// } +// +// IsUnPackHead = true; +// packInfo = InnerPackInfo.Create(Network); +// var memoryStream = packInfo.RentMemoryStream(MessagePacketLength); +// memoryStream.SetLength(MessagePacketLength); +// buffer.Read(memoryStream, MessagePacketLength); +// packInfo.RpcId = RpcId; +// packInfo.RouteId = RouteId; +// packInfo.ProtocolCode = ProtocolCode; +// packInfo.MessagePacketLength = MessagePacketLength; +// return true; +// } +// catch (Exception e) +// { +// // 在发生异常时,释放 packInfo 并记录日志 +// packInfo?.Dispose(); +// Log.Error(e); +// return false; +// } +// } +// +// return false; +// } +// +// public override MemoryStream Pack(ref uint rpcId, ref long routeTypeOpCode, ref long routeId, +// MemoryStream memoryStream, object message) +// { +// return memoryStream == null +// ? Pack(ref rpcId, ref routeId, message) +// : Pack(ref rpcId, ref routeId, memoryStream); +// } +// +// [MethodImpl(MethodImplOptions.AggressiveInlining)] +// private unsafe MemoryStream Pack(ref uint rpcId, ref long routeId, MemoryStream memoryStream) +// { +// var buffer = memoryStream.GetBuffer(); +// +// fixed (byte* bufferPtr = buffer) +// { +// var rpcIdPtr = bufferPtr + Packet.InnerPacketRpcIdLocation; +// var routeIdPtr = bufferPtr + Packet.InnerPacketRouteRouteIdLocation; +// *(uint*)rpcIdPtr = rpcId; +// *(long*)routeIdPtr = routeId; +// } +// +// memoryStream.Seek(0, SeekOrigin.Begin); +// return memoryStream; +// } +// +// [MethodImpl(MethodImplOptions.AggressiveInlining)] +// private unsafe MemoryStream Pack(ref uint rpcId, ref long routeId, object message) +// { +// var memoryStream = Network.RentMemoryStream(); +// memoryStream.Seek(Packet.InnerPacketHeadLength, SeekOrigin.Begin); +// +// switch (message) +// { +// case IBsonMessage: +// { +// MongoHelper.SerializeTo(message, memoryStream); +// break; +// } +// default: +// { +// ProtoBuffHelper.ToStream(message, memoryStream); +// break; +// } +// } +// +// var opCode = Scene.MessageDispatcherComponent.GetOpCode(message.GetType()); +// var packetBodyCount = (int)(memoryStream.Position - Packet.InnerPacketHeadLength); +// +// if (packetBodyCount == 0) +// { +// // protoBuf做了一个优化、就是当序列化的对象里的属性和字段都为默认值的时候就不会序列化任何东西。 +// // 为了TCP的分包和粘包、需要判定下是当前包数据不完整还是本应该如此、所以用-1代表。 +// packetBodyCount = -1; +// } +// +// // 检查消息体长度是否超出限制 +// if (packetBodyCount > Packet.PacketBodyMaxLength) +// { +// throw new Exception($"Message content exceeds {Packet.PacketBodyMaxLength} bytes"); +// } +// +// var buffer = memoryStream.GetBuffer(); +// +// fixed (byte* bufferPtr = buffer) +// { +// var opCodePtr = bufferPtr + Packet.PacketLength; +// var rpcIdPtr = bufferPtr + Packet.InnerPacketRpcIdLocation; +// var routeIdPtr = bufferPtr + Packet.InnerPacketRouteRouteIdLocation; +// *(int*)bufferPtr = packetBodyCount; +// *(uint*)opCodePtr = opCode; +// *(uint*)rpcIdPtr = rpcId; +// *(long*)routeIdPtr = routeId; +// } +// +// memoryStream.Seek(0, SeekOrigin.Begin); +// return memoryStream; +// } +// } +// #endif +// } +// +// +// +// diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/OuterBufferPacketParserHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/OuterBufferPacketParserHelper.cs new file mode 100644 index 0000000..a6e66ca --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/OuterBufferPacketParserHelper.cs @@ -0,0 +1,72 @@ +#if FANTASY_NET +using System.Runtime.CompilerServices; +using Fantasy.Helper; +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.Serialize; + +namespace Fantasy.PacketParser +{ + /// + /// 打包Outer消息的帮助类 + /// + public static class OuterBufferPacketParserHelper + { + /// + /// 打包一个网络消息 + /// + /// scene + /// 如果是RPC消息需要传递一个rpcId + /// 打包的网络消息 + /// 序列化后流的长度 + /// 打包完成会返回一个MemoryStreamBuffer + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static unsafe MemoryStreamBuffer Pack(Scene scene, uint rpcId, IMessage message, out int memoryStreamLength) + { + memoryStreamLength = 0; + var messageType = message.GetType(); + var memoryStream = new MemoryStreamBuffer(); + memoryStream.MemoryStreamBufferSource = MemoryStreamBufferSource.Pack; + OpCodeIdStruct opCodeIdStruct = message.OpCode(); + memoryStream.Seek(Packet.OuterPacketHeadLength, SeekOrigin.Begin); + + if (SerializerManager.TryGetSerializer(opCodeIdStruct.OpCodeProtocolType, out var serializer)) + { + serializer.Serialize(messageType, message, memoryStream); + memoryStreamLength = (int)memoryStream.Position; + } + else + { + Log.Error($"type:{messageType} Does not support processing protocol"); + } + + var opCode = scene.MessageDispatcherComponent.GetOpCode(messageType); + var packetBodyCount = memoryStreamLength - Packet.OuterPacketHeadLength; + + if (packetBodyCount == 0) + { + // protoBuf做了一个优化、就是当序列化的对象里的属性和字段都为默认值的时候就不会序列化任何东西。 + // 为了TCP的分包和粘包、需要判定下是当前包数据不完整还是本应该如此、所以用-1代表。 + packetBodyCount = -1; + } + + if (packetBodyCount > Packet.PacketBodyMaxLength) + { + // 检查消息体长度是否超出限制 + throw new Exception($"Message content exceeds {Packet.PacketBodyMaxLength} bytes"); + } + + fixed (byte* bufferPtr = memoryStream.GetBuffer()) + { + *(int*)bufferPtr = packetBodyCount; + *(uint*)(bufferPtr + Packet.PacketLength) = opCode; + *(uint*)(bufferPtr + Packet.OuterPacketRpcIdLocation) = rpcId; + } + + return memoryStream; + } + } +} + +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/ReadOnlyMemoryPacketParser.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/ReadOnlyMemoryPacketParser.cs new file mode 100644 index 0000000..758ec17 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Handler/ReadOnlyMemoryPacketParser.cs @@ -0,0 +1,357 @@ +using System; +using System.IO; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Fantasy.Helper; +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.PacketParser.Interface; +using Fantasy.Serialize; + +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. + +namespace Fantasy.PacketParser +{ + internal abstract class ReadOnlyMemoryPacketParser : APacketParser + { + /// + /// 一个网络消息包 + /// + protected APackInfo PackInfo; + + protected int Offset; + protected int MessageHeadOffset; + protected int MessageBodyOffset; + protected int MessagePacketLength; + protected bool IsUnPackHead = true; + protected readonly byte[] MessageHead = new byte[20]; + public ReadOnlyMemoryPacketParser() { } + + public abstract bool UnPack(ref ReadOnlyMemory buffer, out APackInfo packInfo); + + public override void Dispose() + { + Offset = 0; + MessageHeadOffset = 0; + MessageBodyOffset = 0; + MessagePacketLength = 0; + IsUnPackHead = true; + PackInfo = null; + Array.Clear(MessageHead, 0, 20); + base.Dispose(); + } + } + +#if FANTASY_NET + internal sealed class InnerReadOnlyMemoryPacketParser : ReadOnlyMemoryPacketParser + { + public override unsafe bool UnPack(ref ReadOnlyMemory buffer, out APackInfo packInfo) + { + packInfo = null; + var readOnlySpan = buffer.Span; + var bufferLength = buffer.Length - Offset; + + if (bufferLength == 0) + { + // 没有剩余的数据需要处理、等待下一个包再处理。 + Offset = 0; + return false; + } + + if (IsUnPackHead) + { + fixed (byte* bufferPtr = readOnlySpan) + fixed (byte* messagePtr = MessageHead) + { + // 在当前buffer中拿到包头的数据 + var innerPacketHeadLength = Packet.InnerPacketHeadLength - MessageHeadOffset; + var copyLength = Math.Min(bufferLength, innerPacketHeadLength); + Buffer.MemoryCopy(bufferPtr + Offset, messagePtr + MessageHeadOffset, innerPacketHeadLength, copyLength); + Offset += copyLength; + MessageHeadOffset += copyLength; + // 检查是否有完整包头 + if (MessageHeadOffset == Packet.InnerPacketHeadLength) + { + // 通过指针直接读取协议编号、messagePacketLength protocolCode rpcId routeId + MessagePacketLength = *(int*)messagePtr; + // 检查消息体长度是否超出限制 + if (MessagePacketLength > Packet.PacketBodyMaxLength) + { + throw new ScanException($"The received information exceeds the maximum limit = {MessagePacketLength}"); + } + + PackInfo = InnerPackInfo.Create(Network); + var memoryStream = PackInfo.RentMemoryStream(MemoryStreamBufferSource.UnPack, Packet.InnerPacketHeadLength + MessagePacketLength); + PackInfo.RpcId = *(uint*)(messagePtr + Packet.InnerPacketRpcIdLocation); + PackInfo.ProtocolCode = *(uint*)(messagePtr + Packet.PacketLength); + PackInfo.RouteId = *(long*)(messagePtr + Packet.InnerPacketRouteRouteIdLocation); + memoryStream.Write(MessageHead); + IsUnPackHead = false; + bufferLength -= copyLength; + MessageHeadOffset = 0; + } + else + { + Offset = 0; + return false; + } + } + } + + if (MessagePacketLength == -1) + { + // protoBuf做了一个优化、就是当序列化的对象里的属性和字段都为默认值的时候就不会序列化任何东西。 + // 为了TCP的分包和粘包、需要判定下是当前包数据不完整还是本应该如此、所以用-1代表。 + packInfo = PackInfo; + PackInfo = null; + IsUnPackHead = true; + return true; + } + + if (bufferLength == 0) + { + // 没有剩余的数据需要处理、等待下一个包再处理。 + Offset = 0; + return false; + } + + // 处理包消息体 + var innerPacketBodyLength = MessagePacketLength - MessageBodyOffset; + var copyBodyLength = Math.Min(bufferLength, innerPacketBodyLength); + // 写入数据到消息体中 + PackInfo.MemoryStream.Write(readOnlySpan.Slice(Offset, copyBodyLength)); + Offset += copyBodyLength; + MessageBodyOffset += copyBodyLength; + // 检查是否是完整的消息体 + if (MessageBodyOffset == MessagePacketLength) + { + packInfo = PackInfo; + PackInfo = null; + IsUnPackHead = true; + MessageBodyOffset = 0; + return true; + } + Offset = 0; + return false; + } + + public override MemoryStreamBuffer Pack(ref uint rpcId, ref long routeId, MemoryStreamBuffer memoryStream, IMessage message) + { + return memoryStream == null ? Pack(ref rpcId, ref routeId, message) : Pack(ref rpcId, ref routeId, memoryStream); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private unsafe MemoryStreamBuffer Pack(ref uint rpcId, ref long routeId, MemoryStreamBuffer memoryStream) + { + fixed (byte* bufferPtr = memoryStream.GetBuffer()) + { + *(uint*)(bufferPtr + Packet.InnerPacketRpcIdLocation) = rpcId; + *(long*)(bufferPtr + Packet.InnerPacketRouteRouteIdLocation) = routeId; + } + + return memoryStream; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private unsafe MemoryStreamBuffer Pack(ref uint rpcId, ref long routeId, IMessage message) + { + var memoryStreamLength = 0; + var messageType = message.GetType(); + var memoryStream = Network.MemoryStreamBufferPool.RentMemoryStream(MemoryStreamBufferSource.Pack); + OpCodeIdStruct opCodeIdStruct = message.OpCode(); + memoryStream.Seek(Packet.InnerPacketHeadLength, SeekOrigin.Begin); + + if (SerializerManager.TryGetSerializer(opCodeIdStruct.OpCodeProtocolType, out var serializer)) + { + serializer.Serialize(messageType, message, memoryStream); + memoryStreamLength = (int)memoryStream.Position; + } + else + { + Log.Error($"type:{messageType} Does not support processing protocol"); + } + + var opCode = Scene.MessageDispatcherComponent.GetOpCode(messageType); + var packetBodyCount = memoryStreamLength - Packet.InnerPacketHeadLength; + + if (packetBodyCount == 0) + { + // protoBuf做了一个优化、就是当序列化的对象里的属性和字段都为默认值的时候就不会序列化任何东西。 + // 为了TCP的分包和粘包、需要判定下是当前包数据不完整还是本应该如此、所以用-1代表。 + // 其实可以不用设置-1、解包的时候判断如果是0也可以、但我仔细想了下,还是用-1代表更加清晰。 + packetBodyCount = -1; + } + + if (packetBodyCount > Packet.PacketBodyMaxLength) + { + // 检查消息体长度是否超出限制 + throw new Exception($"Message content exceeds {Packet.PacketBodyMaxLength} bytes"); + } + + fixed (byte* bufferPtr = memoryStream.GetBuffer()) + { + *(int*)bufferPtr = packetBodyCount; + *(uint*)(bufferPtr + Packet.PacketLength) = opCode; + *(uint*)(bufferPtr + Packet.InnerPacketRpcIdLocation) = rpcId; + *(long*)(bufferPtr + Packet.InnerPacketRouteRouteIdLocation) = routeId; + } + + return memoryStream; + } + } +#endif + internal sealed class OuterReadOnlyMemoryPacketParser : ReadOnlyMemoryPacketParser + { + public override unsafe bool UnPack(ref ReadOnlyMemory buffer, out APackInfo packInfo) + { + packInfo = null; + var readOnlySpan = buffer.Span; + var bufferLength = buffer.Length - Offset; + + if (bufferLength == 0) + { + // 没有剩余的数据需要处理、等待下一个包再处理。 + Offset = 0; + return false; + } + + if (IsUnPackHead) + { + fixed (byte* bufferPtr = readOnlySpan) + fixed (byte* messagePtr = MessageHead) + { + // 在当前buffer中拿到包头的数据 + var outerPacketHeadLength = Packet.OuterPacketHeadLength - MessageHeadOffset; + var copyLength = Math.Min(bufferLength, outerPacketHeadLength); + Buffer.MemoryCopy(bufferPtr + Offset, messagePtr + MessageHeadOffset, outerPacketHeadLength, copyLength); + Offset += copyLength; + MessageHeadOffset += copyLength; + // 检查是否有完整包头 + if (MessageHeadOffset == Packet.OuterPacketHeadLength) + { + // 通过指针直接读取协议编号、messagePacketLength protocolCode rpcId routeId + MessagePacketLength = *(int*)messagePtr; + // 检查消息体长度是否超出限制 + if (MessagePacketLength > Packet.PacketBodyMaxLength) + { + throw new ScanException($"The received information exceeds the maximum limit = {MessagePacketLength}"); + } + + PackInfo = OuterPackInfo.Create(Network); + PackInfo.ProtocolCode = *(uint*)(messagePtr + Packet.PacketLength); + PackInfo.RpcId = *(uint*)(messagePtr + Packet.OuterPacketRpcIdLocation); + var memoryStream = PackInfo.RentMemoryStream(MemoryStreamBufferSource.UnPack, Packet.OuterPacketHeadLength + MessagePacketLength); + memoryStream.Write(MessageHead); + IsUnPackHead = false; + bufferLength -= copyLength; + MessageHeadOffset = 0; + } + else + { + Offset = 0; + return false; + } + } + } + + if (MessagePacketLength == -1) + { + // protoBuf做了一个优化、就是当序列化的对象里的属性和字段都为默认值的时候就不会序列化任何东西。 + // 为了TCP的分包和粘包、需要判定下是当前包数据不完整还是本应该如此、所以用-1代表。 + packInfo = PackInfo; + PackInfo = null; + IsUnPackHead = true; + return true; + } + + if (bufferLength == 0) + { + // 没有剩余的数据需要处理、等待下一个包再处理。 + Offset = 0; + return false; + } + // 处理包消息体 + var outerPacketBodyLength = MessagePacketLength - MessageBodyOffset; + var copyBodyLength = Math.Min(bufferLength, outerPacketBodyLength); + // 写入数据到消息体中 + PackInfo.MemoryStream.Write(readOnlySpan.Slice(Offset, copyBodyLength)); + Offset += copyBodyLength; + MessageBodyOffset += copyBodyLength; + // 检查是否是完整的消息体 + if (MessageBodyOffset == MessagePacketLength) + { + packInfo = PackInfo; + PackInfo = null; + IsUnPackHead = true; + MessageBodyOffset = 0; + return true; + } + + Offset = 0; + return false; + } + + public override MemoryStreamBuffer Pack(ref uint rpcId, ref long routeId, MemoryStreamBuffer memoryStream, IMessage message) + { + return memoryStream == null ? Pack(ref rpcId, message) : Pack(ref rpcId, memoryStream); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private unsafe MemoryStreamBuffer Pack(ref uint rpcId, MemoryStreamBuffer memoryStream) + { + fixed (byte* bufferPtr = memoryStream.GetBuffer()) + { + *(uint*)(bufferPtr + Packet.OuterPacketRpcIdLocation) = rpcId; + } + + return memoryStream; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private unsafe MemoryStreamBuffer Pack(ref uint rpcId, IMessage message) + { + var memoryStreamLength = 0; + var messageType = message.GetType(); + var memoryStream = Network.MemoryStreamBufferPool.RentMemoryStream(MemoryStreamBufferSource.Pack); + OpCodeIdStruct opCodeIdStruct = message.OpCode(); + memoryStream.Seek(Packet.OuterPacketHeadLength, SeekOrigin.Begin); + + if (SerializerManager.TryGetSerializer(opCodeIdStruct.OpCodeProtocolType, out var serializer)) + { + serializer.Serialize(messageType, message, memoryStream); + memoryStreamLength = (int)memoryStream.Position; + } + else + { + Log.Error($"type:{messageType} Does not support processing protocol"); + } + + var opCode = Scene.MessageDispatcherComponent.GetOpCode(messageType); + var packetBodyCount = memoryStreamLength - Packet.OuterPacketHeadLength; + + if (packetBodyCount == 0) + { + // protoBuf做了一个优化、就是当序列化的对象里的属性和字段都为默认值的时候就不会序列化任何东西。 + // 为了TCP的分包和粘包、需要判定下是当前包数据不完整还是本应该如此、所以用-1代表。 + packetBodyCount = -1; + } + + if (packetBodyCount > Packet.PacketBodyMaxLength) + { + // 检查消息体长度是否超出限制 + throw new Exception($"Message content exceeds {Packet.PacketBodyMaxLength} bytes"); + } + + fixed (byte* bufferPtr = memoryStream.GetBuffer()) + { + *(int*)bufferPtr = packetBodyCount; + *(uint*)(bufferPtr + Packet.PacketLength) = opCode; + *(uint*)(bufferPtr + Packet.OuterPacketRpcIdLocation) = rpcId; + } + + return memoryStream; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Interface/APackInfo.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Interface/APackInfo.cs new file mode 100644 index 0000000..1ea6d6b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Interface/APackInfo.cs @@ -0,0 +1,61 @@ +using System; +using System.IO; +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.Serialize; + +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.PacketParser.Interface +{ + public abstract class APackInfo : IDisposable + { + internal ANetwork Network; + + public uint RpcId; + public long RouteId; + public long PackInfoId; + public bool IsDisposed; + private uint _protocolCode; + + public uint ProtocolCode + { + get => _protocolCode; + set + { + _protocolCode = value; + OpCodeIdStruct = value; + } + } + public OpCodeIdStruct OpCodeIdStruct { get; private set; } + public MemoryStreamBuffer MemoryStream { get; protected set; } + public abstract object Deserialize(Type messageType); + public abstract MemoryStreamBuffer RentMemoryStream(MemoryStreamBufferSource memoryStreamBufferSource, int size = 0); + public virtual void Dispose() + { + if (IsDisposed) + { + return; + } + + RpcId = 0; + RouteId = 0; + PackInfoId = 0; + ProtocolCode = 0; + _protocolCode = 0; + OpCodeIdStruct = default; + + if (MemoryStream != null) + { + Network.MemoryStreamBufferPool.ReturnMemoryStream(MemoryStream); + MemoryStream = null; + } + + IsDisposed = true; + Network = null; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Interface/APacketParser.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Interface/APacketParser.cs new file mode 100644 index 0000000..579cf6f --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Interface/APacketParser.cs @@ -0,0 +1,30 @@ +using System; +using System.Buffers; +using System.IO; +using Fantasy.Network.Interface; +using Fantasy.Serialize; + +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.PacketParser.Interface +{ + /// + /// 抽象的包解析器基类,用于解析网络通信数据包。 + /// + public abstract class APacketParser : IDisposable + { + internal Scene Scene; + internal ANetwork Network; + internal MessageDispatcherComponent MessageDispatcherComponent; + protected bool IsDisposed { get; private set; } + public abstract MemoryStreamBuffer Pack(ref uint rpcId, ref long routeId, MemoryStreamBuffer memoryStream, IMessage message); + public virtual void Dispose() + { + IsDisposed = true; + Scene = null; + MessageDispatcherComponent = null; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/OpCode.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/OpCode.cs new file mode 100644 index 0000000..27c5dbb --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/OpCode.cs @@ -0,0 +1,125 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +namespace Fantasy.Network +{ + public struct OpCodeIdStruct + { + // OpCodeIdStruct:5 + 4 + 23 = 32 + // +-------------------------+-------------------------------------------+-----------------------------+ + // | protocol(5) 最多31种类型 | OpCodeProtocolType(4) 最多15种不同的网络协议 | Index(23) 最多8388607个协议 | + // +-------------------------+-------------------------------------------+-----------------------------+ + public uint OpCodeProtocolType { get; private set; } + public uint Protocol { get; private set; } + public uint Index { get; private set; } + + public OpCodeIdStruct(uint opCodeProtocolType, uint protocol, uint index) + { + OpCodeProtocolType = opCodeProtocolType; + Protocol = protocol; + Index = index; + } + + public static implicit operator uint(OpCodeIdStruct opCodeIdStruct) + { + var result = opCodeIdStruct.Index; + result |= opCodeIdStruct.OpCodeProtocolType << 23; + result |= opCodeIdStruct.Protocol << 27; + return result; + } + + public static implicit operator OpCodeIdStruct(uint opCodeId) + { + var opCodeIdStruct = new OpCodeIdStruct() + { + Index = opCodeId & 0x7FFFFF + }; + opCodeId >>= 23; + opCodeIdStruct.OpCodeProtocolType = opCodeId & 0xF; + opCodeId >>= 4; + opCodeIdStruct.Protocol = opCodeId & 0x1F; + return opCodeIdStruct; + } + } + + public static class OpCodeProtocolType + { + public const uint Bson = 1; + public const uint ProtoBuf = 0; + } + + public static class OpCodeType + { + public const uint OuterMessage = 1; + public const uint OuterRequest = 2; + public const uint OuterResponse = 3; + + public const uint InnerMessage = 4; + public const uint InnerRequest = 5; + public const uint InnerResponse = 6; + + public const uint InnerRouteMessage = 7; + public const uint InnerRouteRequest = 8; + public const uint InnerRouteResponse = 9; + + public const uint OuterAddressableMessage = 10; + public const uint OuterAddressableRequest = 11; + public const uint OuterAddressableResponse = 12; + + public const uint InnerAddressableMessage = 13; + public const uint InnerAddressableRequest = 14; + public const uint InnerAddressableResponse = 15; + + public const uint OuterCustomRouteMessage = 16; + public const uint OuterCustomRouteRequest = 17; + public const uint OuterCustomRouteResponse = 18; + + public const uint OuterRoamingMessage = 19; + public const uint OuterRoamingRequest = 20; + public const uint OuterRoamingResponse = 21; + + public const uint InnerRoamingMessage = 22; + public const uint InnerRoamingRequest = 23; + public const uint InnerRoamingResponse = 24; + + public const uint OuterPingRequest = 30; + public const uint OuterPingResponse = 31; + } + + public static class OpCode + { + public static readonly uint BenchmarkMessage = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.OuterMessage, 8388607); + public static readonly uint BenchmarkRequest = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.OuterRequest, 8388607); + public static readonly uint BenchmarkResponse = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.OuterResponse, 8388607); + public static readonly uint PingRequest = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.OuterPingRequest, 1); + public static readonly uint PingResponse = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.OuterPingResponse, 1); + public static readonly uint DefaultResponse = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerResponse, 1); + public static readonly uint DefaultRouteResponse = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteResponse, 7); + public static readonly uint AddressableAddRequest = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteRequest, 1); + public static readonly uint AddressableAddResponse = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteResponse, 1); + public static readonly uint AddressableGetRequest = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteRequest, 2); + public static readonly uint AddressableGetResponse = Create(OpCodeProtocolType.ProtoBuf,OpCodeType.InnerRouteResponse,2); + public static readonly uint AddressableRemoveRequest = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteRequest, 3); + public static readonly uint AddressableRemoveResponse = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteResponse, 3); + public static readonly uint AddressableLockRequest = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteRequest, 4); + public static readonly uint AddressableLockResponse = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteResponse, 4); + public static readonly uint AddressableUnLockRequest = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteRequest, 5); + public static readonly uint AddressableUnLockResponse = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteResponse, 5); + public static readonly uint LinkRoamingRequest = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteRequest, 6); + public static readonly uint LinkRoamingResponse = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteResponse, 6); + public static readonly uint UnLinkRoamingRequest = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteRequest, 8); + public static readonly uint UnLinkRoamingResponse = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteResponse, 8); + public static readonly uint LockTerminusIdRequest = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteRequest, 9); + public static readonly uint LockTerminusIdResponse = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteResponse, 9); + public static readonly uint UnLockTerminusIdRequest = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteRequest, 10); + public static readonly uint UnLockTerminusIdResponse = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteResponse, 10); + public static readonly uint GetTerminusIdRequest = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteRequest, 11); + public static readonly uint GetTerminusIdResponse = Create(OpCodeProtocolType.ProtoBuf, OpCodeType.InnerRouteResponse, 11); + + public static readonly uint TransferTerminusRequest = Create(OpCodeProtocolType.Bson, OpCodeType.InnerRouteRequest, 1); + public static readonly uint TransferTerminusResponse = Create(OpCodeProtocolType.Bson, OpCodeType.InnerRouteResponse, 1); + + public static uint Create(uint opCodeProtocolType, uint protocol, uint index) + { + return new OpCodeIdStruct(opCodeProtocolType, protocol, index); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Pack/InnerPackInfo.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Pack/InnerPackInfo.cs new file mode 100644 index 0000000..e9870e7 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Pack/InnerPackInfo.cs @@ -0,0 +1,79 @@ +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract + +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.PacketParser.Interface; +using Fantasy.Pool; +using Fantasy.Serialize; + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS8603 // Possible null reference return. +#if FANTASY_NET +namespace Fantasy.PacketParser +{ + public sealed class InnerPackInfo : APackInfo + { + private readonly Dictionary> _createInstances = new Dictionary>(); + + public override void Dispose() + { + if (IsDisposed) + { + return; + } + + var network = Network; + base.Dispose(); + network.ReturnInnerPackInfo(this); + } + + public static InnerPackInfo Create(ANetwork network) + { + var innerPackInfo = network.RentInnerPackInfo(); + innerPackInfo.Network = network; + innerPackInfo.IsDisposed = false; + return innerPackInfo; + } + + public override MemoryStreamBuffer RentMemoryStream(MemoryStreamBufferSource memoryStreamBufferSource, int size = 0) + { + return MemoryStream ??= Network.MemoryStreamBufferPool.RentMemoryStream(memoryStreamBufferSource, size); + } + + public override object Deserialize(Type messageType) + { + if (MemoryStream == null) + { + Log.Debug("Deserialize MemoryStream is null"); + return null; + } + + MemoryStream.Seek(Packet.InnerPacketHeadLength, SeekOrigin.Begin); + + if (MemoryStream.Length == 0) + { + if (_createInstances.TryGetValue(messageType, out var createInstance)) + { + return createInstance(); + } + + createInstance = CreateInstance.CreateObject(messageType); + _createInstances.Add(messageType, createInstance); + return createInstance(); + } + + if (SerializerManager.TryGetSerializer(OpCodeIdStruct.OpCodeProtocolType, out var serializer)) + { + var obj = serializer.Deserialize(messageType, MemoryStream); + MemoryStream.Seek(0, SeekOrigin.Begin); + return obj; + } + + MemoryStream.Seek(0, SeekOrigin.Begin); + Log.Error($"protocolCode:{ProtocolCode} Does not support processing protocol"); + return null; + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Pack/OuterPackInfo.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Pack/OuterPackInfo.cs new file mode 100644 index 0000000..8ce08b7 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Pack/OuterPackInfo.cs @@ -0,0 +1,73 @@ +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +using System; +using System.IO; +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.PacketParser.Interface; +using Fantasy.Serialize; + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS8602 // Dereference of a possibly null reference. +namespace Fantasy.PacketParser +{ + public sealed class OuterPackInfo : APackInfo + { + public override void Dispose() + { + if (IsDisposed) + { + return; + } + var network = Network; + base.Dispose(); + network.ReturnOuterPackInfo(this); + } + + public static OuterPackInfo Create(ANetwork network) + { + var outerPackInfo = network.RentOuterPackInfo(); + outerPackInfo.Network = network; + outerPackInfo.IsDisposed = false; + return outerPackInfo; + } + + public override MemoryStreamBuffer RentMemoryStream(MemoryStreamBufferSource memoryStreamBufferSource, int size = 0) + { + if (MemoryStream == null) + { + MemoryStream = Network.MemoryStreamBufferPool.RentMemoryStream(memoryStreamBufferSource, size); + } + + return MemoryStream; + } + + /// + /// 将消息数据从内存反序列化为指定的消息类型实例。 + /// + /// 目标消息类型。 + /// 反序列化后的消息类型实例。 + public override object Deserialize(Type messageType) + { + if (MemoryStream == null) + { + Log.Debug("Deserialize MemoryStream is null"); + return null; + } + + MemoryStream.Seek(Packet.OuterPacketHeadLength, SeekOrigin.Begin); + + if (SerializerManager.TryGetSerializer(OpCodeIdStruct.OpCodeProtocolType, out var serializer)) + { + var obj = serializer.Deserialize(messageType, MemoryStream); + MemoryStream.Seek(0, SeekOrigin.Begin); + return obj; + } + + MemoryStream.Seek(0, SeekOrigin.Begin); + Log.Error($"protocolCode:{ProtocolCode} Does not support processing protocol"); + return null; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Pack/ProcessPackInfo.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Pack/ProcessPackInfo.cs new file mode 100644 index 0000000..f010858 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Pack/ProcessPackInfo.cs @@ -0,0 +1,160 @@ +#if FANTASY_NET +using System.Collections.Concurrent; +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.PacketParser.Interface; +using Fantasy.Pool; +using Fantasy.Serialize; + +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS8603 // Possible null reference return. +namespace Fantasy.PacketParser +{ + public sealed class ProcessPackInfo : APackInfo + { + private int _disposeCount; + public Type MessageType { get; private set; } + private static readonly ConcurrentQueue Caches = new ConcurrentQueue(); + private readonly ConcurrentDictionary> _createInstances = new ConcurrentDictionary>(); + + public override void Dispose() + { + if (--_disposeCount > 0 || IsDisposed) + { + return; + } + + _disposeCount = 0; + MessageType = null; + base.Dispose(); + + if (Caches.Count > 2000) + { + return; + } + + Caches.Enqueue(this); + } + + public static unsafe ProcessPackInfo Create(Scene scene, T message, int disposeCount, uint rpcId = 0, long routeId = 0) where T : IRouteMessage + { + if (!Caches.TryDequeue(out var packInfo)) + { + packInfo = new ProcessPackInfo(); + } + + var type = typeof(T); + var memoryStreamLength = 0; + packInfo._disposeCount = disposeCount; + packInfo.MessageType = type; + packInfo.IsDisposed = false; + var memoryStream = new MemoryStreamBuffer(); + memoryStream.MemoryStreamBufferSource = MemoryStreamBufferSource.Pack; + OpCodeIdStruct opCodeIdStruct = message.OpCode(); + memoryStream.Seek(Packet.InnerPacketHeadLength, SeekOrigin.Begin); + + if (SerializerManager.TryGetSerializer(opCodeIdStruct.OpCodeProtocolType, out var serializer)) + { + serializer.Serialize(type, message, memoryStream); + memoryStreamLength = (int)memoryStream.Position; + } + else + { + Log.Error($"type:{type} Does not support processing protocol"); + } + + var opCode = scene.MessageDispatcherComponent.GetOpCode(packInfo.MessageType); + var packetBodyCount = memoryStreamLength - Packet.InnerPacketHeadLength; + + if (packetBodyCount == 0) + { + // protoBuf做了一个优化、就是当序列化的对象里的属性和字段都为默认值的时候就不会序列化任何东西。 + // 为了TCP的分包和粘包、需要判定下是当前包数据不完整还是本应该如此、所以用-1代表。 + packetBodyCount = -1; + } + + if (packetBodyCount > Packet.PacketBodyMaxLength) + { + // 检查消息体长度是否超出限制 + throw new Exception($"Message content exceeds {Packet.PacketBodyMaxLength} bytes"); + } + + var buffer = memoryStream.GetBuffer(); + + fixed (byte* bufferPtr = buffer) + { + var opCodePtr = bufferPtr + Packet.PacketLength; + var rpcIdPtr = bufferPtr + Packet.InnerPacketRpcIdLocation; + var routeIdPtr = bufferPtr + Packet.InnerPacketRouteRouteIdLocation; + *(int*)bufferPtr = packetBodyCount; + *(uint*)opCodePtr = opCode; + *(uint*)rpcIdPtr = rpcId; + *(long*)routeIdPtr = routeId; + } + + memoryStream.Seek(0, SeekOrigin.Begin); + packInfo.MemoryStream = memoryStream; + return packInfo; + } + + public unsafe void Set(uint rpcId, long routeId) + { + var buffer = MemoryStream.GetBuffer(); + + fixed (byte* bufferPtr = buffer) + { + var rpcIdPtr = bufferPtr + Packet.InnerPacketRpcIdLocation; + var routeIdPtr = bufferPtr + Packet.InnerPacketRouteRouteIdLocation; + *(uint*)rpcIdPtr = rpcId; + *(long*)routeIdPtr = routeId; + } + + MemoryStream.Seek(0, SeekOrigin.Begin); + } + + public override MemoryStreamBuffer RentMemoryStream(MemoryStreamBufferSource memoryStreamBufferSource, int size = 0) + { + throw new NotImplementedException(); + } + + public override object Deserialize(Type messageType) + { + if (MemoryStream == null) + { + Log.Debug("Deserialize MemoryStream is null"); + return null; + } + + object obj = null; + MemoryStream.Seek(Packet.InnerPacketHeadLength, SeekOrigin.Begin); + + if (MemoryStream.Length == 0) + { + if (_createInstances.TryGetValue(messageType, out var createInstance)) + { + return createInstance(); + } + + createInstance = CreateInstance.CreateObject(messageType); + _createInstances.TryAdd(messageType, createInstance); + return createInstance(); + } + + if (SerializerManager.TryGetSerializer(OpCodeIdStruct.OpCodeProtocolType, out var serializer)) + { + obj = serializer.Deserialize(messageType, MemoryStream); + MemoryStream.Seek(0, SeekOrigin.Begin); + return obj; + } + + MemoryStream.Seek(0, SeekOrigin.Begin); + Log.Error($"protocolCode:{ProtocolCode} Does not support processing protocol"); + return null; + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Packet.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Packet.cs new file mode 100644 index 0000000..7198af7 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/Packet.cs @@ -0,0 +1,49 @@ +namespace Fantasy.PacketParser +{ + /// + /// 提供关于消息包的常量定义。 + /// + public struct Packet + { + /// + /// 消息体最大长度 + /// + public const int PacketBodyMaxLength = ushort.MaxValue * 16; + /// + /// 消息体长度在消息头占用的长度 + /// + public const int PacketLength = sizeof(int); + /// + /// 协议编号在消息头占用的长度 + /// + public const int ProtocolCodeLength = sizeof(uint); + /// + /// RouteId长度 + /// + public const int PacketRouteIdLength = sizeof(long); + /// + /// RpcId在消息头占用的长度 + /// + public const int RpcIdLength = sizeof(uint); + /// + /// OuterRPCId所在的位置 + /// + public const int OuterPacketRpcIdLocation = PacketLength + ProtocolCodeLength; + /// + /// InnerRPCId所在的位置 + /// + public const int InnerPacketRpcIdLocation = PacketLength + ProtocolCodeLength; + /// + /// RouteId所在的位置 + /// + public const int InnerPacketRouteRouteIdLocation = PacketLength + ProtocolCodeLength + RpcIdLength; + /// + /// 外网消息头长度(消息体长度在消息头占用的长度 + 协议编号在消息头占用的长度 + RPCId长度 + RouteId长度) + /// + public const int OuterPacketHeadLength = PacketLength + ProtocolCodeLength + RpcIdLength + PacketRouteIdLength; + /// + /// 内网消息头长度(消息体长度在消息头占用的长度 + 协议编号在消息头占用的长度 + RPCId长度 + RouteId长度) + /// + public const int InnerPacketHeadLength = PacketLength + ProtocolCodeLength + RpcIdLength + PacketRouteIdLength; + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/PacketParserFactory.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/PacketParserFactory.cs new file mode 100644 index 0000000..679f95d --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/PacketParser/PacketParserFactory.cs @@ -0,0 +1,173 @@ +using System; +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.PacketParser.Interface; + +// ReSharper disable PossibleNullReferenceException +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS8603 // Possible null reference return. +namespace Fantasy.PacketParser +{ + internal static class PacketParserFactory + { +#if FANTASY_NET + internal static ReadOnlyMemoryPacketParser CreateServerReadOnlyMemoryPacket(ANetwork network) + { + ReadOnlyMemoryPacketParser readOnlyMemoryPacketParser = null; + + switch (network.NetworkTarget) + { + case NetworkTarget.Inner: + { + readOnlyMemoryPacketParser = new InnerReadOnlyMemoryPacketParser(); + break; + } + case NetworkTarget.Outer: + { + readOnlyMemoryPacketParser = new OuterReadOnlyMemoryPacketParser(); + break; + } + } + + readOnlyMemoryPacketParser.Scene = network.Scene; + readOnlyMemoryPacketParser.Network = network; + readOnlyMemoryPacketParser.MessageDispatcherComponent = network.Scene.MessageDispatcherComponent; + return readOnlyMemoryPacketParser; + } + + public static BufferPacketParser CreateServerBufferPacket(ANetwork network) + { + BufferPacketParser bufferPacketParser = null; + + switch (network.NetworkTarget) + { + case NetworkTarget.Inner: + { + bufferPacketParser = new InnerBufferPacketParser(); + break; + } + case NetworkTarget.Outer: + { + bufferPacketParser = new OuterBufferPacketParser(); + break; + } + } + + bufferPacketParser.Scene = network.Scene; + bufferPacketParser.Network = network; + bufferPacketParser.MessageDispatcherComponent = network.Scene.MessageDispatcherComponent; + return bufferPacketParser; + } +#endif + internal static ReadOnlyMemoryPacketParser CreateClientReadOnlyMemoryPacket(ANetwork network) + { + ReadOnlyMemoryPacketParser readOnlyMemoryPacketParser = null; + + switch (network.NetworkTarget) + { +#if FANTASY_NET + case NetworkTarget.Inner: + { + readOnlyMemoryPacketParser = new InnerReadOnlyMemoryPacketParser(); + break; + } +#endif + case NetworkTarget.Outer: + { + readOnlyMemoryPacketParser = new OuterReadOnlyMemoryPacketParser(); + break; + } + } + + readOnlyMemoryPacketParser.Scene = network.Scene; + readOnlyMemoryPacketParser.Network = network; + readOnlyMemoryPacketParser.MessageDispatcherComponent = network.Scene.MessageDispatcherComponent; + return readOnlyMemoryPacketParser; + } + +#if !FANTASY_WEBGL + public static BufferPacketParser CreateClientBufferPacket(ANetwork network) + { + BufferPacketParser bufferPacketParser = null; + + switch (network.NetworkTarget) + { +#if FANTASY_NET + case NetworkTarget.Inner: + { + bufferPacketParser = new InnerBufferPacketParser(); + break; + } +#endif + case NetworkTarget.Outer: + { + bufferPacketParser = new OuterBufferPacketParser(); + break; + } + } + + bufferPacketParser.Scene = network.Scene; + bufferPacketParser.Network = network; + bufferPacketParser.MessageDispatcherComponent = network.Scene.MessageDispatcherComponent; + return bufferPacketParser; + } +#endif + public static T CreateClient(ANetwork network) where T : APacketParser + { + var packetParserType = typeof(T); + + switch (network.NetworkTarget) + { +#if FANTASY_NET + case NetworkTarget.Inner: + { + APacketParser innerPacketParser = null; + + if (packetParserType == typeof(ReadOnlyMemoryPacketParser)) + { + innerPacketParser = new InnerReadOnlyMemoryPacketParser(); + } + else if (packetParserType == typeof(BufferPacketParser)) + { + innerPacketParser = new InnerBufferPacketParser(); + } + // else if(packetParserType == typeof(CircularBufferPacketParser)) + // { + // innerPacketParser = new InnerCircularBufferPacketParser(); + // } + + innerPacketParser.Scene = network.Scene; + innerPacketParser.Network = network; + innerPacketParser.MessageDispatcherComponent = network.Scene.MessageDispatcherComponent; + return (T)innerPacketParser; + } +#endif + case NetworkTarget.Outer: + { + APacketParser outerPacketParser = null; + + if (packetParserType == typeof(ReadOnlyMemoryPacketParser)) + { + outerPacketParser = new OuterReadOnlyMemoryPacketParser(); + } + else if (packetParserType == typeof(BufferPacketParser)) + { +#if FANTASY_WEBGL + outerPacketParser = new OuterWebglBufferPacketParser(); +#else + outerPacketParser = new OuterBufferPacketParser(); +#endif + } + outerPacketParser.Scene = network.Scene; + outerPacketParser.Network = network; + outerPacketParser.MessageDispatcherComponent = network.Scene.MessageDispatcherComponent; + return (T)outerPacketParser; + } + default: + throw new ArgumentOutOfRangeException(); + } + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/ClientMessageScheduler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/ClientMessageScheduler.cs new file mode 100644 index 0000000..baf981a --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/ClientMessageScheduler.cs @@ -0,0 +1,96 @@ +using System; +using Fantasy.Async; +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.PacketParser.Interface; + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Scheduler +{ +#if FANTASY_UNITY || FANTASY_CONSOLE + /// + /// 提供了一个用于客户端网络消息调度和处理的抽象基类。 + /// + public sealed class ClientMessageScheduler : ANetworkMessageScheduler + { + public ClientMessageScheduler(Scene scene) : base(scene) { } + + public override async FTask Scheduler(Session session, APackInfo packInfo) + { + await FTask.CompletedTask; + switch (packInfo.OpCodeIdStruct.Protocol) + { + case OpCodeType.OuterMessage: + case OpCodeType.OuterRequest: + case OpCodeType.OuterAddressableMessage: + case OpCodeType.OuterAddressableRequest: + case OpCodeType.OuterCustomRouteMessage: + case OpCodeType.OuterCustomRouteRequest: + case OpCodeType.OuterRoamingMessage: + case OpCodeType.OuterRoamingRequest: + { + using (packInfo) + { + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + if (messageType == null) + { + throw new Exception($"可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + var message = packInfo.Deserialize(messageType); + MessageDispatcherComponent.MessageHandler(session, messageType, message, packInfo.RpcId, packInfo.ProtocolCode); + } + + return; + } + case OpCodeType.OuterResponse: + case OpCodeType.OuterPingResponse: + case OpCodeType.OuterAddressableResponse: + case OpCodeType.OuterCustomRouteResponse: + case OpCodeType.OuterRoamingResponse: + { + using (packInfo) + { + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + if (messageType == null) + { + throw new Exception($"可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + // 这个一般是客户端Session.Call发送时使用的、目前这个逻辑只有Unity客户端时使用 + + var aResponse = (IResponse)packInfo.Deserialize(messageType); + + if (!session.RequestCallback.Remove(packInfo.RpcId, out var action)) + { + Log.Error($"not found rpc {packInfo.RpcId}, response message: {aResponse.GetType().Name}"); + return; + } + + action.SetResult(aResponse); + } + + return; + } + default: + { + packInfo.Dispose(); + throw new NotSupportedException($"Received unsupported message protocolCode:{packInfo.ProtocolCode}"); + } + } + } + } +#endif +#if FANTASY_NET + internal sealed class ClientMessageScheduler(Scene scene) : ANetworkMessageScheduler(scene) + { + public override FTask Scheduler(Session session, APackInfo packInfo) + { + throw new NotSupportedException($"ClientMessageScheduler Received unsupported message protocolCode:{packInfo.ProtocolCode}"); + } + } +#endif +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/InnerMessageScheduler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/InnerMessageScheduler.cs new file mode 100644 index 0000000..b1b55f6 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/InnerMessageScheduler.cs @@ -0,0 +1,211 @@ +#if FANTASY_NET +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +using System.Runtime.CompilerServices; +using Fantasy.Async; +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.PacketParser; +using Fantasy.PacketParser.Interface; +#pragma warning disable CS8604 // Possible null reference argument. + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +namespace Fantasy.Scheduler +{ + /// + /// 提供了一个机制来调度和处理内部网络消息。 + /// + internal sealed class InnerMessageScheduler(Scene scene) : ANetworkMessageScheduler(scene) + { + public override async FTask Scheduler(Session session, APackInfo packInfo) + { + var protocol = packInfo.OpCodeIdStruct.Protocol; + + switch (protocol) + { + case OpCodeType.InnerMessage: + case OpCodeType.InnerRequest: + { + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + try + { + if (messageType == null) + { + throw new Exception($"可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + var message = packInfo.Deserialize(messageType); + MessageDispatcherComponent.MessageHandler(session, messageType, message, packInfo.RpcId, packInfo.ProtocolCode); + } + catch (Exception e) + { + Log.Error($"ANetworkMessageScheduler OuterResponse error messageProtocolCode:{packInfo.ProtocolCode} messageType:{messageType} SessionId {session.Id} IsDispose {session.IsDisposed} {e}"); + } + finally + { + packInfo.Dispose(); + } + + return; + } + case OpCodeType.InnerResponse: + case OpCodeType.InnerRouteResponse: + case OpCodeType.InnerAddressableResponse: + case OpCodeType.InnerRoamingResponse: + case OpCodeType.OuterAddressableResponse: + case OpCodeType.OuterCustomRouteResponse: + case OpCodeType.OuterRoamingResponse: + { + using (packInfo) + { + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + if (messageType == null) + { + throw new Exception($"可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + NetworkMessagingComponent.ResponseHandler(packInfo.RpcId, (IResponse)packInfo.Deserialize(messageType)); + } + + return; + } + case OpCodeType.InnerRouteMessage: + case OpCodeType.InnerAddressableMessage: + case OpCodeType.InnerRoamingMessage: + { + using (packInfo) + { + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + if (messageType == null) + { + throw new Exception($"InnerMessageScheduler error 可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + if (!Scene.TryGetEntity(packInfo.RouteId, out var entity)) + { + Scene.MessageDispatcherComponent.FailRouteResponse(session, messageType, InnerErrorCode.ErrNotFoundRoute, packInfo.RpcId); + return; + } + + var obj = packInfo.Deserialize(messageType); + await Scene.MessageDispatcherComponent.RouteMessageHandler(session, messageType, entity, (IMessage)obj, packInfo.RpcId); + } + + return; + } + case OpCodeType.InnerRouteRequest: + case OpCodeType.InnerAddressableRequest: + case OpCodeType.InnerRoamingRequest: + { + using (packInfo) + { + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + if (messageType == null) + { + throw new Exception($"InnerMessageScheduler error 可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + if (!Scene.TryGetEntity(packInfo.RouteId, out var entity)) + { + Scene.MessageDispatcherComponent.FailRouteResponse(session, messageType, InnerErrorCode.ErrNotFoundRoute, packInfo.RpcId); + return; + } + + var obj = packInfo.Deserialize(messageType); + await Scene.MessageDispatcherComponent.RouteMessageHandler(session, messageType, entity, (IMessage)obj, packInfo.RpcId); + } + + return; + } + case OpCodeType.OuterCustomRouteRequest: + case OpCodeType.OuterAddressableRequest: + case OpCodeType.OuterAddressableMessage: + case OpCodeType.OuterCustomRouteMessage: + case OpCodeType.OuterRoamingMessage: + case OpCodeType.OuterRoamingRequest: + { + var entity = Scene.GetEntity(packInfo.RouteId); + + switch (entity) + { + case null: + { + // 执行到这里有两种情况: + using (packInfo) + { + switch (Scene.SceneConfig.SceneTypeString) + { + case "Gate": + { + // 1、当前是Gate进行,需要转发消息给客户端,但当前这个Session已经断开了。 + // 这种情况不需要做任何处理。 + return; + } + default: + { + // 2、当前是其他Scene、消息通过Gate发送到这个Scene上面,但这个Scene上面没有这个Entity。 + // 因为这个是Gate转发消息到这个Scene的,如果没有找到Entity要返回错误给Gate。 + // 出现这个情况一定要打印日志,因为出现这个问题肯定是上层逻辑导致的,不应该出现这样的问题。 + var packInfoRouteId = packInfo.RouteId; + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + switch (protocol) + { + case OpCodeType.OuterCustomRouteRequest: + case OpCodeType.OuterAddressableRequest: + case OpCodeType.OuterAddressableMessage: + { + Scene.MessageDispatcherComponent.FailRouteResponse(session, messageType, InnerErrorCode.ErrNotFoundRoute, packInfo.RpcId); + return; + } + } + + throw new Exception($"The Entity associated with RouteId = {packInfoRouteId} was not found! messageType = {messageType.FullName} protocol = {protocol}"); + } + } + } + } + case Session gateSession: + { + using (packInfo) + { + // 这里如果是Session只可能是Gate的Session、如果是的话、肯定是转发消息 + gateSession.Send(packInfo.MemoryStream, packInfo.RpcId); + } + + return; + } + default: + { + using (packInfo) + { + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + if (messageType == null) + { + throw new Exception($"InnerMessageScheduler error 可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + var obj = packInfo.Deserialize(messageType); + await Scene.MessageDispatcherComponent.RouteMessageHandler(session, messageType, entity, (IMessage)obj, packInfo.RpcId); + } + + return; + } + } + } + default: + { + var infoProtocolCode = packInfo.ProtocolCode; + packInfo.Dispose(); + throw new NotSupportedException($"InnerMessageScheduler Received unsupported message protocolCode:{infoProtocolCode}"); + } + } + } + } +} +#endif + diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/Interface/ANetworkMessageScheduler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/Interface/ANetworkMessageScheduler.cs new file mode 100644 index 0000000..b296cff --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/Interface/ANetworkMessageScheduler.cs @@ -0,0 +1,30 @@ +using System; +using System.IO; +using Fantasy.Async; +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.PacketParser.Interface; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +// ReSharper disable UnassignedField.Global +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. + +namespace Fantasy.Scheduler +{ + public abstract class ANetworkMessageScheduler + { + protected readonly Scene Scene; + protected readonly MessageDispatcherComponent MessageDispatcherComponent; +#if FANTASY_NET + protected readonly NetworkMessagingComponent NetworkMessagingComponent; +#endif + protected ANetworkMessageScheduler(Scene scene) + { + Scene = scene; + MessageDispatcherComponent = scene.MessageDispatcherComponent; +#if FANTASY_NET + NetworkMessagingComponent = scene.NetworkMessagingComponent; +#endif + } + public abstract FTask Scheduler(Session session, APackInfo packInfo); + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/MessageHelper/MessageSender.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/MessageHelper/MessageSender.cs new file mode 100644 index 0000000..c645183 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/MessageHelper/MessageSender.cs @@ -0,0 +1,107 @@ +using System; +using Fantasy.Async; +using Fantasy.Helper; +using Fantasy.Network.Interface; + +#pragma warning disable CS8625 +#pragma warning disable CS8618 + +namespace Fantasy.Scheduler +{ + /// + /// 网络消息发送者的类。 + /// + public struct MessageSender : IDisposable + { + /// + /// 获取或设置 RPC ID。 + /// + public uint RpcId { get; private set; } + /// + /// 获取或设置路由 ID。 + /// + public long RouteId { get; private set; } + /// + /// 获取或设置创建时间。 + /// + public long CreateTime { get; private set; } + /// + /// 获取或设置消息类型。 + /// + public Type MessageType { get; private set; } + /// + /// 获取或设置请求消息。 + /// + public IMessage Request { get; private set; } + /// + /// 获取或设置任务。 + /// + public FTask Tcs { get; private set; } + + /// + /// 释放资源。 + /// + public void Dispose() + { + RpcId = 0; + RouteId = 0; + CreateTime = 0; + Tcs = null; + Request = null; + MessageType = null; + } + + /// + /// 创建一个 实例。 + /// + /// RPC ID。 + /// 请求消息类型。 + /// 任务。 + /// 创建的 实例。 + public static MessageSender Create(uint rpcId, Type requestType, FTask tcs) + { + var routeMessageSender = new MessageSender(); + routeMessageSender.Tcs = tcs; + routeMessageSender.RpcId = rpcId; + routeMessageSender.MessageType = requestType; + routeMessageSender.CreateTime = TimeHelper.Now; + return routeMessageSender; + } + + /// + /// 创建一个 实例。 + /// + /// RPC ID。 + /// 请求消息。 + /// 任务。 + /// 创建的 实例。 + public static MessageSender Create(uint rpcId, IRequest request, FTask tcs) + { + var routeMessageSender = new MessageSender(); + routeMessageSender.Tcs = tcs; + routeMessageSender.RpcId = rpcId; + routeMessageSender.Request = request; + routeMessageSender.CreateTime = TimeHelper.Now; + return routeMessageSender; + } + + /// + /// 创建一个 实例。 + /// + /// RPC ID。 + /// 路由 ID。 + /// 路由消息请求。 + /// 任务。 + /// 创建的 实例。 + public static MessageSender Create(uint rpcId, long routeId, IRouteMessage request, FTask tcs) + { + var routeMessageSender = new MessageSender(); + routeMessageSender.Tcs = tcs; + routeMessageSender.RpcId = rpcId; + routeMessageSender.RouteId = routeId; + routeMessageSender.Request = request; + routeMessageSender.CreateTime = TimeHelper.Now; + return routeMessageSender; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/MessageHelper/NetworkMessagingComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/MessageHelper/NetworkMessagingComponent.cs new file mode 100644 index 0000000..7580dd9 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/MessageHelper/NetworkMessagingComponent.cs @@ -0,0 +1,273 @@ +#if FANTASY_NET +using Fantasy.Entitas; +using System.Runtime.CompilerServices; +using Fantasy.Async; +using Fantasy.Entitas.Interface; +using Fantasy.Helper; +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.Network.Route; +using Fantasy.PacketParser; +using Fantasy.PacketParser.Interface; +using Fantasy.Timer; +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +namespace Fantasy.Scheduler +{ + public struct NetworkMessageUpdate + { + public NetworkMessagingComponent NetworkMessagingComponent; + } + + public class NetworkMessagingComponentAwakeSystem : AwakeSystem + { + protected override void Awake(NetworkMessagingComponent self) + { + var selfScene = self.Scene; + self.TimerComponent = selfScene.TimerComponent; + self.MessageDispatcherComponent = selfScene.MessageDispatcherComponent; + self.AddressableRouteMessageLock = selfScene.CoroutineLockComponent.Create(self.GetType().TypeHandle.Value.ToInt64()); + + self.TimerId = self.TimerComponent.Net.RepeatedTimer(10000, new NetworkMessageUpdate() + { + NetworkMessagingComponent = self + }); + } + } + + public class NetworkMessagingComponentDestroySystem : DestroySystem + { + protected override void Destroy(NetworkMessagingComponent self) + { + if (self.TimerId != 0) + { + self.TimerComponent.Net.Remove(ref self.TimerId); + } + + foreach (var (rpcId, messageSender) in self.RequestCallback.ToDictionary()) + { + self.ReturnMessageSender(rpcId, messageSender); + } + + self.AddressableRouteMessageLock.Dispose(); + + self.RequestCallback.Clear(); + self.TimeoutRouteMessageSenders.Clear(); + self.TimerComponent = null; + self.MessageDispatcherComponent = null; + self.AddressableRouteMessageLock = null; + } + } + public sealed class NetworkMessagingComponent : Entity + { + public long TimerId; + private uint _rpcId; + public CoroutineLock AddressableRouteMessageLock; + public TimerComponent TimerComponent; + public MessageDispatcherComponent MessageDispatcherComponent; + public readonly SortedDictionary RequestCallback = new(); + public readonly Dictionary TimeoutRouteMessageSenders = new(); + + public void SendInnerRoute(long routeId, IRouteMessage message) + { + if (routeId == 0) + { + Log.Error($"SendInnerRoute appId == 0"); + return; + } + + Scene.GetSession(routeId).Send(message, 0, routeId); + } + + internal void SendInnerRoute(long routeId, Type messageType, APackInfo packInfo) + { + if (routeId == 0) + { + Log.Error($"SendInnerRoute routeId == 0"); + return; + } + + Scene.GetSession(routeId).Send(0, routeId, messageType, packInfo); + } + + public void SendInnerRoute(ICollection routeIdCollection, IRouteMessage message) + { + if (routeIdCollection.Count <= 0) + { + Log.Error("SendInnerRoute routeIdCollection.Count <= 0"); + return; + } + + using var processPackInfo = ProcessPackInfo.Create(Scene, message, routeIdCollection.Count); + foreach (var routeId in routeIdCollection) + { + processPackInfo.Set(0, routeId); + Scene.GetSession(routeId).Send(processPackInfo, 0, routeId); + } + } + + public async FTask SendAddressable(long addressableId, IRouteMessage message) + { + await CallAddressable(addressableId, message); + } + + internal async FTask CallInnerRoute(long routeId, Type requestType, APackInfo packInfo) + { + if (routeId == 0) + { + Log.Error($"CallInnerRoute routeId == 0"); + return null; + } + + var rpcId = ++_rpcId; + var session = Scene.GetSession(routeId); + var requestCallback = FTask.Create(false); + RequestCallback.Add(rpcId, MessageSender.Create(rpcId, requestType, requestCallback)); + session.Send(rpcId, routeId, requestType, packInfo); + return await requestCallback; + } + + public async FTask CallInnerRouteBySession(Session session, long routeId, IRouteMessage request) + { + var rpcId = ++_rpcId; + var requestCallback = FTask.Create(false); + RequestCallback.Add(rpcId, MessageSender.Create(rpcId, request, requestCallback)); + session.Send(request, rpcId, routeId); + return await requestCallback; + } + + public async FTask CallInnerRoute(long routeId, IRouteMessage request) + { + if (routeId == 0) + { + Log.Error($"CallInnerRoute routeId == 0"); + return null; + } + + var rpcId = ++_rpcId; + var session = Scene.GetSession(routeId); + var requestCallback = FTask.Create(false); + RequestCallback.Add(rpcId, MessageSender.Create(rpcId, request, requestCallback)); + session.Send(request, rpcId, routeId); + return await requestCallback; + } + + public async FTask CallAddressable(long addressableId, IRouteMessage request) + { + var failCount = 0; + + using (await AddressableRouteMessageLock.Wait(addressableId, "CallAddressable")) + { + var addressableRouteId = await AddressableHelper.GetAddressableRouteId(Scene, addressableId); + + while (true) + { + if (addressableRouteId == 0) + { + addressableRouteId = await AddressableHelper.GetAddressableRouteId(Scene, addressableId); + } + + if (addressableRouteId == 0) + { + return MessageDispatcherComponent.CreateResponse(request.GetType(), InnerErrorCode.ErrNotFoundRoute); + } + + var iRouteResponse = await CallInnerRoute(addressableRouteId, request); + + switch (iRouteResponse.ErrorCode) + { + case InnerErrorCode.ErrNotFoundRoute: + { + if (++failCount > 20) + { + Log.Error($"AddressableComponent.Call failCount > 20 route send message fail, routeId: {addressableRouteId} AddressableMessageComponent:{addressableId}"); + return iRouteResponse; + } + + await TimerComponent.Net.WaitAsync(500); + addressableRouteId = 0; + continue; + } + case InnerErrorCode.ErrRouteTimeout: + { + Log.Error($"CallAddressableRoute ErrorCode.ErrRouteTimeout Error:{iRouteResponse.ErrorCode} Message:{request}"); + return iRouteResponse; + } + default: + { + return iRouteResponse; + } + } + } + } + } + + public void ResponseHandler(uint rpcId, IResponse response) + { + if (!RequestCallback.Remove(rpcId, out var routeMessageSender)) + { + throw new Exception($"not found rpc, response.RpcId:{rpcId} response message: {response.GetType().Name} Process:{Scene.Process.Id} Scene:{Scene.SceneConfigId}"); + } + + ResponseHandler(routeMessageSender, response); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static void ResponseHandler(MessageSender messageSender, IResponse response) + { + if (response.ErrorCode == InnerErrorCode.ErrRouteTimeout) + { +#if FANTASY_DEVELOP + messageSender.Tcs.SetException(new Exception($"Rpc error: request, 注意RouteId消息超时,请注意查看是否死锁或者没有reply: RouteId: {messageSender.RouteId} {messageSender.Request.ToJson()}, response: {response}")); +#else + messageSender.Tcs.SetException(new Exception($"Rpc error: request, 注意RouteId消息超时,请注意查看是否死锁或者没有reply: RouteId: {messageSender.RouteId} {messageSender.Request}, response: {response}")); +#endif + messageSender.Dispose(); + return; + } + + messageSender.Tcs.SetResult(response); + messageSender.Dispose(); + } + + public void ReturnMessageSender(uint rpcId, MessageSender messageSender) + { + try + { + switch (messageSender.Request) + { + case IRouteMessage iRouteMessage: + { + // IRouteMessage是个特殊的RPC协议、这里不处理就可以了。 + break; + } + case IRequest iRequest: + { + var response = MessageDispatcherComponent.CreateResponse(iRequest.GetType(), InnerErrorCode.ErrRpcFail); + var responseRpcId = messageSender.RpcId; + ResponseHandler(responseRpcId, response); + Log.Warning($"timeout rpcId:{rpcId} responseRpcId:{responseRpcId} {iRequest.ToJson()}"); + break; + } + default: + { + Log.Error(messageSender.Request != null + ? $"Unsupported protocol type {messageSender.Request.GetType()} rpcId:{rpcId} messageSender.Request != null" + : $"Unsupported protocol type:{messageSender.MessageType.FullName} rpcId:{rpcId}"); + RequestCallback.Remove(rpcId); + break; + } + } + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/MessageHelper/OnNetworkMessageUpdateCheckTimeout.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/MessageHelper/OnNetworkMessageUpdateCheckTimeout.cs new file mode 100644 index 0000000..7dd2ea3 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/MessageHelper/OnNetworkMessageUpdateCheckTimeout.cs @@ -0,0 +1,60 @@ +using Fantasy.Helper; +using Fantasy.Timer; + +#if FANTASY_NET +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +namespace Fantasy.Scheduler +{ + /// + /// 网络消息更新检查超时。 + /// + public sealed class OnNetworkMessageUpdateCheckTimeout : TimerHandler + { + /// + /// 超时时间(毫秒)。 + /// + private const long Timeout = 40000; + + /// + /// 处理网络消息更新检查超时。 + /// + /// + /// + protected override void Handler(NetworkMessageUpdate self) + { + var timeNow = TimeHelper.Now; + var selfNetworkMessagingComponent = self.NetworkMessagingComponent; + + // 遍历请求回调字典,检查是否有超时的请求,将超时请求添加到超时消息发送列表中。 + + foreach (var (rpcId, value) in selfNetworkMessagingComponent.RequestCallback) + { + if (timeNow < value.CreateTime + Timeout) + { + break; + } + + selfNetworkMessagingComponent.TimeoutRouteMessageSenders.Add(rpcId, value); + } + + // 如果没有超时的请求,直接返回。 + + if (selfNetworkMessagingComponent.TimeoutRouteMessageSenders.Count == 0) + { + return; + } + + // 处理超时的请求,根据请求类型生成相应的响应消息,并进行处理。 + + foreach (var (rpcId, routeMessageSender) in selfNetworkMessagingComponent.TimeoutRouteMessageSenders) + { + selfNetworkMessagingComponent.ReturnMessageSender(rpcId, routeMessageSender); + } + + // 清空超时消息发送列表。 + + selfNetworkMessagingComponent.TimeoutRouteMessageSenders.Clear(); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/OuterMessageScheduler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/OuterMessageScheduler.cs new file mode 100644 index 0000000..2c963ff --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Message/Scheduler/OuterMessageScheduler.cs @@ -0,0 +1,366 @@ +using System; +using Fantasy.Async; +using Fantasy.Network; +using Fantasy.PacketParser.Interface; +#if FANTASY_NET +using System.Text; +using Fantasy.Network.Interface; +using Fantasy.Network.Route; +using Fantasy.PacketParser; +using Fantasy.Helper; +using Fantasy.InnerMessage; +using Fantasy.Roaming; +#endif + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract + +namespace Fantasy.Scheduler +{ + /// + /// 提供了一个机制来调度和处理外部网络消息。 + /// +#if FANTASY_UNITY + public sealed class OuterMessageScheduler : ANetworkMessageScheduler + { + public OuterMessageScheduler(Scene scene) : base(scene) { } + + /// + /// 在Unity环境下,处理外部消息的方法。 + /// + /// 网络会话。 + /// 消息封包信息。 + public override FTask Scheduler(Session session, APackInfo packInfo) + { + throw new NotSupportedException($"Received unsupported message protocolCode:{packInfo.ProtocolCode}"); + } + } +#endif +#if FANTASY_NET + internal sealed class OuterMessageScheduler(Scene scene) : ANetworkMessageScheduler(scene) + { + private readonly PingResponse _pingResponse = new PingResponse(); + public override async FTask Scheduler(Session session, APackInfo packInfo) + { + if (session.IsDisposed) + { + return; + } + + switch (packInfo.OpCodeIdStruct.Protocol) + { + case OpCodeType.OuterPingRequest: + { + // 注意心跳目前只有外网才才会有、内网之间不需要心跳。 + + session.LastReceiveTime = TimeHelper.Now; + _pingResponse.Now = session.LastReceiveTime; + + using (packInfo) + { + session.Send(_pingResponse, packInfo.RpcId); + } + + return; + } + case OpCodeType.OuterMessage: + case OpCodeType.OuterRequest: + { + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + try + { + if (messageType == null) + { + throw new Exception($"可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + var message = packInfo.Deserialize(messageType); + MessageDispatcherComponent.MessageHandler(session, messageType, message, packInfo.RpcId, packInfo.ProtocolCode); + } + catch (Exception e) + { + Log.Error($"ANetworkMessageScheduler OuterResponse error messageProtocolCode:{packInfo.ProtocolCode} messageType:{messageType} SessionId {session.Id} IsDispose {session.IsDisposed} {e}"); + } + finally + { + packInfo.Dispose(); + } + + return; + } + case OpCodeType.OuterResponse: + { + using (packInfo) + { + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + if (messageType == null) + { + throw new Exception($"可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + NetworkMessagingComponent.ResponseHandler(packInfo.RpcId, (IResponse)packInfo.Deserialize(messageType)); + } + + return; + } + case OpCodeType.OuterAddressableMessage: + { + var packInfoPackInfoId = packInfo.PackInfoId; + + try + { + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + if (messageType == null) + { + throw new Exception($"OuterMessageScheduler error 可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + var addressableRouteComponent = session.AddressableRouteComponent; + + if (addressableRouteComponent == null) + { + throw new Exception("OuterMessageScheduler error session does not have an AddressableRouteComponent component"); + } + + await addressableRouteComponent.Send(messageType, packInfo); + } + finally + { + if (packInfo.PackInfoId == packInfoPackInfoId) + { + packInfo.Dispose(); + } + } + + return; + } + case OpCodeType.OuterAddressableRequest: + { + var packInfoPackInfoId = packInfo.PackInfoId; + + try + { + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + if (messageType == null) + { + throw new Exception($"OuterMessageScheduler error 可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + var addressableRouteComponent = session.AddressableRouteComponent; + + if (addressableRouteComponent == null) + { + throw new Exception("OuterMessageScheduler error session does not have an AddressableRouteComponent component"); + } + + var rpcId = packInfo.RpcId; + var runtimeId = session.RuntimeId; + var response = await addressableRouteComponent.Call(messageType, packInfo); + // session可能已经断开了,所以这里需要判断 + if (session.RuntimeId == runtimeId) + { + session.Send(response, rpcId); + } + } + finally + { + if (packInfo.PackInfoId == packInfoPackInfoId) + { + packInfo.Dispose(); + } + } + + return; + } + case OpCodeType.OuterCustomRouteMessage: + { + var packInfoProtocolCode = packInfo.ProtocolCode; + var packInfoPackInfoId = packInfo.PackInfoId; + + try + { + if (!MessageDispatcherComponent.GetCustomRouteType(packInfoProtocolCode, out var routeType)) + { + throw new Exception($"OuterMessageScheduler error 可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + if (messageType == null) + { + throw new Exception($"OuterMessageScheduler error 可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + var routeComponent = session.RouteComponent; + + if (routeComponent == null) + { + throw new Exception($"OuterMessageScheduler CustomRouteType session does not have an routeComponent component messageType:{messageType.FullName} ProtocolCode:{packInfo.ProtocolCode}"); + } + + if (!routeComponent.TryGetRouteId(routeType, out var routeId)) + { + throw new Exception($"OuterMessageScheduler RouteComponent cannot find RouteId with RouteType {routeType}"); + } + + NetworkMessagingComponent.SendInnerRoute(routeId, messageType, packInfo); + } + finally + { + if (packInfo.PackInfoId == packInfoPackInfoId) + { + packInfo.Dispose(); + } + } + + return; + } + case OpCodeType.OuterCustomRouteRequest: + { + var packInfoProtocolCode = packInfo.ProtocolCode; + var packInfoPackInfoId = packInfo.PackInfoId; + + try + { + if (!MessageDispatcherComponent.GetCustomRouteType(packInfoProtocolCode, out var routeType)) + { + throw new Exception($"OuterMessageScheduler error 可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + if (messageType == null) + { + throw new Exception($"OuterMessageScheduler error 可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + var routeComponent = session.RouteComponent; + + if (routeComponent == null) + { + throw new Exception("OuterMessageScheduler CustomRouteType session does not have an routeComponent component"); + } + + if (!routeComponent.TryGetRouteId(routeType, out var routeId)) + { + throw new Exception($"OuterMessageScheduler RouteComponent cannot find RouteId with RouteType {routeType}"); + } + + var rpcId = packInfo.RpcId; + var runtimeId = session.RuntimeId; + var response = await NetworkMessagingComponent.CallInnerRoute(routeId, messageType, packInfo); + // session可能已经断开了,所以这里需要判断 + if (session.RuntimeId == runtimeId) + { + session.Send(response, rpcId); + } + } + finally + { + if (packInfo.PackInfoId == packInfoPackInfoId) + { + packInfo.Dispose(); + } + } + + return; + } + case OpCodeType.OuterRoamingMessage: + { + var packInfoProtocolCode = packInfo.ProtocolCode; + var packInfoPackInfoId = packInfo.PackInfoId; + + try + { + if (!MessageDispatcherComponent.GetCustomRouteType(packInfoProtocolCode, out var routeType)) + { + throw new Exception($"OuterMessageScheduler error 可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + if (messageType == null) + { + throw new Exception($"OuterMessageScheduler error 可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + var sessionRoamingComponent = session.SessionRoamingComponent; + + if (sessionRoamingComponent == null) + { + throw new Exception($"OuterMessageScheduler Roaming session does not have an sessionRoamingComponent component messageType:{messageType.FullName} ProtocolCode:{packInfo.ProtocolCode}"); + } + + await sessionRoamingComponent.Send(routeType, messageType, packInfo); + } + finally + { + if (packInfo.PackInfoId == packInfoPackInfoId) + { + packInfo.Dispose(); + } + } + + return; + } + case OpCodeType.OuterRoamingRequest: + { + var packInfoProtocolCode = packInfo.ProtocolCode; + var packInfoPackInfoId = packInfo.PackInfoId; + + try + { + if (!MessageDispatcherComponent.GetCustomRouteType(packInfoProtocolCode, out var routeType)) + { + throw new Exception($"OuterMessageScheduler error 可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + var messageType = MessageDispatcherComponent.GetOpCodeType(packInfo.ProtocolCode); + + if (messageType == null) + { + throw new Exception($"OuterMessageScheduler error 可能遭受到恶意发包或没有协议定义ProtocolCode ProtocolCode:{packInfo.ProtocolCode}"); + } + + var sessionRoamingComponent = session.SessionRoamingComponent; + + if (sessionRoamingComponent == null) + { + throw new Exception("OuterMessageScheduler Roaming session does not have an sessionRoamingComponent component"); + } + + var rpcId = packInfo.RpcId; + var runtimeId = session.RuntimeId; + var response = await sessionRoamingComponent.Call(routeType, messageType, packInfo); + // session可能已经断开了,所以这里需要判断 + if (session.RuntimeId == runtimeId) + { + session.Send(response, rpcId); + } + } + finally + { + if (packInfo.PackInfoId == packInfoPackInfoId) + { + packInfo.Dispose(); + } + } + + return; + } + default: + { + var ipAddress = session.IsDisposed ? "null" : session.RemoteEndPoint.ToString(); + packInfo.Dispose(); + throw new NotSupportedException($"OuterMessageScheduler Received unsupported message protocolCode:{packInfo.ProtocolCode}\n1、请检查该协议所在的程序集是否在框架初始化的时候添加到框架中。\n2、如果看到这个消息表示你有可能用的老版本的导出工具,请更换为最新的导出工具。\n IP地址:{ipAddress}"); + } + } + } + } +#endif +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Exception/ScanException.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Exception/ScanException.cs new file mode 100644 index 0000000..43c695a --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Exception/ScanException.cs @@ -0,0 +1,21 @@ +using System; + +namespace Fantasy.Network +{ + /// + /// 在扫描过程中发生的异常。 + /// + public class ScanException : Exception + { + /// + /// 初始化 类的新实例。 + /// + public ScanException() { } + + /// + /// 使用指定的错误消息初始化 类的新实例。 + /// + /// 错误消息。 + public ScanException(string msg) : base(msg) { } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/HTTP/HTTPServerNetwork.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/HTTP/HTTPServerNetwork.cs new file mode 100644 index 0000000..9ca4eba --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/HTTP/HTTPServerNetwork.cs @@ -0,0 +1,128 @@ +#if FANTASY_NET +using System.IO; +using System.Net; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using Fantasy.Assembly; +using Fantasy.Async; +using Fantasy.Network.Interface; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Server.Kestrel.Core; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; + +#pragma warning disable CS8604 // Possible null reference argument. + +// ReSharper disable PossibleMultipleEnumeration + +namespace Fantasy.Network.HTTP +{ + /// + /// HTTP服务器 + /// + public sealed class HTTPServerNetwork : ANetwork + { + /// + /// 初始化入口 + /// + /// + /// + /// + public void Initialize(NetworkTarget networkTarget, string bindIp, int port) + { + base.Initialize(NetworkType.Server, NetworkProtocolType.HTTP, networkTarget); + + try + { + StartAsync(bindIp, port); + } + catch (HttpListenerException e) + { + if (e.ErrorCode == 5) + { + var sb = new StringBuilder(); + sb.AppendLine("CMD管理员中输入下面其中一个命令,具体根据您是HTTPS或HTTP决定:"); + sb.AppendLine($"HTTP请输入如下:netsh http add urlacl url=http://{bindIp}:{port}/ user=Everyone"); + sb.AppendLine($"HTTPS请输入如下:netsh http add urlacl url=https://{bindIp}:{port}/ user=Everyone"); + throw new Exception(sb.ToString(), e); + } + + Log.Error(e); + } + catch (Exception e) + { + Log.Error(e); + } + } + + private void StartAsync(string bindIp, int port) + { + var builder = WebApplication.CreateBuilder(); + // 配置日志级别为 Warning 或更高 + builder.Logging.ClearProviders(); + builder.Logging.AddConsole(); + builder.Logging.SetMinimumLevel(LogLevel.Warning); + // 将Scene注册到 DI 容器中,传递给控制器 + builder.Services.AddSingleton(Scene); + // 注册Scene同步过滤器 + builder.Services.AddScoped(); + // 注册控制器服务 + var addControllers = builder.Services.AddControllers() + .AddJsonOptions(options => { options.JsonSerializerOptions.PropertyNamingPolicy = null; }); + foreach (var assembly in AssemblySystem.ForEachAssembly) + { + addControllers.AddApplicationPart(assembly); + } + var listenUrl = ""; + var app = builder.Build(); + // 检测当前路径下是否有证书文件 + var certificatePath = Path.Combine(AppContext.BaseDirectory, $"certificate{bindIp}{port}"); + if (Directory.Exists(certificatePath)) + { + // 加载包含证书链的 PEM 文件 + var pemCertChain = File.ReadAllText(Path.Combine(certificatePath, "chain.pem")); + var pemPrivateKey = File.ReadAllText(Path.Combine(certificatePath, "private-key.pem")); + // 配置 HTTPS 监听并使用证书 + builder.WebHost.ConfigureKestrel(kestrelServerOptions => + { + kestrelServerOptions.ConfigureHttpsDefaults(https => + { + https.ServerCertificate = X509Certificate2.CreateFromPem(pemCertChain, pemPrivateKey); + }); + }); + listenUrl = $"https://{bindIp}:{port}/"; + app.Urls.Add(listenUrl); + app.UseHttpsRedirection(); + } + else + { + // 不安全的HTTP地址 + listenUrl = $"http://{bindIp}:{port}/"; + app.Urls.Add(listenUrl); + } + // 启用开发者工具 + if (app.Environment.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + // 路由注册 + app.MapControllers(); + // 开启监听 + app.RunAsync(); + Log.Info($"SceneConfigId = {Scene.SceneConfigId} HTTPServer Listen {listenUrl}"); + } + + /// + /// 移除Channel + /// + /// + /// + public override void RemoveChannel(uint channelId) + { + throw new NotImplementedException(); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/HTTP/SceneContextFilter.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/HTTP/SceneContextFilter.cs new file mode 100644 index 0000000..2688bdc --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/HTTP/SceneContextFilter.cs @@ -0,0 +1,54 @@ +#if FANTASY_NET +using Fantasy.Async; +using Microsoft.AspNetCore.Mvc.Filters; + +namespace Fantasy.Network.HTTP; + +/// +/// 让所有实现SceneContextFilter的控制器,都在执行的Scene下执行 +/// +public sealed class SceneContextFilter : IAsyncActionFilter +{ + private readonly Scene _scene; + + /// + /// 构造函数 + /// + /// + public SceneContextFilter(Scene scene) + { + _scene = scene; + } + + /// + /// OnActionExecutionAsync + /// + /// + /// + /// + public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) + { + var tcs = FTask.Create(); + + _scene.ThreadSynchronizationContext.Post(() => + { + Action().Coroutine(); + }); + + await tcs; + return; + + async FTask Action() + { + try + { + await next(); + } + finally + { + tcs.SetResult(); + } + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/AClientNetwork.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/AClientNetwork.cs new file mode 100644 index 0000000..322c811 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/AClientNetwork.cs @@ -0,0 +1,38 @@ +using System; +using System.IO; +using Fantasy.Serialize; + +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Network.Interface +{ + /// + /// 抽象客户端网络基类。 + /// + public abstract class AClientNetwork : ANetwork, INetworkChannel + { + protected bool IsInit; + public Session Session { get; protected set; } + public abstract Session Connect(string remoteAddress, Action onConnectComplete, Action onConnectFail, Action onConnectDisconnect, bool isHttps, int connectTimeout = 5000); + public abstract void Send(uint rpcId, long routeId, MemoryStreamBuffer memoryStream, IMessage message); + public override void Dispose() + { + IsInit = false; + + if (Session != null) + { + if (!Session.IsDisposed) + { + Session.Dispose(); + } + + Session = null; + } + + base.Dispose(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/ANetwork.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/ANetwork.cs new file mode 100644 index 0000000..fdb85f2 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/ANetwork.cs @@ -0,0 +1,149 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.IO; +using Fantasy.Entitas; +using Fantasy.PacketParser; +using Fantasy.Scheduler; +using Fantasy.Serialize; + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Network.Interface +{ + /// + /// 抽象网络基类。 + /// + public abstract class ANetwork : Entity + { + private long _outerPackInfoId; + private Queue _outerPackInfoPool; + public readonly MemoryStreamBufferPool MemoryStreamBufferPool = new MemoryStreamBufferPool(); + + public NetworkType NetworkType { get; private set; } + public NetworkTarget NetworkTarget { get; private set; } + public NetworkProtocolType NetworkProtocolType { get; private set; } + public ANetworkMessageScheduler NetworkMessageScheduler { get; private set; } + + protected void Initialize(NetworkType networkType, NetworkProtocolType networkProtocolType, NetworkTarget networkTarget) + { + NetworkType = networkType; + NetworkTarget = networkTarget; + NetworkProtocolType = networkProtocolType; +#if FANTASY_NET + if (networkProtocolType == NetworkProtocolType.HTTP) + { + return; + } + if (networkTarget == NetworkTarget.Inner) + { + _innerPackInfoPool = new Queue(); + NetworkMessageScheduler = new InnerMessageScheduler(Scene); + return; + } +#endif + switch (networkType) + { + case NetworkType.Client: + { + _outerPackInfoPool = new Queue(); + NetworkMessageScheduler = new ClientMessageScheduler(Scene); + break; + } +#if FANTASY_NET + case NetworkType.Server: + { + _outerPackInfoPool = new Queue(); + NetworkMessageScheduler = new OuterMessageScheduler(Scene); + break; + } +#endif + } + } + + public abstract void RemoveChannel(uint channelId); + public OuterPackInfo RentOuterPackInfo() + { + if (_outerPackInfoPool.Count == 0) + { + return new OuterPackInfo() + { + PackInfoId = ++_outerPackInfoId + }; + } + + if (!_outerPackInfoPool.TryDequeue(out var outerPackInfo)) + { + return new OuterPackInfo() + { + PackInfoId = ++_outerPackInfoId + }; + } + + outerPackInfo.PackInfoId = ++_outerPackInfoId; + return outerPackInfo; + } + + public void ReturnOuterPackInfo(OuterPackInfo outerPackInfo) + { + if (_outerPackInfoPool.Count > 512) + { + // 池子里最多缓存256个、其实这样设置有点多了、其实用不了512个。 + // 反而设置越大内存会占用越多。 + return; + } + + _outerPackInfoPool.Enqueue(outerPackInfo); + } +#if FANTASY_NET + private long _innerPackInfoId; + private Queue _innerPackInfoPool; + public InnerPackInfo RentInnerPackInfo() + { + if (_innerPackInfoPool.Count == 0) + { + return new InnerPackInfo() + { + PackInfoId = ++_innerPackInfoId + }; + } + + if (!_innerPackInfoPool.TryDequeue(out var innerPackInfo)) + { + return new InnerPackInfo() + { + PackInfoId = ++_innerPackInfoId + }; + } + + innerPackInfo.PackInfoId = ++_innerPackInfoId; + return innerPackInfo; + } + + public void ReturnInnerPackInfo(InnerPackInfo innerPackInfo) + { + if (_innerPackInfoPool.Count > 256) + { + // 池子里最多缓存256个、其实这样设置有点多了、其实用不了256个。 + // 反而设置越大内存会占用越多。 + return; + } + + _innerPackInfoPool.Enqueue(innerPackInfo); + } +#endif + public override void Dispose() + { + NetworkType = NetworkType.None; + NetworkTarget = NetworkTarget.None; + NetworkProtocolType = NetworkProtocolType.None; + MemoryStreamBufferPool.Dispose(); + _outerPackInfoPool?.Clear(); +#if FANTASY_NET + _innerPackInfoPool?.Clear(); +#endif + base.Dispose(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/ANetworkServerChannel.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/ANetworkServerChannel.cs new file mode 100644 index 0000000..788a235 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/ANetworkServerChannel.cs @@ -0,0 +1,55 @@ +#if FANTASY_NET +using System.IO; +using System.Net; +using Fantasy.Serialize; + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Network.Interface +{ + public abstract class ANetworkServerChannel : INetworkChannel + { + /// + /// 获取通道的唯一标识 ID。 + /// + public readonly uint Id; + /// + /// 获取通道的远程终端点。 + /// + public readonly EndPoint RemoteEndPoint; + /// + /// 获取或设置通道所属的场景。 + /// + public Scene Scene { get; protected set; } + /// + /// 获取或设置通道所属的会话。 + /// + public Session Session { get; protected set; } + /// + /// 获取通道是否已经被释放。 + /// + public bool IsDisposed { get; protected set; } + + protected ANetworkServerChannel(ANetwork network, uint id, EndPoint remoteEndPoint) + { + Id = id; + Scene = network.Scene; + RemoteEndPoint = remoteEndPoint; + Session = Session.Create(network.NetworkMessageScheduler, this, network.NetworkTarget); + } + + public virtual void Dispose() + { + IsDisposed = true; + + if (!Session.IsDisposed) + { + Session.Dispose(); + } + } + + public abstract void Send(uint rpcId, long routeId, MemoryStreamBuffer memoryStream, IMessage message); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/INetworkChannel.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/INetworkChannel.cs new file mode 100644 index 0000000..52f341a --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/Interface/INetworkChannel.cs @@ -0,0 +1,14 @@ +using System; +using System.IO; +using Fantasy.Serialize; + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +namespace Fantasy.Network.Interface +{ + public interface INetworkChannel : IDisposable + { + public Session Session { get;} + public bool IsDisposed { get;} + public void Send(uint rpcId, long routeId, MemoryStreamBuffer memoryStream, IMessage message); + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/Kcp.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/Kcp.cs new file mode 100644 index 0000000..aa1947d --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/Kcp.cs @@ -0,0 +1,451 @@ +using System; +using System.Runtime.InteropServices; +using System.Threading; +using kcp; +using static kcp.KCP; + +#pragma warning disable CS8601 +#pragma warning disable CS8602 +#pragma warning disable CS8625 + +// ReSharper disable ALL + +namespace KCP +{ + /// + /// Kcp callback + /// + /// KCP output destination + /// KCP output size (excluding reserved) + public delegate void KcpCallback(byte[] buffer, int length); + + /// + /// Kcp + /// + public sealed unsafe class Kcp : IDisposable + { + /// + /// Kcp + /// + private IKCPCB* _kcp; + + /// + /// Output function + /// + private KcpCallback _output; + + /// + /// Buffer + /// + private byte[] _buffer; + + /// + /// Reserved overhead + /// + private int _reserved; + + /// + /// Disposed + /// + private int _disposed; + + /// + /// Structure + /// + /// ConversationId + /// Output + /// Reserved overhead + public Kcp(uint conv, KcpCallback output, int reserved) + { + _kcp = ikcp_create(conv, reserved, ref _buffer); + _output = output; + _reserved = reserved; + } + + /// + /// Set + /// + public bool IsSet => _kcp != null; + + /// + /// Conversation id + /// + public uint ConversationId => _kcp->conv; + + /// + /// Maximum transmission unit + /// + public uint MaximumTransmissionUnit => _kcp->mtu; + + /// + /// Maximum segment size + /// + public uint MaximumSegmentSize => _kcp->mss; + + /// + /// Connection state + /// + public uint State => _kcp->state; + + /// + /// The sequence number of the first unacknowledged packet + /// + public uint SendUna => _kcp->snd_una; + + /// + /// The sequence number for the next packet to be sent + /// + public uint SendNext => _kcp->snd_nxt; + + /// + /// The sequence number for the next packet expected to be received + /// + public uint ReceiveNext => _kcp->rcv_nxt; + + /// + /// Slow start threshold for congestion control + /// + public uint SlowStartThreshold => _kcp->ssthresh; + + /// + /// Round-trip time variance + /// + public int RxRttval => _kcp->rx_rttval; + + /// + /// Smoothed round-trip time + /// + public int RxSrtt => _kcp->rx_srtt; + + /// + /// Retransmission timeout + /// + public int RxRto => _kcp->rx_rto; + + /// + /// Minimum retransmission timeout + /// + public int RxMinrto => _kcp->rx_minrto; + + /// + /// Send window size + /// + public uint SendWindowSize => _kcp->snd_wnd; + + /// + /// Receive window size + /// + public uint ReceiveWindowSize => _kcp->rcv_wnd; + + /// + /// Remote window size + /// + public uint RemoteWindowSize => _kcp->rmt_wnd; + + /// + /// Congestion window size + /// + public uint CongestionWindowSize => _kcp->cwnd; + + /// + /// Probe variable for fast recovery + /// + public uint Probe => _kcp->probe; + + /// + /// Current timestamp + /// + public uint Current => _kcp->current; + + /// + /// Flush interval + /// + public uint Interval => _kcp->interval; + + /// + /// Timestamp for the next flush + /// + public uint TimestampFlush => _kcp->ts_flush; + + /// + /// Number of retransmissions + /// + public uint Transmissions => _kcp->xmit; + + /// + /// Number of packets in the receive buffer + /// + public uint ReceiveBufferCount => _kcp->nrcv_buf; + + /// + /// Number of packets in the receive queue + /// + public uint ReceiveQueueCount => _kcp->nrcv_que; + + /// + /// Number of packets wait to receive + /// + public uint WaitReceiveCount => _kcp->nrcv_buf + _kcp->nrcv_que; + + /// + /// Number of packets in the send buffer + /// + public uint SendBufferCount => _kcp->nsnd_buf; + + /// + /// Number of packets in the send queue + /// + public uint SendQueueCount => _kcp->nsnd_que; + + /// + /// Number of packets wait to send + /// + public uint WaitSendCount => _kcp->nsnd_buf + _kcp->nsnd_que; + + /// + /// Whether Nagle's algorithm is disabled + /// + public uint NoDelay => _kcp->nodelay; + + /// + /// Whether the KCP connection has been updated + /// + public uint Updated => _kcp->updated; + + /// + /// Timestamp for the next probe + /// + public uint TimestampProbe => _kcp->ts_probe; + + /// + /// Probe wait time + /// + public uint ProbeWait => _kcp->probe_wait; + + /// + /// Incremental increase + /// + public uint Increment => _kcp->incr; + + /// + /// Pointer to the acknowledge list + /// + public uint* AckList => _kcp->acklist; + + /// + /// Count of acknowledges + /// + public uint AckCount => _kcp->ackcount; + + /// + /// Number of acknowledge blocks + /// + public uint AckBlock => _kcp->ackblock; + + /// + /// Buffer + /// + public byte[] Buffer => _buffer; + + /// + /// Fast resend trigger count + /// + public int FastResend => _kcp->fastresend; + + /// + /// Fast resend limit + /// + public int FastResendLimit => _kcp->fastlimit; + + /// + /// Whether congestion control is disabled + /// + public int NoCongestionWindow => _kcp->nocwnd; + + /// + /// Whether stream mode is enabled + /// + public int StreamMode => _kcp->stream; + + /// + /// Output function pointer + /// + public KcpCallback Output => _output; + + /// + /// Reserved overhead + /// + public int Reserved => _reserved; + + /// + /// Dispose + /// + public void Dispose() + { + if (Interlocked.CompareExchange(ref _disposed, 1, 0) != 0) + return; + ikcp_release(_kcp); + _kcp = null; + _output = null; + _buffer = null; + GC.SuppressFinalize(this); + } + + /// + /// Set output + /// + /// Output + public void SetOutput(KcpCallback output) => _output = output; + + /// + /// Destructure + /// + ~Kcp() => Dispose(); + + /// + /// Send + /// + /// Buffer + /// Sent bytes + public int Send(ReadOnlySpan buffer) + { + fixed (byte* pinnedBuffer = &MemoryMarshal.GetReference(buffer)) + { + return ikcp_send(_kcp, pinnedBuffer, buffer.Length); + } + } + + /// + /// Send + /// + /// Buffer + /// Length + /// Sent bytes + public int Send(byte* buffer, int length) => ikcp_send(_kcp, buffer, length); + + /// + /// Input + /// + /// Buffer + /// Input bytes + public int Input(ReadOnlySpan buffer) + { + fixed (byte* pinnedBuffer = &MemoryMarshal.GetReference(buffer)) + { + return ikcp_input(_kcp, pinnedBuffer, buffer.Length); + } + } + + /// + /// Input + /// + /// Buffer + /// Length + /// Input bytes + public int Input(byte* buffer, int length) => ikcp_input(_kcp, buffer, length); + + /// + /// Peek size + /// + /// Peeked size + public int PeekSize() => ikcp_peeksize(_kcp); + + /// + /// Receive + /// + /// Buffer + /// Received bytes + public int Receive(Span buffer) + { + fixed (byte* pinnedBuffer = &MemoryMarshal.GetReference(buffer)) + { + return ikcp_recv(_kcp, pinnedBuffer, buffer.Length); + } + } + + /// + /// Receive + /// + /// Buffer + /// Length + /// Received bytes + public int Receive(byte* buffer, int length) => ikcp_recv(_kcp, buffer, length); + + /// + /// Update + /// + /// Timestamp + public void Update(uint current) + { + fixed (byte* ptr = &_buffer[_reserved]) + { + ikcp_update(_kcp, current, ptr, _buffer, _output); + } + } + + /// + /// Check + /// + /// Timestamp + /// Next flush timestamp + public uint Check(uint current) => ikcp_check(_kcp, current); + + /// + /// Flush + /// + public void Flush() + { + fixed (byte* ptr = &_buffer[_reserved]) + { + ikcp_flush(_kcp, ptr, _buffer, _output); + } + } + + /// + /// Set maximum transmission unit + /// + /// Maximum transmission unit + /// Set + public int SetMtu(int mtu) => ikcp_setmtu(_kcp, mtu, _reserved, ref _buffer); + + /// + /// Set flush interval + /// + /// Flush interval + public void SetInterval(int interval) => ikcp_interval(_kcp, interval); + + /// + /// Set no delay + /// + /// Whether Nagle's algorithm is disabled + /// Flush interval + /// Fast resend trigger count + /// No congestion window + public void SetNoDelay(int nodelay, int interval, int resend, int nc) => ikcp_nodelay(_kcp, nodelay, interval, resend, nc); + + /// + /// Set window size + /// + /// Send window size + /// Receive window size + public void SetWindowSize(int sndwnd, int rcvwnd) => ikcp_wndsize(_kcp, sndwnd, rcvwnd); + + /// + /// Set fast resend limit + /// + /// Fast resend limit + public void SetFastResendLimit(int fastlimit) => _kcp->fastlimit = Math.Clamp(fastlimit, 0, 5); + + /// + /// Set whether stream mode is enabled + /// + /// Whether stream mode is enabled + public void SetStreamMode(int stream) => _kcp->stream = stream == 1 ? 1 : 0; + + /// + /// Set minimum retransmission timeout + /// + /// Minimum retransmission timeout + public void SetMinrto(int minrto) => _kcp->rx_minrto = (int)Math.Clamp(minrto, 1, IKCP_RTO_MAX); + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/c/kcp.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/c/kcp.cs new file mode 100644 index 0000000..a202cfd --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/c/kcp.cs @@ -0,0 +1,1367 @@ +#if NET6_0_OR_GREATER +using System.Numerics; +#endif +using System.Runtime.CompilerServices; +using KCP; + +#pragma warning disable CA2211 +#pragma warning disable CS1591 +#pragma warning disable CS8602 +#pragma warning disable CS8632 + +// ReSharper disable ALL + +namespace kcp +{ + /// + /// https://github.com/skywind3000/kcp + /// + public static unsafe partial class KCP + { + //===================================================================== + // KCP BASIC + //===================================================================== + public const uint IKCP_RTO_NDL = 30; // no delay min rto + public const uint IKCP_RTO_MIN = 100; // normal min rto + public const uint IKCP_RTO_DEF = 200; + public const uint IKCP_RTO_MAX = 60000; + public const uint IKCP_CMD_PUSH = 81; // cmd: push data + public const uint IKCP_CMD_ACK = 82; // cmd: ack + public const uint IKCP_CMD_WASK = 83; // cmd: window probe (ask) + public const uint IKCP_CMD_WINS = 84; // cmd: window size (tell) + public const uint IKCP_ASK_SEND = 1; // need to send IKCP_CMD_WASK + public const uint IKCP_ASK_TELL = 2; // need to send IKCP_CMD_WINS + public const uint IKCP_WND_SND = 32; + public const uint IKCP_WND_RCV = 128; // must >= max fragment size + public const uint IKCP_MTU_DEF = 1400; + public const uint IKCP_ACK_FAST = 3; + public const uint IKCP_INTERVAL = 100; + public const uint IKCP_OVERHEAD = 24; + public const uint IKCP_DEADLINK = 20; + public const uint IKCP_THRESH_INIT = 2; + public const uint IKCP_THRESH_MIN = 2; + public const uint IKCP_PROBE_INIT = 7000; // 7 secs to probe window size + public const uint IKCP_PROBE_LIMIT = 120000; // up to 120 secs to probe window + public const uint IKCP_FASTACK_LIMIT = 5; // max times to trigger fastack + + //--------------------------------------------------------------------- + // encode / decode + //--------------------------------------------------------------------- + + /* encode 8 bits unsigned int */ + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static byte* ikcp_encode8u(byte* p, byte c) + { + *(byte*)p++ = c; + return p; + } + + /* decode 8 bits unsigned int */ + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static byte* ikcp_decode8u(byte* p, byte* c) + { + *c = *(byte*)p++; + return p; + } + + /* encode 16 bits unsigned int (lsb) */ + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static byte* ikcp_encode16u(byte* p, ushort w) + { +#if IWORDS_BIG_ENDIAN || IWORDS_MUST_ALIGN + *(byte*)(p + 0) = (byte)(w & 255); + *(byte*)(p + 1) = (byte)(w >> 8); +#else + memcpy(p, &w, (nuint)2); +#endif + p += 2; + return p; + } + + /* decode 16 bits unsigned int (lsb) */ + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static byte* ikcp_decode16u(byte* p, ushort* w) + { +#if IWORDS_BIG_ENDIAN || IWORDS_MUST_ALIGN + *w = *(byte*)(p + 1); + *w = (ushort)(*(byte*)(p + 0) + (*w << 8)); +#else + memcpy(w, p, (nuint)2); +#endif + p += 2; + return p; + } + + /* encode 32 bits unsigned int (lsb) */ + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static byte* ikcp_encode32u(byte* p, uint l) + { +#if IWORDS_BIG_ENDIAN || IWORDS_MUST_ALIGN + *(byte*)(p + 0) = (byte)((l >> 0) & 0xff); + *(byte*)(p + 1) = (byte)((l >> 8) & 0xff); + *(byte*)(p + 2) = (byte)((l >> 16) & 0xff); + *(byte*)(p + 3) = (byte)((l >> 24) & 0xff); +#else + memcpy(p, &l, (nuint)4); +#endif + p += 4; + return p; + } + + /* decode 32 bits unsigned int (lsb) */ + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static byte* ikcp_decode32u(byte* p, uint* l) + { +#if IWORDS_BIG_ENDIAN || IWORDS_MUST_ALIGN + *l = *(byte*)(p + 3); + *l = *(byte*)(p + 2) + (*l << 8); + *l = *(byte*)(p + 1) + (*l << 8); + *l = *(byte*)(p + 0) + (*l << 8); +#else + memcpy(l, p, (nuint)4); +#endif + p += 4; + return p; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint _imin_(uint a, uint b) + { + return a <= b ? a : b; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint _imax_(uint a, uint b) + { + return a >= b ? a : b; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint _ibound_(uint lower, uint middle, uint upper) + { + return _imin_(_imax_(lower, middle), upper); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint _iceilpow2_(uint x) + { +#if NET6_0_OR_GREATER + return BitOperations.RoundUpToPowerOf2(x); +#else + --x; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + ++x; + return x; +#endif + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long _itimediff(uint later, uint earlier) + { + return ((int)(later - earlier)); + } + + //--------------------------------------------------------------------- + // manage segment + //--------------------------------------------------------------------- + public static delegate* managed ikcp_malloc_hook = null; + public static delegate* managed ikcp_free_hook = null; + + // internal malloc + public static void* ikcp_malloc(nuint size) + { + if (ikcp_malloc_hook != null) + return ikcp_malloc_hook(size); + return malloc(size); + } + + // internal free + public static void ikcp_free(void* ptr) + { + if (ikcp_free_hook != null) + { + ikcp_free_hook(ptr); + } + else + { + free(ptr); + } + } + + // redefine allocator + public static void ikcp_allocator(delegate* managed new_malloc, delegate* managed new_free) + { + ikcp_malloc_hook = new_malloc; + ikcp_free_hook = new_free; + } + + // allocate a new kcp segment + public static IKCPSEG* ikcp_segment_new(IKCPCB* kcp, int size) + { + return (IKCPSEG*)ikcp_malloc((nuint)(sizeof(IKCPSEG) + size)); + } + + // delete a segment + public static void ikcp_segment_delete(IKCPCB* kcp, IKCPSEG* seg) + { + ikcp_free(seg); + } + + // output segment + public static void ikcp_output(IKCPCB* kcp, int size, byte[] destination, KcpCallback output) + { + assert(kcp != null); + assert(output != null); + + if (size == 0) return; + output(destination, size); + } + + //--------------------------------------------------------------------- + // create a new kcpcb + //--------------------------------------------------------------------- + public static IKCPCB* ikcp_create(uint conv, int reserved, ref byte[] buffer) + { + IKCPCB* kcp = (IKCPCB*)ikcp_malloc((nuint)sizeof(IKCPCB)); + if (kcp == null) return null; + kcp->conv = conv; + kcp->snd_una = 0; + kcp->snd_nxt = 0; + kcp->rcv_nxt = 0; + kcp->ts_recent = 0; + kcp->ts_lastack = 0; + kcp->ts_probe = 0; + kcp->probe_wait = 0; + kcp->snd_wnd = IKCP_WND_SND; + kcp->rcv_wnd = IKCP_WND_RCV; + kcp->rmt_wnd = IKCP_WND_RCV; + kcp->cwnd = 0; + kcp->incr = 0; + kcp->probe = 0; + kcp->mtu = IKCP_MTU_DEF; + kcp->mss = kcp->mtu - IKCP_OVERHEAD; + kcp->stream = 0; + + buffer = new byte[(reserved + kcp->mtu + IKCP_OVERHEAD) * 3]; + + iqueue_init(&kcp->snd_queue); + iqueue_init(&kcp->rcv_queue); + iqueue_init(&kcp->snd_buf); + iqueue_init(&kcp->rcv_buf); + kcp->nrcv_buf = 0; + kcp->nsnd_buf = 0; + kcp->nrcv_que = 0; + kcp->nsnd_que = 0; + kcp->state = 0; + kcp->acklist = null; + kcp->ackblock = 0; + kcp->ackcount = 0; + kcp->rx_srtt = 0; + kcp->rx_rttval = 0; + kcp->rx_rto = (int)IKCP_RTO_DEF; + kcp->rx_minrto = (int)IKCP_RTO_MIN; + kcp->current = 0; + kcp->interval = IKCP_INTERVAL; + kcp->ts_flush = IKCP_INTERVAL; + kcp->nodelay = 0; + kcp->updated = 0; + kcp->ssthresh = IKCP_THRESH_INIT; + kcp->fastresend = 0; + kcp->fastlimit = (int)IKCP_FASTACK_LIMIT; + kcp->nocwnd = 0; + kcp->xmit = 0; + kcp->dead_link = IKCP_DEADLINK; + + return kcp; + } + + //--------------------------------------------------------------------- + // release a new kcpcb + //--------------------------------------------------------------------- + public static void ikcp_release(IKCPCB* kcp) + { + assert(kcp != null); + if (kcp != null) + { + IKCPSEG* seg; + while (!iqueue_is_empty(&kcp->snd_buf)) + { + seg = iqueue_entry(kcp->snd_buf.next); + iqueue_del(&seg->node); + ikcp_segment_delete(kcp, seg); + } + + while (!iqueue_is_empty(&kcp->rcv_buf)) + { + seg = iqueue_entry(kcp->rcv_buf.next); + iqueue_del(&seg->node); + ikcp_segment_delete(kcp, seg); + } + + while (!iqueue_is_empty(&kcp->snd_queue)) + { + seg = iqueue_entry(kcp->snd_queue.next); + iqueue_del(&seg->node); + ikcp_segment_delete(kcp, seg); + } + + while (!iqueue_is_empty(&kcp->rcv_queue)) + { + seg = iqueue_entry(kcp->rcv_queue.next); + iqueue_del(&seg->node); + ikcp_segment_delete(kcp, seg); + } + + if (kcp->acklist != null) + { + ikcp_free(kcp->acklist); + } + + kcp->nrcv_buf = 0; + kcp->nsnd_buf = 0; + kcp->nrcv_que = 0; + kcp->nsnd_que = 0; + kcp->ackcount = 0; + kcp->acklist = null; + ikcp_free(kcp); + } + } + + //--------------------------------------------------------------------- + // user/upper level recv: returns size, returns below zero for EAGAIN + //--------------------------------------------------------------------- + public static int ikcp_recv(IKCPCB* kcp, byte* buffer, int len) + { + IQUEUEHEAD* p; + int ispeek = (len < 0) ? 1 : 0; + int peeksize; + int recover = 0; + IKCPSEG* seg; + assert(kcp != null); + + if (iqueue_is_empty(&kcp->rcv_queue)) + return -1; + + if (len < 0) len = -len; + + peeksize = ikcp_peeksize(kcp); + + if (peeksize < 0) + return -2; + + if (peeksize > len) + return -3; + + if (kcp->nrcv_que >= kcp->rcv_wnd) + recover = 1; + + // merge fragment + for (len = 0, p = kcp->rcv_queue.next; p != &kcp->rcv_queue;) + { + int fragment; + seg = iqueue_entry(p); + p = p->next; + + if (buffer != null) + { + memcpy(buffer, seg->data, (nuint)seg->len); + buffer += seg->len; + } + + len += (int)seg->len; + fragment = (int)seg->frg; + + if (ispeek == 0) + { + iqueue_del(&seg->node); + ikcp_segment_delete(kcp, seg); + kcp->nrcv_que--; + } + + if (fragment == 0) + break; + } + + assert(len == peeksize); + + // move available data from rcv_buf -> rcv_queue + while (!iqueue_is_empty(&kcp->rcv_buf)) + { + seg = iqueue_entry(kcp->rcv_buf.next); + if (seg->sn == kcp->rcv_nxt && kcp->nrcv_que < kcp->rcv_wnd) + { + iqueue_del(&seg->node); + kcp->nrcv_buf--; + iqueue_add_tail(&seg->node, &kcp->rcv_queue); + kcp->nrcv_que++; + kcp->rcv_nxt++; + } + else + { + break; + } + } + + // fast recover + if (kcp->nrcv_que < kcp->rcv_wnd && (recover != 0)) + { + // ready to send back IKCP_CMD_WINS in ikcp_flush + // tell remote my window size + kcp->probe |= IKCP_ASK_TELL; + } + + return len; + } + + //--------------------------------------------------------------------- + // peek data size + //--------------------------------------------------------------------- + public static int ikcp_peeksize(IKCPCB* kcp) + { + IQUEUEHEAD* p; + IKCPSEG* seg; + int length = 0; + + assert(kcp != null); + + if (iqueue_is_empty(&kcp->rcv_queue)) return -1; + + seg = iqueue_entry(kcp->rcv_queue.next); + if (seg->frg == 0) return (int)seg->len; + + if (kcp->nrcv_que < seg->frg + 1) return -1; + + for (p = kcp->rcv_queue.next; p != &kcp->rcv_queue; p = p->next) + { + seg = iqueue_entry(p); + length += (int)seg->len; + if (seg->frg == 0) break; + } + + return length; + } + + //--------------------------------------------------------------------- + // user/upper level send, returns below zero for error + //--------------------------------------------------------------------- + public static int ikcp_send(IKCPCB* kcp, byte* buffer, int len) + { + IKCPSEG* seg; + int count, i; + int sent = 0; + + assert(kcp->mss > 0); + if (len < 0) return -1; + + // append to previous segment in streaming mode (if possible) + if (kcp->stream != 0) + { + if (!iqueue_is_empty(&kcp->snd_queue)) + { + IKCPSEG* old = iqueue_entry(kcp->snd_queue.prev); + if (old->len < kcp->mss) + { + int capacity = (int)(kcp->mss - old->len); + int extend = (len < capacity) ? len : capacity; + seg = ikcp_segment_new(kcp, (int)(old->len + extend)); + assert(seg != null); + if (seg == null) + { + return -2; + } + + iqueue_add_tail(&seg->node, &kcp->snd_queue); + memcpy(seg->data, old->data, (nuint)old->len); + if (buffer != null) + { + memcpy(seg->data + old->len, buffer, (nuint)extend); + buffer += extend; + } + + seg->len = (uint)(old->len + extend); + seg->frg = 0; + len -= extend; + iqueue_del_init(&old->node); + ikcp_segment_delete(kcp, old); + sent = extend; + } + } + + if (len <= 0) + { + return sent; + } + } + + if (len <= (int)kcp->mss) count = 1; + else count = (int)((len + kcp->mss - 1) / kcp->mss); + + if (kcp->stream == 0 && count > 255) return -2; + + if (count >= (int)kcp->rcv_wnd) + { + if (kcp->stream != 0 && sent > 0) + return sent; + return -2; + } + + if (count == 0) count = 1; + + // fragment + for (i = 0; i < count; i++) + { + int size = len > (int)kcp->mss ? (int)kcp->mss : len; + seg = ikcp_segment_new(kcp, size); + assert(seg != null); + if (seg == null) + { + return -2; + } + + if ((buffer != null) && len > 0) + { + memcpy(seg->data, buffer, (nuint)size); + } + + seg->len = (uint)size; + seg->frg = (uint)((kcp->stream == 0) ? (count - i - 1) : 0); + iqueue_init(&seg->node); + iqueue_add_tail(&seg->node, &kcp->snd_queue); + kcp->nsnd_que++; + if (buffer != null) + { + buffer += size; + } + + len -= size; + sent += size; + } + + return sent; + } + + //--------------------------------------------------------------------- + // parse ack + //--------------------------------------------------------------------- + public static void ikcp_update_ack(IKCPCB* kcp, int rtt) + { + int rto = 0; + if (kcp->rx_srtt == 0) + { + kcp->rx_srtt = rtt; + kcp->rx_rttval = rtt / 2; + } + else + { + long delta = rtt - kcp->rx_srtt; + if (delta < 0) delta = -delta; + kcp->rx_rttval = (int)((3 * kcp->rx_rttval + delta) / 4); + kcp->rx_srtt = (7 * kcp->rx_srtt + rtt) / 8; + if (kcp->rx_srtt < 1) kcp->rx_srtt = 1; + } + + rto = (int)(kcp->rx_srtt + _imax_(kcp->interval, (uint)(4 * kcp->rx_rttval))); + kcp->rx_rto = (int)_ibound_((uint)kcp->rx_minrto, (uint)rto, IKCP_RTO_MAX); + } + + public static void ikcp_shrink_buf(IKCPCB* kcp) + { + IQUEUEHEAD* p = kcp->snd_buf.next; + if (p != &kcp->snd_buf) + { + IKCPSEG* seg = iqueue_entry(p); + kcp->snd_una = seg->sn; + } + else + { + kcp->snd_una = kcp->snd_nxt; + } + } + + public static void ikcp_parse_ack(IKCPCB* kcp, uint sn) + { + IQUEUEHEAD* p, next; + + if (_itimediff(sn, kcp->snd_una) < 0 || _itimediff(sn, kcp->snd_nxt) >= 0) + return; + + for (p = kcp->snd_buf.next; p != &kcp->snd_buf; p = next) + { + IKCPSEG* seg = iqueue_entry(p); + next = p->next; + if (sn == seg->sn) + { + iqueue_del(p); + ikcp_segment_delete(kcp, seg); + kcp->nsnd_buf--; + break; + } + + if (_itimediff(sn, seg->sn) < 0) + { + break; + } + } + } + + public static void ikcp_parse_una(IKCPCB* kcp, uint una) + { + IQUEUEHEAD* p, next; + for (p = kcp->snd_buf.next; p != &kcp->snd_buf; p = next) + { + IKCPSEG* seg = iqueue_entry(p); + next = p->next; + if (_itimediff(una, seg->sn) > 0) + { + iqueue_del(p); + ikcp_segment_delete(kcp, seg); + kcp->nsnd_buf--; + } + else + { + break; + } + } + } + + public static void ikcp_parse_fastack(IKCPCB* kcp, uint sn, uint ts) + { + IQUEUEHEAD* p, next; + + if (_itimediff(sn, kcp->snd_una) < 0 || _itimediff(sn, kcp->snd_nxt) >= 0) + return; + + for (p = kcp->snd_buf.next; p != &kcp->snd_buf; p = next) + { + IKCPSEG* seg = iqueue_entry(p); + next = p->next; + if (_itimediff(sn, seg->sn) < 0) + { + break; + } + else if (sn != seg->sn) + { +#if !IKCP_FASTACK_CONSERVE + seg->fastack++; +#else + if (_itimediff(ts, seg->ts) >= 0) + seg->fastack++; +#endif + } + } + } + + //--------------------------------------------------------------------- + // ack append + //--------------------------------------------------------------------- + public static void ikcp_ack_push(IKCPCB* kcp, uint sn, uint ts) + { + uint newsize = kcp->ackcount + 1; + uint* ptr; + + if (newsize > kcp->ackblock) + { + uint* acklist; + uint newblock; + + newblock = newsize <= 8 ? 8 : _iceilpow2_(newsize); + acklist = (uint*)ikcp_malloc((nuint)(newblock * sizeof(uint) * 2)); + + if (acklist == null) + { + assert(acklist != null); + abort(); + } + + if (kcp->acklist != null) + { + uint x; + for (x = 0; x < kcp->ackcount; x++) + { + acklist[x * 2 + 0] = kcp->acklist[x * 2 + 0]; + acklist[x * 2 + 1] = kcp->acklist[x * 2 + 1]; + } + + ikcp_free(kcp->acklist); + } + + kcp->acklist = acklist; + kcp->ackblock = newblock; + } + + ptr = &kcp->acklist[kcp->ackcount * 2]; + ptr[0] = sn; + ptr[1] = ts; + kcp->ackcount++; + } + + public static void ikcp_ack_get(IKCPCB* kcp, int p, uint* sn, uint* ts) + { + if (sn != null) sn[0] = kcp->acklist[p * 2 + 0]; + if (ts != null) ts[0] = kcp->acklist[p * 2 + 1]; + } + + //--------------------------------------------------------------------- + // parse data + //--------------------------------------------------------------------- + public static void ikcp_parse_data(IKCPCB* kcp, IKCPSEG* newseg) + { + IQUEUEHEAD* p, prev; + uint sn = newseg->sn; + int repeat = 0; + + if (_itimediff(sn, kcp->rcv_nxt + kcp->rcv_wnd) >= 0 || + _itimediff(sn, kcp->rcv_nxt) < 0) + { + ikcp_segment_delete(kcp, newseg); + return; + } + + for (p = kcp->rcv_buf.prev; p != &kcp->rcv_buf; p = prev) + { + IKCPSEG* seg = iqueue_entry(p); + prev = p->prev; + if (seg->sn == sn) + { + repeat = 1; + break; + } + + if (_itimediff(sn, seg->sn) > 0) + { + break; + } + } + + if (repeat == 0) + { + iqueue_init(&newseg->node); + iqueue_add(&newseg->node, p); + kcp->nrcv_buf++; + } + else + { + ikcp_segment_delete(kcp, newseg); + } + + // move available data from rcv_buf -> rcv_queue + while (!iqueue_is_empty(&kcp->rcv_buf)) + { + IKCPSEG* seg = iqueue_entry(kcp->rcv_buf.next); + if (seg->sn == kcp->rcv_nxt && kcp->nrcv_que < kcp->rcv_wnd) + { + iqueue_del(&seg->node); + kcp->nrcv_buf--; + iqueue_add_tail(&seg->node, &kcp->rcv_queue); + kcp->nrcv_que++; + kcp->rcv_nxt++; + } + else + { + break; + } + } + } + + //--------------------------------------------------------------------- + // input data + //--------------------------------------------------------------------- + public static int ikcp_input(IKCPCB* kcp, byte* data, long size) + { + uint prev_una = kcp->snd_una; + uint maxack = 0, latest_ts = 0; + int flag = 0; + + if (data == null || (int)size < (int)IKCP_OVERHEAD) return -1; + + while (true) + { + uint ts, sn, len, una, conv; + ushort wnd; + byte cmd, frg; + IKCPSEG* seg; + + if (size < (int)IKCP_OVERHEAD) break; + + data = ikcp_decode32u(data, &conv); + if (conv != kcp->conv) return -1; + + data = ikcp_decode8u(data, &cmd); + data = ikcp_decode8u(data, &frg); + data = ikcp_decode16u(data, &wnd); + data = ikcp_decode32u(data, &ts); + data = ikcp_decode32u(data, &sn); + data = ikcp_decode32u(data, &una); + data = ikcp_decode32u(data, &len); + + size -= IKCP_OVERHEAD; + + if ((long)size < (long)len || (int)len < 0) return -2; + + if (cmd != IKCP_CMD_PUSH && cmd != IKCP_CMD_ACK && + cmd != IKCP_CMD_WASK && cmd != IKCP_CMD_WINS) + return -3; + + kcp->rmt_wnd = wnd; + ikcp_parse_una(kcp, una); + ikcp_shrink_buf(kcp); + + if (cmd == IKCP_CMD_ACK) + { + if (_itimediff(kcp->current, ts) >= 0) + { + ikcp_update_ack(kcp, (int)_itimediff(kcp->current, ts)); + } + + ikcp_parse_ack(kcp, sn); + ikcp_shrink_buf(kcp); + if (flag == 0) + { + flag = 1; + maxack = sn; + latest_ts = ts; + } + else + { + if (_itimediff(sn, maxack) > 0) + { +#if !IKCP_FASTACK_CONSERVE + maxack = sn; + latest_ts = ts; +#else + if (_itimediff(ts, latest_ts) > 0) + { + maxack = sn; + latest_ts = ts; + } +#endif + } + } + } + else if (cmd == IKCP_CMD_PUSH) + { + if (_itimediff(sn, kcp->rcv_nxt + kcp->rcv_wnd) < 0) + { + ikcp_ack_push(kcp, sn, ts); + if (_itimediff(sn, kcp->rcv_nxt) >= 0) + { + seg = ikcp_segment_new(kcp, (int)len); + seg->conv = conv; + seg->cmd = cmd; + seg->frg = frg; + seg->wnd = wnd; + seg->ts = ts; + seg->sn = sn; + seg->una = una; + seg->len = len; + + if (len > 0) + { + memcpy(seg->data, data, (nuint)len); + } + + ikcp_parse_data(kcp, seg); + } + } + } + else if (cmd == IKCP_CMD_WASK) + { + // ready to send back IKCP_CMD_WINS in ikcp_flush + // tell remote my window size + kcp->probe |= IKCP_ASK_TELL; + } + else if (cmd == IKCP_CMD_WINS) + { + // do nothing + } + else + { + return -3; + } + + data += len; + size -= len; + } + + if (flag != 0) + { + ikcp_parse_fastack(kcp, maxack, latest_ts); + } + + if (_itimediff(kcp->snd_una, prev_una) > 0) + { + if (kcp->cwnd < kcp->rmt_wnd) + { + uint mss = kcp->mss; + if (kcp->cwnd < kcp->ssthresh) + { + kcp->cwnd++; + kcp->incr += mss; + } + else + { + if (kcp->incr < mss) kcp->incr = mss; + kcp->incr += (mss * mss) / kcp->incr + (mss / 16); + if ((kcp->cwnd + 1) * mss <= kcp->incr) + { + kcp->cwnd = (kcp->incr + mss - 1) / ((mss > 0) ? mss : 1); + } + } + + if (kcp->cwnd > kcp->rmt_wnd) + { + kcp->cwnd = kcp->rmt_wnd; + kcp->incr = kcp->rmt_wnd * mss; + } + } + } + + return 0; + } + + //--------------------------------------------------------------------- + // ikcp_encode_seg + //--------------------------------------------------------------------- + public static byte* ikcp_encode_seg(byte* ptr, IKCPSEG* seg) + { + ptr = ikcp_encode32u(ptr, seg->conv); + ptr = ikcp_encode8u(ptr, (byte)seg->cmd); + ptr = ikcp_encode8u(ptr, (byte)seg->frg); + ptr = ikcp_encode16u(ptr, (ushort)seg->wnd); + ptr = ikcp_encode32u(ptr, seg->ts); + ptr = ikcp_encode32u(ptr, seg->sn); + ptr = ikcp_encode32u(ptr, seg->una); + ptr = ikcp_encode32u(ptr, seg->len); + return ptr; + } + + public static int ikcp_wnd_unused(IKCPCB* kcp) + { + if (kcp->nrcv_que < kcp->rcv_wnd) + { + return (int)(kcp->rcv_wnd - kcp->nrcv_que); + } + + return 0; + } + + //--------------------------------------------------------------------- + // ikcp_flush + //--------------------------------------------------------------------- + public static void ikcp_flush(IKCPCB* kcp, byte* buffer, byte[] destination, KcpCallback output) + { + uint current = kcp->current; + byte* ptr = buffer; + int count, size, i; + uint resent, cwnd; + uint rtomin; + IQUEUEHEAD* p; + int change = 0; + int lost = 0; + IKCPSEG seg; + + // 'ikcp_update' haven't been called. + if (kcp->updated == 0) return; + + seg.conv = kcp->conv; + seg.cmd = IKCP_CMD_ACK; + seg.frg = 0; + seg.wnd = (uint)ikcp_wnd_unused(kcp); + seg.una = kcp->rcv_nxt; + seg.len = 0; + seg.sn = 0; + seg.ts = 0; + + // flush acknowledges + count = (int)kcp->ackcount; + for (i = 0; i < count; i++) + { + size = (int)(ptr - buffer); + if (size + (int)IKCP_OVERHEAD > (int)kcp->mtu) + { + ikcp_output(kcp, size, destination, output); + ptr = buffer; + } + + ikcp_ack_get(kcp, i, &seg.sn, &seg.ts); + ptr = ikcp_encode_seg(ptr, &seg); + } + + kcp->ackcount = 0; + + // probe window size (if remote window size equals zero) + if (kcp->rmt_wnd == 0) + { + if (kcp->probe_wait == 0) + { + kcp->probe_wait = IKCP_PROBE_INIT; + kcp->ts_probe = kcp->current + kcp->probe_wait; + } + else + { + if (_itimediff(kcp->current, kcp->ts_probe) >= 0) + { + if (kcp->probe_wait < IKCP_PROBE_INIT) + kcp->probe_wait = IKCP_PROBE_INIT; + kcp->probe_wait += kcp->probe_wait / 2; + if (kcp->probe_wait > IKCP_PROBE_LIMIT) + kcp->probe_wait = IKCP_PROBE_LIMIT; + kcp->ts_probe = kcp->current + kcp->probe_wait; + kcp->probe |= IKCP_ASK_SEND; + } + } + } + else + { + kcp->ts_probe = 0; + kcp->probe_wait = 0; + } + + // flush window probing commands + if ((kcp->probe & IKCP_ASK_SEND) != 0) + { + seg.cmd = IKCP_CMD_WASK; + size = (int)(ptr - buffer); + if (size + (int)IKCP_OVERHEAD > (int)kcp->mtu) + { + ikcp_output(kcp, size, destination, output); + ptr = buffer; + } + + ptr = ikcp_encode_seg(ptr, &seg); + } + + // flush window probing commands + if ((kcp->probe & IKCP_ASK_TELL) != 0) + { + seg.cmd = IKCP_CMD_WINS; + size = (int)(ptr - buffer); + if (size + (int)IKCP_OVERHEAD > (int)kcp->mtu) + { + ikcp_output(kcp, size, destination, output); + ptr = buffer; + } + + ptr = ikcp_encode_seg(ptr, &seg); + } + + kcp->probe = 0; + + // calculate window size + cwnd = _imin_(kcp->snd_wnd, kcp->rmt_wnd); + if (kcp->nocwnd == 0) cwnd = _imin_(kcp->cwnd, cwnd); + + // move data from snd_queue to snd_buf + while (_itimediff(kcp->snd_nxt, kcp->snd_una + cwnd) < 0) + { + IKCPSEG* newseg; + if (iqueue_is_empty(&kcp->snd_queue)) break; + + newseg = iqueue_entry(kcp->snd_queue.next); + + iqueue_del(&newseg->node); + iqueue_add_tail(&newseg->node, &kcp->snd_buf); + kcp->nsnd_que--; + kcp->nsnd_buf++; + + newseg->conv = kcp->conv; + newseg->cmd = IKCP_CMD_PUSH; + newseg->wnd = seg.wnd; + newseg->ts = current; + newseg->sn = kcp->snd_nxt++; + newseg->una = kcp->rcv_nxt; + newseg->resendts = current; + newseg->rto = (uint)kcp->rx_rto; + newseg->fastack = 0; + newseg->xmit = 0; + } + + // calculate resent + resent = (kcp->fastresend > 0) ? (uint)kcp->fastresend : 0xffffffff; + rtomin = (uint)((kcp->nodelay == 0) ? (kcp->rx_rto >> 3) : 0); + + // flush data segments + for (p = kcp->snd_buf.next; p != &kcp->snd_buf; p = p->next) + { + IKCPSEG* segment = iqueue_entry(p); + int needsend = 0; + if (segment->xmit == 0) + { + needsend = 1; + segment->xmit++; + segment->rto = (uint)kcp->rx_rto; + segment->resendts = current + segment->rto + rtomin; + } + else if (_itimediff(current, segment->resendts) >= 0) + { + needsend = 1; + segment->xmit++; + kcp->xmit++; + if (kcp->nodelay == 0) + { + segment->rto += _imax_(segment->rto, (uint)kcp->rx_rto); + } + else + { + int step = (kcp->nodelay < 2) ? ((int)(segment->rto)) : kcp->rx_rto; + segment->rto += (uint)(step / 2); + } + + segment->resendts = current + segment->rto; + lost = 1; + } + else if (segment->fastack >= resent) + { + if ((int)segment->xmit <= kcp->fastlimit || + kcp->fastlimit <= 0) + { + needsend = 1; + segment->xmit++; + segment->fastack = 0; + segment->resendts = current + segment->rto; + change++; + } + } + + if (needsend != 0) + { + int need; + segment->ts = current; + segment->wnd = seg.wnd; + segment->una = kcp->rcv_nxt; + + size = (int)(ptr - buffer); + need = (int)(IKCP_OVERHEAD + segment->len); + + if (size + need > (int)kcp->mtu) + { + ikcp_output(kcp, size, destination, output); + ptr = buffer; + } + + ptr = ikcp_encode_seg(ptr, segment); + + if (segment->len > 0) + { + memcpy(ptr, segment->data, (nuint)segment->len); + ptr += segment->len; + } + + if (segment->xmit >= kcp->dead_link) + { + kcp->state = unchecked((uint)(-1)); + } + } + } + + // flash remain segments + size = (int)(ptr - buffer); + if (size > 0) + { + ikcp_output(kcp, size, destination, output); + } + + // update ssthresh + if (change != 0) + { + uint inflight = kcp->snd_nxt - kcp->snd_una; + kcp->ssthresh = inflight / 2; + if (kcp->ssthresh < IKCP_THRESH_MIN) + kcp->ssthresh = IKCP_THRESH_MIN; + kcp->cwnd = kcp->ssthresh + resent; + kcp->incr = kcp->cwnd * kcp->mss; + } + + if (lost != 0) + { + kcp->ssthresh = cwnd / 2; + if (kcp->ssthresh < IKCP_THRESH_MIN) + kcp->ssthresh = IKCP_THRESH_MIN; + kcp->cwnd = 1; + kcp->incr = kcp->mss; + } + + if (kcp->cwnd < 1) + { + kcp->cwnd = 1; + kcp->incr = kcp->mss; + } + } + + public static void ikcp_update(IKCPCB* kcp, uint current, byte* buffer, byte[] destination, KcpCallback output) + { + int slap; + + kcp->current = current; + + if (kcp->updated == 0) + { + kcp->updated = 1; + kcp->ts_flush = kcp->current; + } + + slap = (int)_itimediff(kcp->current, kcp->ts_flush); + + if (slap >= 10000 || slap < -10000) + { + kcp->ts_flush = kcp->current; + slap = 0; + } + + if (slap >= 0) + { + kcp->ts_flush += kcp->interval; + if (_itimediff(kcp->current, kcp->ts_flush) >= 0) + { + kcp->ts_flush = kcp->current + kcp->interval; + } + + ikcp_flush(kcp, buffer, destination, output); + } + } + + //--------------------------------------------------------------------- + // Determine when should you invoke ikcp_update: + // returns when you should invoke ikcp_update in millisec, if there + // is no ikcp_input/_send calling. you can call ikcp_update in that + // time, instead of call update repeatly. + // Important to reduce unnacessary ikcp_update invoking. use it to + // schedule ikcp_update (eg. implementing an epoll-like mechanism, + // or optimize ikcp_update when handling massive kcp connections) + //--------------------------------------------------------------------- + public static uint ikcp_check(IKCPCB* kcp, uint current) + { + uint ts_flush = kcp->ts_flush; + int tm_flush = 0x7fffffff; + int tm_packet = 0x7fffffff; + uint minimal = 0; + IQUEUEHEAD* p; + + if (kcp->updated == 0) + { + return current; + } + + if (_itimediff(current, ts_flush) >= 10000 || + _itimediff(current, ts_flush) < -10000) + { + ts_flush = current; + } + + if (_itimediff(current, ts_flush) >= 0) + { + return current; + } + + tm_flush = (int)_itimediff(ts_flush, current); + + for (p = kcp->snd_buf.next; p != &kcp->snd_buf; p = p->next) + { + IKCPSEG* seg = iqueue_entry(p); + int diff = (int)_itimediff(seg->resendts, current); + if (diff <= 0) + { + return current; + } + + if (diff < tm_packet) tm_packet = diff; + } + + minimal = (uint)(tm_packet < tm_flush ? tm_packet : tm_flush); + if (minimal >= kcp->interval) minimal = kcp->interval; + + return current + minimal; + } + + public static int ikcp_setmtu(IKCPCB* kcp, int mtu, int reserved, ref byte[] buffer) + { + if (mtu < 50 || mtu < (int)IKCP_OVERHEAD) + return -1; + buffer = new byte[(reserved + mtu + IKCP_OVERHEAD) * 3]; + if (buffer == null) + return -2; + kcp->mtu = (uint)mtu; + kcp->mss = kcp->mtu - IKCP_OVERHEAD; + return 0; + } + + public static int ikcp_interval(IKCPCB* kcp, int interval) + { + if (interval > 5000) interval = 5000; + else if (interval < 10) interval = 10; + kcp->interval = (uint)interval; + return 0; + } + + public static int ikcp_nodelay(IKCPCB* kcp, int nodelay, int interval, int resend, int nc) + { + if (nodelay >= 0) + { + kcp->nodelay = (uint)nodelay; + if (nodelay != 0) + { + kcp->rx_minrto = (int)IKCP_RTO_NDL; + } + else + { + kcp->rx_minrto = (int)IKCP_RTO_MIN; + } + } + + if (interval >= 0) + { + if (interval > 5000) interval = 5000; + else if (interval < 10) interval = 10; + kcp->interval = (uint)interval; + } + + if (resend >= 0) + { + kcp->fastresend = resend; + } + + if (nc >= 0) + { + kcp->nocwnd = nc; + } + + return 0; + } + + public static int ikcp_wndsize(IKCPCB* kcp, int sndwnd, int rcvwnd) + { + if (kcp != null) + { + if (sndwnd > 0) + { + kcp->snd_wnd = (uint)sndwnd; + } + + if (rcvwnd > 0) + { + // must >= max fragment size + kcp->rcv_wnd = _imax_((uint)rcvwnd, IKCP_WND_RCV); + } + } + + return 0; + } + + public static int ikcp_waitsnd(IKCPCB* kcp) + { + return (int)(kcp->nsnd_buf + kcp->nsnd_que); + } + + // read conv + public static uint ikcp_getconv(void* ptr) + { + uint conv; + ikcp_decode32u((byte*)ptr, &conv); + return conv; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/define/system.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/define/system.cs new file mode 100644 index 0000000..053b8c5 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/define/system.cs @@ -0,0 +1,41 @@ +using System; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +#pragma warning disable CS1591 + +// ReSharper disable ALL + +namespace kcp +{ + public static unsafe partial class KCP + { + public static void* malloc(nuint size) + { +#if NET6_0_OR_GREATER + return NativeMemory.Alloc((nuint)size); +#else + return (void*)Marshal.AllocHGlobal((nint)size); +#endif + } + + public static void free(void* memory) + { +#if NET6_0_OR_GREATER + NativeMemory.Free(memory); +#else + Marshal.FreeHGlobal((nint)memory); +#endif + } + + public static void memcpy(void* dst, void* src, nuint size) => Unsafe.CopyBlockUnaligned(dst, src, (uint)size); + + public static void memset(void* dst, byte val, nuint size) => Unsafe.InitBlockUnaligned(dst, val, (uint)size); + + [Conditional("DEBUG")] + public static void assert(bool condition) => Debug.Assert(condition); + + public static void abort() => Environment.Exit(-1); + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/include/kcp.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/include/kcp.cs new file mode 100644 index 0000000..98a83d9 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Base/include/kcp.cs @@ -0,0 +1,127 @@ +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +#pragma warning disable CS1591 + +// ReSharper disable ALL + +namespace kcp +{ + [StructLayout(LayoutKind.Sequential)] + public unsafe struct IQUEUEHEAD + { + public IQUEUEHEAD* next; + public IQUEUEHEAD* prev; + } + + public static unsafe partial class KCP + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void iqueue_init(IQUEUEHEAD* head) + { + head->next = head; + head->prev = head; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static T* iqueue_entry(IQUEUEHEAD* ptr) where T : unmanaged => ((T*)(((byte*)((T*)ptr)))); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void iqueue_add(IQUEUEHEAD* node, IQUEUEHEAD* head) + { + node->prev = head; + node->next = head->next; + head->next->prev = node; + head->next = node; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void iqueue_add_tail(IQUEUEHEAD* node, IQUEUEHEAD* head) + { + node->prev = head->prev; + node->next = head; + head->prev->next = node; + head->prev = node; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void iqueue_del(IQUEUEHEAD* entry) + { + entry->next->prev = entry->prev; + entry->prev->next = entry->next; + entry->next = (IQUEUEHEAD*)0; + entry->prev = (IQUEUEHEAD*)0; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void iqueue_del_init(IQUEUEHEAD* entry) + { + iqueue_del(entry); + iqueue_init(entry); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool iqueue_is_empty(IQUEUEHEAD* entry) => entry == entry->next; + } + + [StructLayout(LayoutKind.Sequential)] + public unsafe struct IKCPSEG + { + public IQUEUEHEAD node; + public uint conv; + public uint cmd; + public uint frg; + public uint wnd; + public uint ts; + public uint sn; + public uint una; + public uint len; + public uint resendts; + public uint rto; + public uint fastack; + public uint xmit; + public fixed byte data[1]; + } + + [StructLayout(LayoutKind.Sequential)] + public unsafe struct IKCPCB + { + public uint conv, mtu, mss, state; + public uint snd_una, snd_nxt, rcv_nxt; + public uint ts_recent, ts_lastack, ssthresh; + public int rx_rttval, rx_srtt, rx_rto, rx_minrto; + public uint snd_wnd, rcv_wnd, rmt_wnd, cwnd, probe; + public uint current, interval, ts_flush, xmit; + public uint nrcv_buf, nsnd_buf; + public uint nrcv_que, nsnd_que; + public uint nodelay, updated; + public uint ts_probe, probe_wait; + public uint dead_link, incr; + public IQUEUEHEAD snd_queue; + public IQUEUEHEAD rcv_queue; + public IQUEUEHEAD snd_buf; + public IQUEUEHEAD rcv_buf; + public uint* acklist; + public uint ackcount; + public uint ackblock; + public int fastresend; + public int fastlimit; + public int nocwnd, stream; + } + + public static partial class KCP + { + public const uint IKCP_LOG_OUTPUT = 1; + public const uint IKCP_LOG_INPUT = 2; + public const uint IKCP_LOG_SEND = 4; + public const uint IKCP_LOG_RECV = 8; + public const uint IKCP_LOG_IN_DATA = 16; + public const uint IKCP_LOG_IN_ACK = 32; + public const uint IKCP_LOG_IN_PROBE = 64; + public const uint IKCP_LOG_IN_WINS = 128; + public const uint IKCP_LOG_OUT_DATA = 256; + public const uint IKCP_LOG_OUT_ACK = 512; + public const uint IKCP_LOG_OUT_PROBE = 1024; + public const uint IKCP_LOG_OUT_WINS = 2048; + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Client/KCPClientNetwork.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Client/KCPClientNetwork.cs new file mode 100644 index 0000000..a400c34 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Client/KCPClientNetwork.cs @@ -0,0 +1,697 @@ +#if !FANTASY_WEBGL +using System; +using System.Buffers; +using System.Collections.Generic; +using System.IO; +using System.IO.Pipelines; +using System.Net; +using System.Net.Sockets; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Security.Cryptography; +using System.Threading; +using Fantasy.Async; +using Fantasy.Entitas.Interface; +using Fantasy.Helper; +using Fantasy.Network.Interface; +using Fantasy.PacketParser; +using Fantasy.Serialize; +using KCP; +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +// ReSharper disable PossibleNullReferenceException +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +#pragma warning disable CS8622 // Nullability of reference types in type of parameter doesn't match the target delegate (possibly because of nullability attributes). + +#pragma warning disable CS8602 // Dereference of a possibly null reference. +namespace Fantasy.Network.KCP +{ + public sealed class KCPClientNetworkUpdateSystem : UpdateSystem + { + protected override void Update(KCPClientNetwork self) + { + self.CheckUpdate(); + } + } + public sealed class KCPClientNetwork : AClientNetwork + { + private Kcp _kcp; + private Socket _socket; + private int _maxSndWnd; + private long _startTime; + private bool _isConnected; + private bool _isDisconnect; + private uint _updateMinTime; + private bool _isInnerDispose; + private long _connectTimeoutId; + private bool _allowWraparound = true; + private IPEndPoint _remoteAddress; + private BufferPacketParser _packetParser; + private readonly Pipe _pipe = new Pipe(); + private readonly byte[] _sendBuff = new byte[5]; + private readonly byte[] _receiveBuffer = new byte[Packet.PacketBodyMaxLength + 20]; + private readonly List _updateTimeOutTime = new List(); + private readonly SortedSet _updateTimer = new SortedSet(); + private readonly SocketAsyncEventArgs _connectEventArgs = new SocketAsyncEventArgs(); + private readonly Queue _messageCache = new Queue(); + private readonly CancellationTokenSource _cancellationTokenSource = new CancellationTokenSource(); +#if FANTASY_UNITY + private readonly EndPoint _ipEndPoint = new IPEndPoint(IPAddress.Any, 0); +#endif + private event Action OnConnectFail; + private event Action OnConnectComplete; + private event Action OnConnectDisconnect; + public uint ChannelId { get; private set; } + private uint TimeNow => (uint) (TimeHelper.Now - _startTime); + + public void Initialize(NetworkTarget networkTarget) + { + base.Initialize(NetworkType.Client, NetworkProtocolType.KCP, networkTarget); + _packetParser = PacketParserFactory.CreateClientBufferPacket(this); + } + + public override void Dispose() + { + if (IsDisposed || _isInnerDispose) + { + return; + } + + try + { + _isInnerDispose = true; + + if (!_isDisconnect) + { + SendDisconnect(); + } + + ClearConnectTimeout(); + + if (!_cancellationTokenSource.IsCancellationRequested) + { + try + { + _cancellationTokenSource.Cancel(); + } + catch (OperationCanceledException) + { + // 通常情况下,此处的异常可以忽略 + } + } + + OnConnectDisconnect?.Invoke(); + _kcp.Dispose(); + + if (_socket.Connected) + { + _socket.Close(); + } + + _packetParser.Dispose(); + ChannelId = 0; + _isConnected = false; + _messageCache.Clear(); + } + catch (Exception e) + { + Log.Error(e); + } + finally + { + base.Dispose(); + } + } + + #region Connect + + public override Session Connect(string remoteAddress, Action onConnectComplete, Action onConnectFail, Action onConnectDisconnect, bool isHttps, int connectTimeout = 5000) + { + if (IsInit) + { + throw new NotSupportedException($"KCPClientNetwork Has already been initialized. If you want to call Connect again, please re instantiate it."); + } + + IsInit = true; + _startTime = TimeHelper.Now; + ChannelId = CreateChannelId(); + _remoteAddress = NetworkHelper.GetIPEndPoint(remoteAddress); + OnConnectFail = onConnectFail; + OnConnectComplete = onConnectComplete; + OnConnectDisconnect = onConnectDisconnect; + _connectEventArgs.Completed += OnConnectSocketCompleted; + _connectTimeoutId = Scene.TimerComponent.Net.OnceTimer(connectTimeout, () => + { + OnConnectFail?.Invoke(); + Dispose(); + }); + _connectEventArgs.RemoteEndPoint = _remoteAddress; + _socket = new Socket(_remoteAddress.AddressFamily, SocketType.Dgram, ProtocolType.Udp); + _socket.Blocking = false; + _socket.SetSocketBufferToOsLimit(); + _socket.SetSioUdpConnReset(); + _socket.Bind(new IPEndPoint(IPAddress.Any, 0)); + _kcp = KCPFactory.Create(NetworkTarget, ChannelId, KcpSpanCallback, out var kcpSettings); + _maxSndWnd = kcpSettings.MaxSendWindowSize; + + if (!_socket.ConnectAsync(_connectEventArgs)) + { + try + { + OnReceiveSocketComplete(); + } + catch (Exception e) + { + Log.Error(e); + OnConnectFail?.Invoke(); + } + } + + Session = Session.Create(this, _remoteAddress); + return Session; + } + + private void OnConnectSocketCompleted(object sender, SocketAsyncEventArgs asyncEventArgs) + { + if (_cancellationTokenSource.IsCancellationRequested) + { + return; + } + + if (asyncEventArgs.LastOperation == SocketAsyncOperation.Connect) + { + if (asyncEventArgs.SocketError == SocketError.Success) + { + Scene.ThreadSynchronizationContext.Post(OnReceiveSocketComplete); + } + else + { + Scene.ThreadSynchronizationContext.Post(() => + { + OnConnectFail?.Invoke(); + Dispose(); + }); + } + } + } + + private void OnReceiveSocketComplete() + { + SendRequestConnection(); + ReadPipeDataAsync().Coroutine(); + ReceiveSocketAsync().Coroutine(); + } + + #endregion + + #region ReceiveSocket + + private async FTask ReceiveSocketAsync() + { + while (!_cancellationTokenSource.IsCancellationRequested) + { + try + { + var memory = _pipe.Writer.GetMemory(8192); +#if FANTASY_UNITY + MemoryMarshal.TryGetArray(memory, out ArraySegment arraySegment); + var result = await _socket.ReceiveFromAsync(arraySegment, SocketFlags.None, _ipEndPoint); + _pipe.Writer.Advance(result.ReceivedBytes); + await _pipe.Writer.FlushAsync(); +#else + var result = await _socket.ReceiveAsync(memory, SocketFlags.None, _cancellationTokenSource.Token); + _pipe.Writer.Advance(result); + await _pipe.Writer.FlushAsync(); +#endif + } + catch (SocketException) + { + Dispose(); + break; + } + catch (OperationCanceledException) + { + break; + } + catch (ObjectDisposedException) + { + Dispose(); + break; + } + catch (Exception ex) + { + Log.Error($"Unexpected exception: {ex.Message}"); + } + } + + await _pipe.Writer.CompleteAsync(); + } + + #endregion + + #region ReceivePipeData + + private async FTask ReadPipeDataAsync() + { + var pipeReader = _pipe.Reader; + while (!_cancellationTokenSource.IsCancellationRequested) + { + ReadResult result = default; + + try + { + result = await pipeReader.ReadAsync(_cancellationTokenSource.Token); + } + catch (OperationCanceledException) + { + // 出现这个异常表示取消了_cancellationTokenSource。一般Channel断开会取消。 + break; + } + + var buffer = result.Buffer; + var consumed = buffer.Start; + var examined = buffer.End; + + while (TryReadMessage(ref buffer, out var header, out var channelId, out var message)) + { + ReceiveData(ref header, ref channelId, ref message); + consumed = buffer.Start; + } + + if (result.IsCompleted) + { + break; + } + + pipeReader.AdvanceTo(consumed, examined); + } + } + + private unsafe bool TryReadMessage(ref ReadOnlySequence buffer, out KcpHeader header, out uint channelId, out ReadOnlyMemory message) + { + if (buffer.Length < 5) + { + channelId = 0; + message = default; + header = KcpHeader.None; + if (buffer.Length > 0) + { + buffer = buffer.Slice(buffer.Length); + } + return false; + } + + var readOnlyMemory = buffer.First; + + if (MemoryMarshal.TryGetArray(readOnlyMemory, out var arraySegment)) + { + fixed (byte* bytePointer = &arraySegment.Array[arraySegment.Offset]) + { + header = (KcpHeader)bytePointer[0]; + channelId = Unsafe.ReadUnaligned(ref bytePointer[1]); + } + } + else + { + // 如果无法获取数组段,回退到安全代码来执行。这种情况几乎不会发生、为了保险还是写一下了。 + var firstSpan = readOnlyMemory.Span; + header = (KcpHeader)firstSpan[0]; + channelId = MemoryMarshal.Read(firstSpan.Slice(1, 4)); + + } + + message = readOnlyMemory.Slice(5); + buffer = buffer.Slice(readOnlyMemory.Length); + return true; + } + + private void ReceiveData(ref KcpHeader header, ref uint channelId, ref ReadOnlyMemory buffer) + { + switch (header) + { + // 发送握手给服务器 + case KcpHeader.RepeatChannelId: + { + // 到这里是客户端的channelId再服务器上已经存在、需要重新生成一个再次尝试连接 + ChannelId = CreateChannelId(); + SendRequestConnection(); + break; + } + // 收到服务器发送会来的确认握手 + case KcpHeader.WaitConfirmConnection: + { + if (channelId != ChannelId) + { + break; + } + + ClearConnectTimeout(); + SendConfirmConnection(); + OnConnectComplete?.Invoke(); + _isConnected = true; + while (_messageCache.TryDequeue(out var memoryStream)) + { + SendMemoryStream(memoryStream); + } + break; + } + // 收到服务器发送的消息 + case KcpHeader.ReceiveData: + { + if (buffer.Length == 5) + { + Log.Warning($"KCP Server KcpHeader.Data buffer.Length == 5"); + break; + } + + if (channelId != ChannelId) + { + break; + } + + Input(buffer); + break; + } + // 接收到服务器的断开连接消息 + case KcpHeader.Disconnect: + { + if (channelId != ChannelId) + { + break; + } + + _isDisconnect = true; + Dispose(); + break; + } + } + } + + private void Input(ReadOnlyMemory buffer) + { + _kcp.Input(buffer.Span); + AddToUpdate(0); + + while (!_cancellationTokenSource.IsCancellationRequested) + { + try + { + var peekSize = _kcp.PeekSize(); + + if (peekSize < 0) + { + return; + } + + var receiveCount = _kcp.Receive(_receiveBuffer.AsSpan(0, peekSize)); + + if (receiveCount != peekSize) + { + return; + } + + if (!_packetParser.UnPack(_receiveBuffer, ref receiveCount, out var packInfo)) + { + continue; + } + + Session.Receive(packInfo); + } + catch (ScanException e) + { + Log.Debug($"RemoteAddress:{_remoteAddress} \n{e}"); + Dispose(); + } + catch (Exception e) + { + Log.Error(e); + } + } + } + + #endregion + + #region Update + + public void CheckUpdate() + { + var nowTime = TimeNow; + _allowWraparound = nowTime < _updateMinTime; + + if (IsTimeGreaterThan(nowTime, _updateMinTime) && _updateTimer.Count > 0) + { + foreach (var timeId in _updateTimer) + { + if (IsTimeGreaterThan(timeId, nowTime)) + { + _updateMinTime = timeId; + break; + } + + _updateTimeOutTime.Add(timeId); + } + + foreach (var timeId in _updateTimeOutTime) + { + _updateTimer.Remove(timeId); + KcpUpdate(); + } + + _updateTimeOutTime.Clear(); + } + + _allowWraparound = true; + } + + private void AddToUpdate(uint tillTime) + { + if (tillTime == 0) + { + KcpUpdate(); + return; + } + + if (IsTimeGreaterThan(_updateMinTime, tillTime) || _updateMinTime == 0) + { + _updateMinTime = tillTime; + } + + _updateTimer.Add(tillTime); + } + + private void KcpUpdate() + { + var nowTime = TimeNow; + + try + { + _kcp.Update(nowTime); + } + catch (Exception e) + { + Log.Error(e); + } + + AddToUpdate(_kcp.Check(nowTime)); + } + + private const uint HalfMaxUint = uint.MaxValue / 2; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private bool IsTimeGreaterThan(uint timeId, uint nowTime) + { + if (!_allowWraparound) + { + return timeId > nowTime; + } + var diff = timeId - nowTime; + // 如果 diff 的值在 [0, HalfMaxUint] 范围内,说明 timeId 是在 nowTime 之后或相等。 + // 如果 diff 的值在 (HalfMaxUint, uint.MaxValue] 范围内,说明 timeId 是在 nowTime 之前(时间回绕的情况)。 + return diff < HalfMaxUint || diff == HalfMaxUint; + } + + #endregion + + #region Send + + private const byte KcpHeaderDisconnect = (byte)KcpHeader.Disconnect; + private const byte KcpHeaderReceiveData = (byte)KcpHeader.ReceiveData; + private const byte KcpHeaderRequestConnection = (byte)KcpHeader.RequestConnection; + private const byte KcpHeaderConfirmConnection = (byte)KcpHeader.ConfirmConnection; + + public override void Send(uint rpcId, long routeId, MemoryStreamBuffer memoryStream, IMessage message) + { + if (_cancellationTokenSource.IsCancellationRequested) + { + return; + } + + var buffer = _packetParser.Pack(ref rpcId, ref routeId, memoryStream, message); + + if (!_isConnected) + { + _messageCache.Enqueue(buffer); + return; + } + + SendMemoryStream(buffer); + } + + private void SendMemoryStream(MemoryStreamBuffer memoryStream) + { + if (_kcp.WaitSendCount > _maxSndWnd) + { + // 检查等待发送的消息,如果超出两倍窗口大小,KCP作者给的建议是要断开连接 + Log.Warning($"ERR_KcpWaitSendSizeTooLarge {_kcp.WaitSendCount} > {_maxSndWnd}"); + Dispose(); + return; + } + + try + { + _kcp.Send(memoryStream.GetBuffer().AsSpan(0, (int)memoryStream.Position)); + AddToUpdate(0); + } + finally + { + if (memoryStream.MemoryStreamBufferSource == MemoryStreamBufferSource.Pack) + { + MemoryStreamBufferPool.ReturnMemoryStream(memoryStream); + } + } + } + + private unsafe void SendRequestConnection() + { + try + { + fixed (byte* p = _sendBuff) + { + p[0] = KcpHeaderRequestConnection; + *(uint*)(p + 1) = ChannelId; + } + + SendAsync(_sendBuff, 0, 5); + } + catch (Exception e) + { + Log.Error(e); + } + } + + private unsafe void SendConfirmConnection() + { + try + { + fixed (byte* p = _sendBuff) + { + p[0] = KcpHeaderConfirmConnection; + *(uint*)(p + 1) = ChannelId; + } + + SendAsync(_sendBuff, 0, 5); + } + catch (Exception e) + { + Log.Error(e); + } + } + + private unsafe void SendDisconnect() + { + try + { + fixed (byte* p = _sendBuff) + { + p[0] = KcpHeaderDisconnect; + *(uint*)(p + 1) = ChannelId; + } + + SendAsync(_sendBuff, 0, 5); + } + catch (Exception e) + { + Log.Error(e); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private void SendAsync(byte[] buffer, int offset, int count) + { + try + { + _socket.Send(new ArraySegment(buffer, offset, count), SocketFlags.None); + } + catch (ArgumentException ex) + { + Log.Error($"ArgumentException: {ex.Message}"); // 处理参数错误 + } + catch (SocketException) + { + //Log.Error($"SocketException: {ex.Message}"); // 处理网络错误 + Dispose(); + } + catch (ObjectDisposedException ex) + { + Log.Error($"ObjectDisposedException: {ex.Message}"); // 处理套接字已关闭的情况 + Dispose(); + } + catch (InvalidOperationException ex) + { + Log.Error($"InvalidOperationException: {ex.Message}"); // 处理无效操作 + } + catch (Exception ex) + { + Log.Error($"Exception: {ex.Message}"); // 捕获其他异常 + } + } + + private unsafe void KcpSpanCallback(byte[] buffer, int count) + { + if (IsDisposed) + { + return; + } + + if (count == 0) + { + throw new Exception("KcpOutput count 0"); + } + + fixed (byte* p = buffer) + { + p[0] = KcpHeaderReceiveData; + *(uint*)(p + 1) = ChannelId; + } + + SendAsync(buffer, 0, count + 5); + } + + #endregion + + public override void RemoveChannel(uint channelId) + { + Dispose(); + } + + private void ClearConnectTimeout() + { + if (_connectTimeoutId == 0) + { + return; + } + + Scene?.TimerComponent?.Net.Remove(ref _connectTimeoutId); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static unsafe uint CreateChannelId() + { + uint value; + RandomNumberGenerator.Fill(MemoryMarshal.CreateSpan(ref *(byte*)&value, 4)); + return 0xC0000000 | (value & int.MaxValue); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/KCPSettings.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/KCPSettings.cs new file mode 100644 index 0000000..2a070a9 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/KCPSettings.cs @@ -0,0 +1,91 @@ +#if !FANTASY_WEBGL +using System; +using KCP; + +#pragma warning disable CS1591 +namespace Fantasy.Network.KCP +{ + public class KCPSettings + { + public int Mtu { get; private set; } + public int SendWindowSize { get; private set; } + public int ReceiveWindowSize { get; private set; } + public int MaxSendWindowSize { get; private set; } + + public static KCPSettings Create(NetworkTarget networkTarget) + { + var settings = new KCPSettings(); + + switch (networkTarget) + { + case NetworkTarget.Outer: + { + // 外网设置470的原因: + // 1、mtu设置过大有可能路由器过滤掉 + // 2、降低 mtu 到 470,同样数据虽然会发更多的包,但是小包在路由层优先级更高 + settings.Mtu = 470; +#if FANTASY_NET + settings.SendWindowSize = 8192; + settings.ReceiveWindowSize = 8192; + settings.MaxSendWindowSize = 8192 * 8192 * 7; +#endif +#if FANTASY_UNITY || FANTASY_CONSOLE + settings.SendWindowSize = 512; + settings.ReceiveWindowSize = 512; + settings.MaxSendWindowSize = 512 * 512 * 7; +#endif + + break; + } +#if FANTASY_NET + case NetworkTarget.Inner: + { + // 内网设置1400的原因 + // 1、一般都是同一台服务器来运行多个进程来处理 + // 2、内网每个进程跟其他进程只有一个通道进行发送、所以发送的数量会比较大 + // 3、如果不把窗口设置大点、会出现消息滞后。 + // 4、因为内网发送的可不只是外网转发数据、还有可能是其他进程的通讯 + settings.Mtu = 1200; + settings.SendWindowSize = 8192; + settings.ReceiveWindowSize = 8192; + settings.MaxSendWindowSize = 8192 * 8192 * 7; + break; + } +#endif + default: + { + throw new NotSupportedException($"KCPServerNetwork NotSupported NetworkType:{networkTarget}"); + } + } + + return settings; + } + } + + public static class KCPFactory + { + public const int FANTASY_KCP_RESERVED_HEAD = 5; + + public static Kcp Create(NetworkTarget networkTarget, uint conv, KcpCallback output, out KCPSettings kcpSettings) + { + var kcp = new Kcp(conv, output, FANTASY_KCP_RESERVED_HEAD); + kcpSettings = KCPSettings.Create(networkTarget); + kcp.SetNoDelay(1, 5, 2, 1); + kcp.SetWindowSize(kcpSettings.SendWindowSize, kcpSettings.ReceiveWindowSize); + kcp.SetMtu(kcpSettings.Mtu); + kcp.SetMinrto(30); + return kcp; + } + + public static Kcp Create(KCPSettings kcpSettings, uint conv, KcpCallback output) + { + var kcp = new Kcp(conv, output, FANTASY_KCP_RESERVED_HEAD); + kcp.SetNoDelay(1, 5, 2, 1); + kcp.SetWindowSize(kcpSettings.SendWindowSize, kcpSettings.ReceiveWindowSize); + kcp.SetMtu(kcpSettings.Mtu); + kcp.SetMinrto(30); + return kcp; + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/KcpHeader.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/KcpHeader.cs new file mode 100644 index 0000000..28ddace --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/KcpHeader.cs @@ -0,0 +1,14 @@ +namespace Fantasy.Network.KCP +#pragma warning disable CS1591 +{ + public enum KcpHeader : byte + { + None = 0x00, + RequestConnection = 0x01, + WaitConfirmConnection = 0x02, + ConfirmConnection = 0x03, + RepeatChannelId = 0x04, + ReceiveData = 0x06, + Disconnect = 0x07 + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Server/KCPServerNetworkByArrayPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Server/KCPServerNetworkByArrayPool.cs new file mode 100644 index 0000000..0fb4e29 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Server/KCPServerNetworkByArrayPool.cs @@ -0,0 +1,575 @@ +// #if FANTASY_NET +// using System.Buffers; +// using System.Net; +// using System.Net.Sockets; +// using System.Runtime.CompilerServices; +// using System.Runtime.InteropServices; +// using Fantasy.Async; +// using Fantasy.DataStructure.Collection; +// using Fantasy.Entitas.Interface; +// using Fantasy.Helper; +// using Fantasy.Network.Interface; +// #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +// +// // ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +// #pragma warning disable CS8604 // Possible null reference argument. +// #pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +// #pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +// #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +// #pragma warning disable CS8602 // Dereference of a possibly null reference. +// +// #pragma warning disable CS8622 // Nullability of reference types in type of parameter doesn't match the target delegate (possibly because of nullability attributes). +// +// namespace Fantasy.Network.KCP +// { +// public sealed class KCPServerNetworkUpdateSystem : UpdateSystem +// { +// protected override void Update(KCPServerNetwork self) +// { +// self.Update(); +// } +// } +// +// public struct PendingConnection +// { +// public readonly uint ChannelId; +// public readonly uint TimeOutId; +// public readonly IPEndPoint RemoteEndPoint; +// +// public PendingConnection(uint channelId, IPEndPoint remoteEndPoint, uint time) +// { +// ChannelId = channelId; +// RemoteEndPoint = remoteEndPoint; +// TimeOutId = time + 10 * 1000; // 设置10秒超时,如果10秒内没有确认连接则删除。 +// } +// } +// +// public sealed class KCPServerNetwork : ANetwork +// { +// private Socket _socket; +// private Thread _thread; +// private long _startTime; +// private uint _updateMinTime; +// private uint _pendingMinTime; +// private bool _allowWraparound = true; +// +// private readonly byte[] _sendBuff = new byte[5]; +// private readonly List _pendingTimeOutTime = new List(); +// private readonly HashSet _updateChannels = new HashSet(); +// private readonly List _updateTimeOutTime = new List(); +// private readonly CancellationTokenSource _cancellationTokenSource = new CancellationTokenSource(); +// private readonly SortedOneToManyList _updateTimer = new SortedOneToManyList(); +// +// private readonly Dictionary _pendingConnection = new Dictionary(); +// private readonly SortedOneToManyList _pendingConnectionTimeOut = new SortedOneToManyList(); +// private readonly Dictionary _connectionChannel = new Dictionary(); +// +// public KCPSettings Settings { get; private set; } +// +// private uint TimeNow => (uint)(TimeHelper.Now - _startTime); +// +// public void Initialize(NetworkTarget networkTarget, IPEndPoint address) +// { +// _startTime = TimeHelper.Now; +// Settings = KCPSettings.Create(networkTarget); +// base.Initialize(NetworkType.Server, NetworkProtocolType.KCP, networkTarget); +// _socket = new Socket(address.AddressFamily, SocketType.Dgram, ProtocolType.Udp); +// _socket.Blocking = false; +// _socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, false); +// if (address.AddressFamily == AddressFamily.InterNetworkV6) +// { +// _socket.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, false); +// } +// +// _socket.Blocking = false; +// _socket.Bind(address); +// _socket.SetSocketBufferToOsLimit(); +// _socket.SetSioUdpConnReset(); +// _thread = new Thread(() => +// { +// ReceiveSocketAsync().Coroutine(); +// }); +// _thread.Start(); +// Log.Info($"SceneConfigId = {Scene.SceneConfigId} networkTarget = {networkTarget.ToString()} KCPServer Listen {address}"); +// } +// +// public override void Dispose() +// { +// if (IsDisposed) +// { +// return; +// } +// +// try +// { +// if (!_cancellationTokenSource.IsCancellationRequested) +// { +// try +// { +// _cancellationTokenSource.Cancel(); +// } +// catch (OperationCanceledException) +// { +// // 通常情况下,此处的异常可以忽略 +// } +// } +// +// foreach (var (_, channel) in _connectionChannel.ToArray()) +// { +// channel.Dispose(); +// } +// +// _connectionChannel.Clear(); +// _pendingConnection.Clear(); +// +// if (_socket != null) +// { +// _socket.Dispose(); +// _socket = null; +// } +// } +// catch (Exception e) +// { +// Log.Error(e); +// } +// finally +// { +// base.Dispose(); +// } +// } +// +// #region ReceiveSocket +// +// private const int BufferSize = 8192; +// private static readonly ArrayPool BufferPool = ArrayPool.Shared; +// private async FTask ReceiveSocketAsync() +// { +// var sceneThreadSynchronizationContext = Scene.ThreadSynchronizationContext; +// var remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); +// +// while (!_cancellationTokenSource.IsCancellationRequested) +// { +// try +// { +// IPEndPoint receiveRemoteEndPoint = null; +// var buffer = BufferPool.Rent(BufferSize); +// var socketReceiveFromResult = await _socket.ReceiveFromAsync(buffer, SocketFlags.None, remoteEndPoint, _cancellationTokenSource.Token); +// var receivedBytes = socketReceiveFromResult.ReceivedBytes; +// +// switch (receivedBytes) +// { +// case 5: +// { +// switch ((KcpHeader)buffer[0]) +// { +// case KcpHeader.RequestConnection: +// case KcpHeader.ConfirmConnection: +// { +// receiveRemoteEndPoint = socketReceiveFromResult.RemoteEndPoint.Clone(); +// break; +// } +// } +// +// break; +// } +// case < 5: +// { +// continue; +// } +// } +// +// sceneThreadSynchronizationContext.Post(() => +// { +// ReceiveDataAsync(buffer, receivedBytes, receiveRemoteEndPoint); +// }); +// } +// catch (SocketException ex) +// { +// Log.Error($"Socket exception: {ex.Message}"); +// Dispose(); +// break; +// } +// catch (OperationCanceledException) +// { +// break; +// } +// catch (ObjectDisposedException) +// { +// Dispose(); +// break; +// } +// catch (Exception ex) +// { +// Log.Error($"Unexpected exception: {ex.Message}"); +// } +// } +// } +// +// #endregion +// +// #region ReceivePipeData +// +// private void ReceiveDataAsync(byte[] buffer, int receivedBytes, IPEndPoint remoteEndPoint) +// { +// try +// { +// var header = (KcpHeader)buffer[0]; +// var channelId = BitConverter.ToUInt32(buffer, 1); +// +// switch (header) +// { +// // 客户端请求建立KCP连接 +// case KcpHeader.RequestConnection: +// { +// if (_pendingConnection.TryGetValue(channelId, out var pendingConnection)) +// { +// if (!remoteEndPoint.IPEndPointEquals(pendingConnection.RemoteEndPoint)) +// { +// // 重复通道ID,向客户端发送重复通道ID消息 +// SendRepeatChannelId(ref channelId, remoteEndPoint); +// } +// +// break; +// } +// +// if (_connectionChannel.ContainsKey(channelId)) +// { +// // 已存在的通道ID,向客户端发送重复通道ID消息 +// SendRepeatChannelId(ref channelId, remoteEndPoint); +// break; +// } +// +// AddPendingConnection(ref channelId, remoteEndPoint); +// break; +// } +// // 客户端确认建立KCP连接 +// case KcpHeader.ConfirmConnection: +// { +// if (!ConfirmPendingConnection(ref channelId, remoteEndPoint)) +// { +// break; +// } +// +// AddConnection(ref channelId, remoteEndPoint); +// break; +// } +// // 接收KCP的数据 +// case KcpHeader.ReceiveData: +// { +// if (buffer.Length == 5) +// { +// Log.Warning($"KCP Server KcpHeader.Data buffer.Length == 5"); +// break; +// } +// +// if (_connectionChannel.TryGetValue(channelId, out var channel)) +// { +// channel.Input(buffer.AsMemory().Slice(5, receivedBytes - 5)); +// } +// +// break; +// } +// // 断开KCP连接 +// case KcpHeader.Disconnect: +// { +// // 断开不需要清楚PendingConnection让ClearPendingConnection自动清楚就可以了,并且不一定有Pending。 +// RemoveChannel(channelId); +// break; +// } +// } +// } +// finally +// { +// BufferPool.Return(buffer); +// } +// } +// +// #endregion +// +// #region Update +// +// public void Update() +// { +// var timeNow = TimeNow; +// _allowWraparound = timeNow < _updateMinTime; +// CheckUpdateTimerOut(ref timeNow); +// UpdateChannel(ref timeNow); +// PendingTimerOut(ref timeNow); +// _allowWraparound = true; +// } +// +// private void CheckUpdateTimerOut(ref uint nowTime) +// { +// if (_updateTimer.Count == 0) +// { +// return; +// } +// +// if (IsTimeGreaterThan(_updateMinTime, nowTime)) +// { +// return; +// } +// +// _updateTimeOutTime.Clear(); +// +// foreach (var kv in _updateTimer) +// { +// var timeId = kv.Key; +// +// if (IsTimeGreaterThan(timeId, nowTime)) +// { +// _updateMinTime = timeId; +// break; +// } +// +// _updateTimeOutTime.Add(timeId); +// } +// +// foreach (var timeId in _updateTimeOutTime) +// { +// foreach (var channelId in _updateTimer[timeId]) +// { +// _updateChannels.Add(channelId); +// } +// +// _updateTimer.RemoveKey(timeId); +// } +// } +// +// private void UpdateChannel(ref uint timeNow) +// { +// foreach (var channelId in _updateChannels) +// { +// if (!_connectionChannel.TryGetValue(channelId, out var channel)) +// { +// continue; +// } +// +// if (channel.IsDisposed) +// { +// _connectionChannel.Remove(channelId); +// continue; +// } +// +// channel.Kcp.Update(timeNow); +// AddUpdateChannel(channelId, channel.Kcp.Check(timeNow)); +// } +// +// _updateChannels.Clear(); +// } +// +// private void PendingTimerOut(ref uint timeNow) +// { +// if (_pendingConnectionTimeOut.Count == 0) +// { +// return; +// } +// +// if (IsTimeGreaterThan(_pendingMinTime, timeNow)) +// { +// return; +// } +// +// _pendingTimeOutTime.Clear(); +// +// foreach (var kv in _pendingConnectionTimeOut) +// { +// var timeId = kv.Key; +// +// if (IsTimeGreaterThan(timeId, timeNow)) +// { +// _pendingMinTime = timeId; +// break; +// } +// +// _pendingTimeOutTime.Add(timeId); +// } +// +// foreach (var timeId in _pendingTimeOutTime) +// { +// foreach (var channelId in _pendingConnectionTimeOut[timeId]) +// { +// _pendingConnection.Remove(channelId); +// } +// +// _pendingConnectionTimeOut.RemoveKey(timeId); +// } +// } +// +// public void AddUpdateChannel(uint channelId, uint tillTime) +// { +// if (tillTime == 0) +// { +// _updateChannels.Add(channelId); +// return; +// } +// +// if (IsTimeGreaterThan(_updateMinTime, tillTime)) +// { +// _updateMinTime = tillTime; +// } +// +// _updateTimer.Add(tillTime, channelId); +// } +// +// private const uint HalfMaxUint = uint.MaxValue / 2; +// +// [MethodImpl(MethodImplOptions.AggressiveInlining)] +// private bool IsTimeGreaterThan(uint timeId, uint nowTime) +// { +// if (!_allowWraparound) +// { +// return timeId > nowTime; +// } +// +// var diff = timeId - nowTime; +// // 如果 diff 的值在 [0, HalfMaxUint] 范围内,说明 timeId 是在 nowTime 之后或相等。 +// // 如果 diff 的值在 (HalfMaxUint, uint.MaxValue] 范围内,说明 timeId 是在 nowTime 之前(时间回绕的情况)。 +// return diff < HalfMaxUint || diff == HalfMaxUint; +// } +// +// #endregion +// +// #region Pending +// +// private void AddPendingConnection(ref uint channelId, IPEndPoint ipEndPoint) +// { +// var now = TimeNow; +// var pendingConnection = new PendingConnection(channelId, ipEndPoint, now); +// +// if (IsTimeGreaterThan(_pendingMinTime, pendingConnection.TimeOutId) || _pendingMinTime == 0) +// { +// _pendingMinTime = pendingConnection.TimeOutId; +// } +// +// _pendingConnection.Add(channelId, pendingConnection); +// _pendingConnectionTimeOut.Add(pendingConnection.TimeOutId, channelId); +// SendWaitConfirmConnection(ref channelId, ipEndPoint); +// } +// +// private bool ConfirmPendingConnection(ref uint channelId, EndPoint ipEndPoint) +// { +// if (!_pendingConnection.TryGetValue(channelId, out var pendingConnection)) +// { +// return false; +// } +// +// if (!ipEndPoint.IPEndPointEquals(pendingConnection.RemoteEndPoint)) +// { +// Log.Error($"KCPSocket syn address diff: {channelId} {pendingConnection.RemoteEndPoint} {ipEndPoint}"); +// return false; +// } +// +// _pendingConnection.Remove(channelId); +// _pendingConnectionTimeOut.RemoveValue(pendingConnection.TimeOutId, pendingConnection.ChannelId); +// #if FANTASY_DEVELOP +// Log.Debug($"KCPSocket _pendingConnection:{_pendingConnection.Count} _pendingConnectionTimer:{_pendingConnectionTimeOut.Count}"); +// #endif +// return true; +// } +// +// #endregion +// +// #region Connection +// +// private void AddConnection(ref uint channelId, IPEndPoint ipEndPoint) +// { +// var eventArgs = new KCPServerNetworkChannel(this, channelId, ipEndPoint); +// _connectionChannel.Add(channelId, eventArgs); +// #if FANTASY_DEVELOP +// Log.Debug($"AddConnection _connectionChannel:{_connectionChannel.Count()}"); +// #endif +// } +// +// public override void RemoveChannel(uint channelId) +// { +// if (!_connectionChannel.Remove(channelId, out var channel)) +// { +// return; +// } +// +// if (!channel.IsDisposed) +// { +// SendDisconnect(ref channelId, channel.RemoteEndPoint); +// channel.Dispose(); +// } +// #if FANTASY_DEVELOP +// Log.Debug($"RemoveChannel _connectionChannel:{_connectionChannel.Count()}"); +// #endif +// } +// +// #endregion +// +// #region Send +// +// private const byte KcpHeaderDisconnect = (byte)KcpHeader.Disconnect; +// private const byte KcpHeaderRepeatChannelId = (byte)KcpHeader.RepeatChannelId; +// private const byte KcpHeaderWaitConfirmConnection = (byte)KcpHeader.WaitConfirmConnection; +// +// private unsafe void SendDisconnect(ref uint channelId, EndPoint clientEndPoint) +// { +// fixed (byte* p = _sendBuff) +// { +// p[0] = KcpHeaderDisconnect; +// *(uint*)(p + 1) = channelId; +// } +// +// SendAsync(_sendBuff, 0, 5, clientEndPoint); +// } +// +// private unsafe void SendRepeatChannelId(ref uint channelId, EndPoint clientEndPoint) +// { +// fixed (byte* p = _sendBuff) +// { +// p[0] = KcpHeaderRepeatChannelId; +// *(uint*)(p + 1) = channelId; +// } +// +// SendAsync(_sendBuff, 0, 5, clientEndPoint); +// } +// +// private unsafe void SendWaitConfirmConnection(ref uint channelId, EndPoint clientEndPoint) +// { +// fixed (byte* p = _sendBuff) +// { +// p[0] = KcpHeaderWaitConfirmConnection; +// *(uint*)(p + 1) = channelId; +// } +// +// SendAsync(_sendBuff, 0, 5, clientEndPoint); +// } +// +// [MethodImpl(MethodImplOptions.AggressiveInlining)] +// public void SendAsync(byte[] buffer, int offset, int count, EndPoint endPoint) +// { +// try +// { +// _socket.SendTo(new ArraySegment(buffer, offset, count), SocketFlags.None, endPoint); +// } +// catch (ArgumentException ex) +// { +// Log.Error($"ArgumentException: {ex.Message}"); // 处理参数错误 +// } +// catch (SocketException) +// { +// //Log.Error($"SocketException: {ex.Message}"); // 处理网络错误 +// } +// catch (ObjectDisposedException) +// { +// // 处理套接字已关闭的情况 +// } +// catch (InvalidOperationException ex) +// { +// Log.Error($"InvalidOperationException: {ex.Message}"); // 处理无效操作 +// } +// catch (Exception ex) +// { +// Log.Error($"Exception: {ex.Message}"); // 捕获其他异常 +// } +// } +// +// #endregion +// } +// } +// +// #endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Server/KCPServerNetworkByPipe.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Server/KCPServerNetworkByPipe.cs new file mode 100644 index 0000000..54b550d --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Server/KCPServerNetworkByPipe.cs @@ -0,0 +1,619 @@ +#if FANTASY_NET +using System.Buffers; +using System.IO.Pipelines; +using System.Net; +using System.Net.Sockets; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Fantasy.Async; +using Fantasy.DataStructure.Collection; +using Fantasy.Entitas.Interface; +using Fantasy.Helper; +using Fantasy.Network.Interface; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8604 // Possible null reference argument. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8602 // Dereference of a possibly null reference. + +#pragma warning disable CS8622 // Nullability of reference types in type of parameter doesn't match the target delegate (possibly because of nullability attributes). + +namespace Fantasy.Network.KCP +{ + public sealed class KCPServerNetworkUpdateSystem : UpdateSystem + { + protected override void Update(KCPServerNetwork self) + { + self.Update(); + } + } + + public struct PendingConnection + { + public readonly uint ChannelId; + public readonly uint TimeOutId; + public readonly IPEndPoint RemoteEndPoint; + + public PendingConnection(uint channelId, IPEndPoint remoteEndPoint, uint time) + { + ChannelId = channelId; + RemoteEndPoint = remoteEndPoint; + TimeOutId = time + 10 * 1000; // 设置10秒超时,如果10秒内没有确认连接则删除。 + } + } + + public sealed class KCPServerNetwork : ANetwork + { + private Socket _socket; + private long _startTime; + private uint _updateMinTime; + private uint _pendingMinTime; + private bool _allowWraparound = true; + private readonly Pipe _pipe = new Pipe(); + private readonly byte[] _sendBuff = new byte[5]; + private readonly List _pendingTimeOutTime = new List(); + private readonly HashSet _updateChannels = new HashSet(); + private readonly List _updateTimeOutTime = new List(); + private readonly Queue _endPoint = new Queue(); + private readonly CancellationTokenSource _cancellationTokenSource = new CancellationTokenSource(); + private readonly SortedOneToManyList _updateTimer = new SortedOneToManyList(); + + private readonly Dictionary _pendingConnection = new Dictionary(); + private readonly SortedOneToManyList _pendingConnectionTimeOut = new SortedOneToManyList(); + private readonly Dictionary _connectionChannel = new Dictionary(); + + public KCPSettings Settings { get; private set; } + + private uint TimeNow => (uint)(TimeHelper.Now - _startTime); + + public void Initialize(NetworkTarget networkTarget, IPEndPoint address) + { + _startTime = TimeHelper.Now; + Settings = KCPSettings.Create(networkTarget); + base.Initialize(NetworkType.Server, NetworkProtocolType.KCP, networkTarget); + _socket = new Socket(address.AddressFamily, SocketType.Dgram, ProtocolType.Udp); + _socket.Blocking = false; + _socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, false); + if (address.AddressFamily == AddressFamily.InterNetworkV6) + { + _socket.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, false); + } + + _socket.Blocking = false; + _socket.Bind(address); + _socket.SetSocketBufferToOsLimit(); + _socket.SetSioUdpConnReset(); + ReadPipeDataAsync().Coroutine(); + ReceiveSocketAsync().Coroutine(); + Log.Info($"SceneConfigId = {Scene.SceneConfigId} networkTarget = {networkTarget.ToString()} KCPServer Listen {address}"); + } + + public override void Dispose() + { + if (IsDisposed) + { + return; + } + + if (!_cancellationTokenSource.IsCancellationRequested) + { + try + { + _cancellationTokenSource.Cancel(); + } + catch (OperationCanceledException) + { + // 通常情况下,此处的异常可以忽略 + } + } + + foreach (var (_, channel) in _connectionChannel.ToArray()) + { + channel.Dispose(); + } + + _connectionChannel.Clear(); + _pendingConnection.Clear(); + + if (_socket != null) + { + _socket.Dispose(); + _socket = null; + } + + base.Dispose(); + } + + #region ReceiveSocket + + private async FTask ReceiveSocketAsync() + { + EndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); + + while (!_cancellationTokenSource.IsCancellationRequested) + { + try + { + var memory = _pipe.Writer.GetMemory(8192); + var socketReceiveFromResult = await _socket.ReceiveFromAsync(memory, SocketFlags.None, remoteEndPoint, _cancellationTokenSource.Token); + var receivedBytes = socketReceiveFromResult.ReceivedBytes; + + if (receivedBytes == 5) + { + switch ((KcpHeader)memory.Span[0]) + { + case KcpHeader.RequestConnection: + case KcpHeader.ConfirmConnection: + { + _endPoint.Enqueue(socketReceiveFromResult.RemoteEndPoint.Clone()); + break; + } + } + } + + _pipe.Writer.Advance(receivedBytes); + await _pipe.Writer.FlushAsync(); + } + catch (SocketException ex) + { + Log.Error($"Socket exception: {ex.Message}"); + Dispose(); + break; + } + catch (OperationCanceledException) + { + break; + } + catch (ObjectDisposedException) + { + Dispose(); + break; + } + catch (Exception ex) + { + Log.Error($"Unexpected exception: {ex.Message}"); + } + } + + await _pipe.Writer.CompleteAsync(); + } + + #endregion + + #region ReceivePipeData + + private async FTask ReadPipeDataAsync() + { + var pipeReader = _pipe.Reader; + while (!_cancellationTokenSource.IsCancellationRequested) + { + ReadResult result = default; + + try + { + result = await pipeReader.ReadAsync(_cancellationTokenSource.Token); + } + catch (OperationCanceledException) + { + // 出现这个异常表示取消了_cancellationTokenSource。一般Channel断开会取消。 + break; + } + + var buffer = result.Buffer; + var consumed = buffer.Start; + var examined = buffer.End; + + while (TryReadMessage(ref buffer, out var header, out var channelId, out var message)) + { + ReceiveData(ref header, ref channelId, ref message); + consumed = buffer.Start; + } + + if (result.IsCompleted) + { + break; + } + + pipeReader.AdvanceTo(consumed, examined); + } + + await pipeReader.CompleteAsync(); + } + + private unsafe bool TryReadMessage(ref ReadOnlySequence buffer, out KcpHeader header, out uint channelId, out ReadOnlyMemory message) + { + if (buffer.Length < 5) + { + channelId = 0; + message = default; + header = KcpHeader.None; + if (buffer.Length > 0) + { + buffer = buffer.Slice(buffer.Length); + } + return false; + } + + var readOnlyMemory = buffer.First; + + if (MemoryMarshal.TryGetArray(readOnlyMemory, out var arraySegment)) + { + fixed (byte* bytePointer = &arraySegment.Array[arraySegment.Offset]) + { + header = (KcpHeader)bytePointer[0]; + channelId = Unsafe.ReadUnaligned(ref bytePointer[1]); + } + } + else + { + // 如果无法获取数组段,回退到安全代码来执行。这种情况几乎不会发生、为了保险还是写一下了。 + var firstSpan = readOnlyMemory.Span; + header = (KcpHeader)firstSpan[0]; + channelId = MemoryMarshal.Read(firstSpan.Slice(1, 4)); + } + + message = readOnlyMemory.Slice(5); + buffer = buffer.Slice(readOnlyMemory.Length); + return true; + } + + private void ReceiveData(ref KcpHeader header, ref uint channelId, ref ReadOnlyMemory buffer) + { + switch (header) + { + // 客户端请求建立KCP连接 + case KcpHeader.RequestConnection: + { + _endPoint.TryDequeue(out var ipEndPoint); + + if (_pendingConnection.TryGetValue(channelId, out var pendingConnection)) + { + if (!ipEndPoint.IPEndPointEquals(pendingConnection.RemoteEndPoint)) + { + // 重复通道ID,向客户端发送重复通道ID消息 + SendRepeatChannelId(ref channelId, ipEndPoint); + } + + break; + } + + if (_connectionChannel.ContainsKey(channelId)) + { + // 已存在的通道ID,向客户端发送重复通道ID消息 + SendRepeatChannelId(ref channelId, ipEndPoint); + break; + } + + AddPendingConnection(ref channelId, ipEndPoint); + break; + } + // 客户端确认建立KCP连接 + case KcpHeader.ConfirmConnection: + { + _endPoint.TryDequeue(out var ipEndPoint); + if (!ConfirmPendingConnection(ref channelId, ipEndPoint)) + { + break; + } + + AddConnection(ref channelId, ipEndPoint.Clone()); + break; + } + // 接收KCP的数据 + case KcpHeader.ReceiveData: + { + if (buffer.Length == 5) + { + Log.Warning($"KCP Server KcpHeader.Data buffer.Length == 5"); + break; + } + + if (_connectionChannel.TryGetValue(channelId, out var channel)) + { + channel.Input(buffer); + } + + break; + } + // 断开KCP连接 + case KcpHeader.Disconnect: + { + // 断开不需要清楚PendingConnection让ClearPendingConnection自动清楚就可以了,并且不一定有Pending。 + RemoveChannel(channelId); + break; + } + } + } + + #endregion + + #region Update + + public void Update() + { + var timeNow = TimeNow; + _allowWraparound = timeNow < _updateMinTime; + CheckUpdateTimerOut(ref timeNow); + UpdateChannel(ref timeNow); + PendingTimerOut(ref timeNow); + _allowWraparound = true; + } + + private void CheckUpdateTimerOut(ref uint nowTime) + { + if (_updateTimer.Count == 0) + { + return; + } + + if (IsTimeGreaterThan(_updateMinTime, nowTime)) + { + return; + } + + _updateTimeOutTime.Clear(); + + foreach (var kv in _updateTimer) + { + var timeId = kv.Key; + + if (IsTimeGreaterThan(timeId, nowTime)) + { + _updateMinTime = timeId; + break; + } + + _updateTimeOutTime.Add(timeId); + } + + foreach (var timeId in _updateTimeOutTime) + { + foreach (var channelId in _updateTimer[timeId]) + { + _updateChannels.Add(channelId); + } + + _updateTimer.RemoveKey(timeId); + } + } + + private void UpdateChannel(ref uint timeNow) + { + foreach (var channelId in _updateChannels) + { + if (!_connectionChannel.TryGetValue(channelId, out var channel)) + { + continue; + } + + if (channel.IsDisposed) + { + _connectionChannel.Remove(channelId); + continue; + } + + channel.Kcp.Update(timeNow); + AddUpdateChannel(channelId, channel.Kcp.Check(timeNow)); + } + + _updateChannels.Clear(); + } + + private void PendingTimerOut(ref uint timeNow) + { + if (_pendingConnectionTimeOut.Count == 0) + { + return; + } + + if (IsTimeGreaterThan(_pendingMinTime, timeNow)) + { + return; + } + + _pendingTimeOutTime.Clear(); + + foreach (var kv in _pendingConnectionTimeOut) + { + var timeId = kv.Key; + + if (IsTimeGreaterThan(timeId, timeNow)) + { + _pendingMinTime = timeId; + break; + } + + _pendingTimeOutTime.Add(timeId); + } + + foreach (var timeId in _pendingTimeOutTime) + { + foreach (var channelId in _pendingConnectionTimeOut[timeId]) + { + _pendingConnection.Remove(channelId); + } + + _pendingConnectionTimeOut.RemoveKey(timeId); + } + } + + public void AddUpdateChannel(uint channelId, uint tillTime) + { + if (tillTime == 0) + { + _updateChannels.Add(channelId); + return; + } + + if (IsTimeGreaterThan(_updateMinTime, tillTime)) + { + _updateMinTime = tillTime; + } + + _updateTimer.Add(tillTime, channelId); + } + + private const uint HalfMaxUint = uint.MaxValue / 2; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private bool IsTimeGreaterThan(uint timeId, uint nowTime) + { + if (!_allowWraparound) + { + return timeId > nowTime; + } + + var diff = timeId - nowTime; + // 如果 diff 的值在 [0, HalfMaxUint] 范围内,说明 timeId 是在 nowTime 之后或相等。 + // 如果 diff 的值在 (HalfMaxUint, uint.MaxValue] 范围内,说明 timeId 是在 nowTime 之前(时间回绕的情况)。 + return diff < HalfMaxUint || diff == HalfMaxUint; + } + + #endregion + + #region Pending + + private void AddPendingConnection(ref uint channelId, IPEndPoint ipEndPoint) + { + var now = TimeNow; + var pendingConnection = new PendingConnection(channelId, ipEndPoint, now); + + if (IsTimeGreaterThan(_pendingMinTime, pendingConnection.TimeOutId) || _pendingMinTime == 0) + { + _pendingMinTime = pendingConnection.TimeOutId; + } + + _pendingConnection.Add(channelId, pendingConnection); + _pendingConnectionTimeOut.Add(pendingConnection.TimeOutId, channelId); + SendWaitConfirmConnection(ref channelId, ipEndPoint); + } + + private bool ConfirmPendingConnection(ref uint channelId, EndPoint ipEndPoint) + { + if (!_pendingConnection.TryGetValue(channelId, out var pendingConnection)) + { + return false; + } + + if (!ipEndPoint.IPEndPointEquals(pendingConnection.RemoteEndPoint)) + { + Log.Error($"KCPSocket syn address diff: {channelId} {pendingConnection.RemoteEndPoint} {ipEndPoint}"); + return false; + } + + _pendingConnection.Remove(channelId); + _pendingConnectionTimeOut.RemoveValue(pendingConnection.TimeOutId, pendingConnection.ChannelId); +#if FANTASY_DEVELOP + Log.Debug($"KCPSocket _pendingConnection:{_pendingConnection.Count} _pendingConnectionTimer:{_pendingConnectionTimeOut.Count}"); +#endif + return true; + } + + #endregion + + #region Connection + + private void AddConnection(ref uint channelId, IPEndPoint ipEndPoint) + { + var eventArgs = new KCPServerNetworkChannel(this, channelId, ipEndPoint); + _connectionChannel.Add(channelId, eventArgs); +#if FANTASY_DEVELOP + Log.Debug($"AddConnection _connectionChannel:{_connectionChannel.Count()}"); +#endif + } + + public override void RemoveChannel(uint channelId) + { + if (!_connectionChannel.Remove(channelId, out var channel)) + { + return; + } + + if (!channel.IsDisposed) + { + SendDisconnect(ref channelId, channel.RemoteEndPoint); + channel.Dispose(); + } +#if FANTASY_DEVELOP + Log.Debug($"RemoveChannel _connectionChannel:{_connectionChannel.Count()}"); +#endif + } + + #endregion + + #region Send + + private const byte KcpHeaderDisconnect = (byte)KcpHeader.Disconnect; + private const byte KcpHeaderRepeatChannelId = (byte)KcpHeader.RepeatChannelId; + private const byte KcpHeaderWaitConfirmConnection = (byte)KcpHeader.WaitConfirmConnection; + + private unsafe void SendDisconnect(ref uint channelId, EndPoint clientEndPoint) + { + fixed (byte* p = _sendBuff) + { + p[0] = KcpHeaderDisconnect; + *(uint*)(p + 1) = channelId; + } + + SendAsync(_sendBuff, 0, 5, clientEndPoint); + } + + private unsafe void SendRepeatChannelId(ref uint channelId, EndPoint clientEndPoint) + { + fixed (byte* p = _sendBuff) + { + p[0] = KcpHeaderRepeatChannelId; + *(uint*)(p + 1) = channelId; + } + + SendAsync(_sendBuff, 0, 5, clientEndPoint); + } + + private unsafe void SendWaitConfirmConnection(ref uint channelId, EndPoint clientEndPoint) + { + fixed (byte* p = _sendBuff) + { + p[0] = KcpHeaderWaitConfirmConnection; + *(uint*)(p + 1) = channelId; + } + + SendAsync(_sendBuff, 0, 5, clientEndPoint); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SendAsync(byte[] buffer, int offset, int count, EndPoint endPoint) + { + try + { + _socket.SendTo(new ArraySegment(buffer, offset, count), SocketFlags.None, endPoint); + } + catch (ArgumentException ex) + { + Log.Error($"ArgumentException: {ex.Message}"); // 处理参数错误 + } + catch (SocketException) + { + //Log.Error($"SocketException: {ex.Message}"); // 处理网络错误 + } + catch (ObjectDisposedException) + { + // 处理套接字已关闭的情况 + } + catch (InvalidOperationException ex) + { + Log.Error($"InvalidOperationException: {ex.Message}"); // 处理无效操作 + } + catch (Exception ex) + { + Log.Error($"Exception: {ex.Message}"); // 捕获其他异常 + } + } + + #endregion + } +} + +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Server/KCPServerNetworkChannel.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Server/KCPServerNetworkChannel.cs new file mode 100644 index 0000000..19db7a7 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/KCP/Server/KCPServerNetworkChannel.cs @@ -0,0 +1,165 @@ +#if FANTASY_NET +using System.Net; +using System.Net.Sockets; +using System.Runtime.CompilerServices; +using Fantasy.Helper; +using Fantasy.Network.Interface; +using Fantasy.PacketParser; +using Fantasy.Serialize; +using KCP; +// ReSharper disable ParameterHidesMember +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Network.KCP +{ + /// + /// KCP 服务器网络通道,用于处理服务器与客户端之间的数据通信。 + /// + public class KCPServerNetworkChannel : ANetworkServerChannel + { + private bool _isInnerDispose; + private readonly int _maxSndWnd; + private KCPServerNetwork _kcpServerNetwork; + private readonly BufferPacketParser _packetParser; + private readonly byte[] _receiveBuffer = new byte[Packet.PacketBodyMaxLength + 20]; + public Kcp Kcp { get; private set; } + public uint ChannelId { get; private set; } + + public KCPServerNetworkChannel(KCPServerNetwork network, uint channelId, IPEndPoint ipEndPoint) : base(network, channelId, ipEndPoint) + { + _kcpServerNetwork = network; + ChannelId = channelId; + _maxSndWnd = network.Settings.MaxSendWindowSize; + Kcp = KCPFactory.Create(network.Settings, ChannelId, KcpSpanCallback); + _packetParser = PacketParserFactory.CreateServerBufferPacket(network); + } + + public override void Dispose() + { + if (IsDisposed || _isInnerDispose) + { + return; + } + + try + { + _isInnerDispose = true; + _kcpServerNetwork.RemoveChannel(Id); + IsDisposed = true; + Kcp.Dispose(); + Kcp = null; + ChannelId = 0; + _kcpServerNetwork = null; + } + catch (Exception e) + { + Log.Error(e); + } + finally + { + base.Dispose(); + } + } + + public void Input(ReadOnlyMemory buffer) + { + Kcp.Input(buffer.Span); + _kcpServerNetwork.AddUpdateChannel(ChannelId, 0); + + while (!IsDisposed) + { + try + { + var peekSize = Kcp.PeekSize(); + + if (peekSize < 0) + { + return; + } + + var receiveCount = Kcp.Receive(_receiveBuffer.AsSpan(0, peekSize)); + + if (receiveCount != peekSize) + { + return; + } + + if (!_packetParser.UnPack(_receiveBuffer, ref receiveCount, out var packInfo)) + { + continue; + } + + Session.Receive(packInfo); + } + catch (ScanException e) + { + Log.Debug($"RemoteAddress:{RemoteEndPoint} \n{e}"); + Dispose(); + } + catch (Exception e) + { + Log.Error(e); + } + } + } + + public override void Send(uint rpcId, long routeId, MemoryStreamBuffer memoryStream, IMessage message) + { + if (IsDisposed) + { + return; + } + + if (Kcp.WaitSendCount > _maxSndWnd) + { + // 检查等待发送的消息,如果超出两倍窗口大小,KCP作者给的建议是要断开连接 + Log.Warning($"ERR_KcpWaitSendSizeTooLarge {Kcp.WaitSendCount} > {_maxSndWnd}"); + Dispose(); + return; + } + + var buffer = _packetParser.Pack(ref rpcId, ref routeId, memoryStream, message); + Kcp.Send(buffer.GetBuffer().AsSpan(0, (int)buffer.Position)); + + if (buffer.MemoryStreamBufferSource == MemoryStreamBufferSource.Pack) + { + _kcpServerNetwork.MemoryStreamBufferPool.ReturnMemoryStream(buffer); + } + + _kcpServerNetwork.AddUpdateChannel(ChannelId, 0); + } + + private const byte KcpHeaderReceiveData = (byte)KcpHeader.ReceiveData; + + private unsafe void KcpSpanCallback(byte[] buffer, int count) + { + if (IsDisposed) + { + return; + } + + try + { + if (count == 0) + { + throw new Exception("KcpOutput count 0"); + } + + fixed (byte* p = buffer) + { + p[0] = KcpHeaderReceiveData; + *(uint*)(p + 1) = ChannelId; + } + + _kcpServerNetwork.SendAsync(buffer, 0, count + 5, RemoteEndPoint); + } + catch (Exception e) + { + Log.Error(e); + } + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/NetworkProtocolFactory.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/NetworkProtocolFactory.cs new file mode 100644 index 0000000..c7b6ecc --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/NetworkProtocolFactory.cs @@ -0,0 +1,95 @@ +using System; +using System.Net; +using Fantasy.Entitas; +using Fantasy.Helper; +using Fantasy.Network.Interface; +#if !FANTASY_WEBGL +using Fantasy.Network.TCP; +using Fantasy.Network.KCP; +#endif +#if FANTASY_NET +using Fantasy.Network.HTTP; +#endif +using Fantasy.Network.WebSocket; + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Network +{ + internal static class NetworkProtocolFactory + { +#if FANTASY_NET + public static ANetwork CreateServer(Scene scene, NetworkProtocolType protocolType, NetworkTarget networkTarget, string bindIp, int port) + { + switch (protocolType) + { + case NetworkProtocolType.TCP: + { + var network = Entity.Create(scene, false, false); + var address = NetworkHelper.ToIPEndPoint(bindIp, port); + network.Initialize(networkTarget, address); + return network; + } + case NetworkProtocolType.KCP: + { + var network = Entity.Create(scene, false, true); + var address = NetworkHelper.ToIPEndPoint(bindIp, port); + network.Initialize(networkTarget, address); + return network; + } + case NetworkProtocolType.WebSocket: + { + var network = Entity.Create(scene, false, true); + network.Initialize(networkTarget, bindIp, port); + return network; + } + case NetworkProtocolType.HTTP: + { + var network = Entity.Create(scene, false, true); + network.Initialize(networkTarget, bindIp, port); + return network; + } + default: + { + throw new NotSupportedException($"Unsupported NetworkProtocolType:{protocolType}"); + } + } + } +#endif + public static AClientNetwork CreateClient(Scene scene, NetworkProtocolType protocolType, NetworkTarget networkTarget) + { +#if !FANTASY_WEBGL + switch (protocolType) + { + case NetworkProtocolType.TCP: + { + var network = Entity.Create(scene, false, false); + network.Initialize(networkTarget); + return network; + } + case NetworkProtocolType.KCP: + { + var network = Entity.Create(scene, false, true); + network.Initialize(networkTarget); + return network; + } + case NetworkProtocolType.WebSocket: + { + var network = Entity.Create(scene, false, true); + network.Initialize(networkTarget); + return network; + } + default: + { + throw new NotSupportedException($"Unsupported NetworkProtocolType:{protocolType}"); + } + } +#else + // Webgl平台只能用这个协议。 + var network = Entity.Create(scene, false, true); + network.Initialize(networkTarget); + return network; +#endif + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/NetworkProtocolType.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/NetworkProtocolType.cs new file mode 100644 index 0000000..55a04c9 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/NetworkProtocolType.cs @@ -0,0 +1,69 @@ +namespace Fantasy.Network +{ + /// + /// 网络服务器类型 + /// + public enum NetworkType + { + /// + /// 默认 + /// + None = 0, + /// + /// 客户端网络 + /// + Client = 1, +#if FANTASY_NET + /// + /// 服务器网络 + /// + Server = 2 +#endif + } + /// + /// 网络服务的目标 + /// + public enum NetworkTarget + { + /// + /// 默认 + /// + None = 0, + /// + /// 对外 + /// + Outer = 1, +#if FANTASY_NET + /// + /// 对内 + /// + Inner = 2 +#endif + } + /// + /// 支持的网络协议 + /// + public enum NetworkProtocolType + { + /// + /// 默认 + /// + None = 0, + /// + /// KCP + /// + KCP = 1, + /// + /// TCP + /// + TCP = 2, + /// + /// WebSocket + /// + WebSocket = 3, + /// + /// HTTP + /// + HTTP = 4, + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/NetworkThreadComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/NetworkThreadComponent.cs new file mode 100644 index 0000000..c0c166b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/NetworkThreadComponent.cs @@ -0,0 +1,100 @@ +#if !FANTASY_WEBGL +using System; +using System.Collections.Generic; +using System.Threading; +using Fantasy.Entitas; +// ReSharper disable ForCanBeConvertedToForeach +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +namespace Fantasy.Network +{ + internal interface INetworkThreadUpdate + { + void Update(); + } + + /// + /// 网络线程组件 + /// + internal sealed class NetworkThreadComponent : Entity + { + private Thread _netWorkThread; + internal ThreadSynchronizationContext SynchronizationContext { get; private set; } + private readonly List _updates = new List(); + + internal NetworkThreadComponent Initialize() + { + SynchronizationContext = new ThreadSynchronizationContext(); + _netWorkThread = new Thread(Update) + { + IsBackground = true + }; + _netWorkThread.Start(); + return this; + } + + public override void Dispose() + { + if (IsDisposed) + { + return; + } + + SynchronizationContext.Post(() => + { + _updates.Clear(); + _netWorkThread.Join(); + _netWorkThread = null; + SynchronizationContext = null; + }); + + base.Dispose(); + } + + private void Update() + { + // 将同步上下文设置为网络线程的上下文,以确保操作在正确的线程上下文中执行。 + System.Threading.SynchronizationContext.SetSynchronizationContext(SynchronizationContext); + // 循环执行 + while (!IsDisposed) + { + for (var i = 0; i < _updates.Count; i++) + { + try + { + _updates[i].Update(); + } + catch (Exception e) + { + Log.Error(e); + } + } + SynchronizationContext.Update(); + Thread.Sleep(1); + } + } + + internal void AddNetworkThreadUpdate(INetworkThreadUpdate update) + { + SynchronizationContext.Post(() => + { + if (_updates.Contains(update)) + { + Log.Warning($"{update.GetType().FullName} Network thread update is already running"); + return; + } + _updates.Add(update); + }); + } + + internal void RemoveNetworkThreadUpdate(INetworkThreadUpdate update) + { + SynchronizationContext.Post(() => + { + _updates.Remove(update); + }); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/TCP/Client/TCPClientNetwork.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/TCP/Client/TCPClientNetwork.cs new file mode 100644 index 0000000..233fb7b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/TCP/Client/TCPClientNetwork.cs @@ -0,0 +1,413 @@ +#if !FANTASY_WEBGL +using System; +using System.Buffers; +using System.Collections.Generic; +using System.IO; +using System.IO.Pipelines; +using System.Net; +using System.Net.Sockets; +using System.Runtime.InteropServices; +using System.Threading; +using Fantasy.Async; +using Fantasy.Helper; +using Fantasy.Network.Interface; +using Fantasy.PacketParser; +using Fantasy.Serialize; +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8604 // Possible null reference argument. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS8622 // Nullability of reference types in type of parameter doesn't match the target delegate (possibly because of nullability attributes). + +namespace Fantasy.Network.TCP +{ + public sealed class TCPClientNetwork : AClientNetwork + { + private bool _isSending; + private bool _isInnerDispose; + private long _connectTimeoutId; + private Socket _socket; + private IPEndPoint _remoteEndPoint; + private SocketAsyncEventArgs _sendArgs; + private ReadOnlyMemoryPacketParser _packetParser; + private readonly Pipe _pipe = new Pipe(); + private readonly Queue _sendBuffers = new Queue(); + private readonly CancellationTokenSource _cancellationTokenSource = new CancellationTokenSource(); + + private Action _onConnectFail; + private Action _onConnectComplete; + private Action _onConnectDisconnect; + + public uint ChannelId { get; private set; } + + public void Initialize(NetworkTarget networkTarget) + { + base.Initialize(NetworkType.Client, NetworkProtocolType.TCP, networkTarget); + } + + public override void Dispose() + { + if (IsDisposed || _isInnerDispose) + { + return; + } + + try + { + _isSending = false; + _isInnerDispose = true; + ClearConnectTimeout(); + + if (!_cancellationTokenSource.IsCancellationRequested) + { + try + { + _cancellationTokenSource.Cancel(); + } + catch (OperationCanceledException) + { + // 通常情况下,此处的异常可以忽略 + } + } + + _onConnectDisconnect?.Invoke(); + + if (_socket.Connected) + { + _socket.Close(); + _socket = null; + } + + _sendBuffers.Clear(); + _packetParser?.Dispose(); + ChannelId = 0; + _sendArgs = null; + } + catch (Exception e) + { + Log.Error(e); + } + finally + { + base.Dispose(); + } + } + + /// + /// 连接到远程服务器。 + /// + /// 远程服务器的终端点。 + /// 连接成功时的回调。 + /// 连接失败时的回调。 + /// 连接断开时的回调。 + /// + /// 连接超时时间,单位:毫秒。 + /// 连接的会话。 + public override Session Connect(string remoteAddress, Action onConnectComplete, Action onConnectFail, Action onConnectDisconnect, bool isHttps, int connectTimeout = 5000) + { + // 如果已经初始化过一次,抛出异常,要求重新实例化 + + if (IsInit) + { + throw new NotSupportedException("TCPClientNetwork Has already been initialized. If you want to call Connect again, please re instantiate it."); + } + + IsInit = true; + _isSending = false; + _onConnectFail = onConnectFail; + _onConnectComplete = onConnectComplete; + _onConnectDisconnect = onConnectDisconnect; + // 设置连接超时定时器 + _connectTimeoutId = Scene.TimerComponent.Net.OnceTimer(connectTimeout, () => + { + _onConnectFail?.Invoke(); + Dispose(); + }); + _packetParser = PacketParserFactory.CreateClientReadOnlyMemoryPacket(this); + _remoteEndPoint = NetworkHelper.GetIPEndPoint(remoteAddress); + _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + _socket.NoDelay = true; + _socket.SetSocketBufferToOsLimit(); + _sendArgs = new SocketAsyncEventArgs(); + _sendArgs.Completed += OnSendCompleted; + var outArgs = new SocketAsyncEventArgs + { + RemoteEndPoint = _remoteEndPoint + }; + outArgs.Completed += OnConnectSocketCompleted; + + if (!_socket.ConnectAsync(outArgs)) + { + OnReceiveSocketComplete(); + } + + Session = Session.Create(this, _remoteEndPoint); + return Session; + } + + private void OnConnectSocketCompleted(object sender, SocketAsyncEventArgs asyncEventArgs) + { + if (_cancellationTokenSource.IsCancellationRequested) + { + return; + } + + if (asyncEventArgs.LastOperation == SocketAsyncOperation.Connect) + { + if (asyncEventArgs.SocketError == SocketError.Success) + { + Scene.ThreadSynchronizationContext.Post(OnReceiveSocketComplete); + } + else + { + Scene.ThreadSynchronizationContext.Post(() => + { + _onConnectFail?.Invoke(); + Dispose(); + }); + } + } + } + + private void OnReceiveSocketComplete() + { + ClearConnectTimeout(); + _onConnectComplete?.Invoke(); + ReadPipeDataAsync().Coroutine(); + ReceiveSocketAsync().Coroutine(); + } + + #region ReceiveSocket + + private async FTask ReceiveSocketAsync() + { + while (!_cancellationTokenSource.IsCancellationRequested) + { + try + { + var memory = _pipe.Writer.GetMemory(8192); +#if UNITY_2021 + // Unity2021.3.14f有个恶心的问题,使用ReceiveAsync会导致memory不能正确写入 + // 所有只能使用ReceiveFromAsync来接收消息,但ReceiveFromAsync只有一个接受ArraySegment的接口。 + MemoryMarshal.TryGetArray(memory, out ArraySegment arraySegment); + var result = await _socket.ReceiveFromAsync(arraySegment, SocketFlags.None, _remoteEndPoint); + _pipe.Writer.Advance(result.ReceivedBytes); +#else + var count = await _socket.ReceiveAsync(memory, SocketFlags.None, _cancellationTokenSource.Token); + _pipe.Writer.Advance(count); +#endif + await _pipe.Writer.FlushAsync(); + } + catch (SocketException) + { + Dispose(); + break; + } + catch (OperationCanceledException) + { + break; + } + catch (ObjectDisposedException) + { + Dispose(); + break; + } + catch (Exception ex) + { + Log.Error($"Unexpected exception: {ex.Message}"); + } + } + + await _pipe.Writer.CompleteAsync(); + } + + #endregion + + #region ReceivePipeData + + private async FTask ReadPipeDataAsync() + { + var pipeReader = _pipe.Reader; + while (!_cancellationTokenSource.IsCancellationRequested) + { + ReadResult result = default; + + try + { + result = await pipeReader.ReadAsync(_cancellationTokenSource.Token); + } + catch (OperationCanceledException) + { + // 出现这个异常表示取消了_cancellationTokenSource。一般Channel断开会取消。 + break; + } + + var buffer = result.Buffer; + var consumed = buffer.Start; + var examined = buffer.End; + + while (TryReadMessage(ref buffer, out var message)) + { + ReceiveData(ref message); + consumed = buffer.Start; + } + + if (result.IsCompleted) + { + break; + } + + pipeReader.AdvanceTo(consumed, examined); + } + + await pipeReader.CompleteAsync(); + } + + private bool TryReadMessage(ref ReadOnlySequence buffer, out ReadOnlyMemory message) + { + if (buffer.Length == 0) + { + message = default; + return false; + } + + message = buffer.First; + + if (message.Length == 0) + { + message = default; + return false; + } + + buffer = buffer.Slice(message.Length); + return true; + } + + private void ReceiveData(ref ReadOnlyMemory buffer) + { + try + { + while (_packetParser.UnPack(ref buffer, out var packInfo)) + { + if (_cancellationTokenSource.IsCancellationRequested) + { + return; + } + Session.Receive(packInfo); + } + } + catch (ScanException e) + { + Log.Warning(e.Message); + Dispose(); + } + catch (Exception e) + { + Log.Error(e); + Dispose(); + } + } + + #endregion + + #region Send + + public override void Send(uint rpcId, long routeId, MemoryStreamBuffer memoryStream, IMessage message) + { + _sendBuffers.Enqueue(_packetParser.Pack(ref rpcId, ref routeId, memoryStream, message)); + + if (!_isSending) + { + Send(); + } + } + + private void Send() + { + if (_isSending || IsDisposed) + { + return; + } + + _isSending = true; + + while (_sendBuffers.Count > 0) + { + var memoryStreamBuffer = _sendBuffers.Dequeue(); + _sendArgs.UserToken = memoryStreamBuffer; + _sendArgs.SetBuffer(new ArraySegment(memoryStreamBuffer.GetBuffer(), 0, (int)memoryStreamBuffer.Position)); + + try + { + if (_socket.SendAsync(_sendArgs)) + { + break; + } + + ReturnMemoryStream(memoryStreamBuffer); + } + catch + { + _isSending = false; + return; + } + } + + _isSending = false; + } + + private void ReturnMemoryStream(MemoryStreamBuffer memoryStream) + { + if (memoryStream.MemoryStreamBufferSource == MemoryStreamBufferSource.Pack) + { + MemoryStreamBufferPool.ReturnMemoryStream(memoryStream); + } + } + + private void OnSendCompleted(object sender, SocketAsyncEventArgs asyncEventArgs) + { + if (asyncEventArgs.SocketError != SocketError.Success || asyncEventArgs.BytesTransferred == 0) + { + _isSending = false; + return; + } + + var memoryStreamBuffer = (MemoryStreamBuffer)asyncEventArgs.UserToken; + Scene.ThreadSynchronizationContext.Post(() => + { + ReturnMemoryStream(memoryStreamBuffer); + + if (_sendBuffers.Count > 0) + { + Send(); + } + else + { + _isSending = false; + } + }); + } + + #endregion + + public override void RemoveChannel(uint channelId) + { + Dispose(); + } + + private void ClearConnectTimeout() + { + if (_connectTimeoutId == 0) + { + return; + } + + Scene?.TimerComponent?.Net?.Remove(ref _connectTimeoutId); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/TCP/Server/TCPServerNetwork.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/TCP/Server/TCPServerNetwork.cs new file mode 100644 index 0000000..3e8efb4 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/TCP/Server/TCPServerNetwork.cs @@ -0,0 +1,161 @@ +#if FANTASY_NET +using System.Net; +using System.Net.Sockets; +using Fantasy.Helper; +using Fantasy.Network.Interface; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable GCSuppressFinalizeForTypeWithoutDestructor +#pragma warning disable CS8622 // Nullability of reference types in type of parameter doesn't match the target delegate (possibly because of nullability attributes). +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +namespace Fantasy.Network.TCP +{ + public sealed class TCPServerNetwork : ANetwork + { + private Random _random; + private Socket _socket; + private SocketAsyncEventArgs _acceptAsync; + private readonly Dictionary _connectionChannel = new Dictionary(); + + public void Initialize(NetworkTarget networkTarget, IPEndPoint address) + { + base.Initialize(NetworkType.Server, NetworkProtocolType.TCP, networkTarget); + _random = new Random(); + _acceptAsync = new SocketAsyncEventArgs(); + _socket = new Socket(address.AddressFamily, SocketType.Stream, ProtocolType.Tcp); + _socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, false); + + if (address.AddressFamily == AddressFamily.InterNetworkV6) + { + _socket.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, false); + } + + _socket.Bind(address); + _socket.Listen(int.MaxValue); + _socket.SetSocketBufferToOsLimit(); + Log.Info($"SceneConfigId = {Scene.SceneConfigId} networkTarget = {networkTarget.ToString()} TCPServer Listen {address}"); + _acceptAsync.Completed += OnCompleted; + AcceptAsync(); + } + + public override void Dispose() + { + if (IsDisposed) + { + return; + } + + try + { + foreach (var networkChannel in _connectionChannel.Values.ToArray()) + { + networkChannel.Dispose(); + } + + _connectionChannel.Clear(); + _random = null; + _socket.Dispose(); + _socket = null; + _acceptAsync.Dispose(); + _acceptAsync = null; + GC.SuppressFinalize(this); + } + catch (Exception e) + { + Log.Error(e); + } + finally + { + base.Dispose(); + } + } + + private void AcceptAsync() + { + _acceptAsync.AcceptSocket = null; + + if (_socket.AcceptAsync(_acceptAsync)) + { + return; + } + + OnAcceptComplete(_acceptAsync); + } + + private void OnAcceptComplete(SocketAsyncEventArgs asyncEventArgs) + { + if (asyncEventArgs.AcceptSocket == null) + { + return; + } + + if (asyncEventArgs.SocketError != SocketError.Success) + { + Log.Error($"Socket Accept Error: {_acceptAsync.SocketError}"); + return; + } + + try + { + uint channelId; + do + { + channelId = 0xC0000000 | (uint)_random.Next(); + } while (_connectionChannel.ContainsKey(channelId)); + + _connectionChannel.Add(channelId, new TCPServerNetworkChannel(this, asyncEventArgs.AcceptSocket, channelId)); + } + catch (Exception e) + { + Log.Error(e); + } + finally + { + AcceptAsync(); + } + } + + public override void RemoveChannel(uint channelId) + { + if (IsDisposed || !_connectionChannel.Remove(channelId, out var channel)) + { + return; + } + + if (channel.IsDisposed) + { + return; + } + + channel.Dispose(); + } + + #region 网络线程(由Socket底层产生的线程) + + private void OnCompleted(object sender, SocketAsyncEventArgs asyncEventArgs) + { + switch (asyncEventArgs.LastOperation) + { + case SocketAsyncOperation.Accept: + { + Scene.ThreadSynchronizationContext.Post(() => + { + OnAcceptComplete(asyncEventArgs); + }); + break; + } + default: + { + throw new Exception($"Socket Accept Error: {asyncEventArgs.LastOperation}"); + } + } + } + + #endregion + } +} +#endif + + diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/TCP/Server/TCPServerNetworkChannel.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/TCP/Server/TCPServerNetworkChannel.cs new file mode 100644 index 0000000..15f3f66 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/TCP/Server/TCPServerNetworkChannel.cs @@ -0,0 +1,294 @@ +#if FANTASY_NET +using System.Buffers; +using System.IO.Pipelines; +using System.Net.Sockets; +using Fantasy.Async; +using Fantasy.Network.Interface; +using Fantasy.PacketParser; +using Fantasy.Serialize; +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS8602 // Dereference of a possibly null reference. + +#pragma warning disable CS8604 // Possible null reference argument. +#pragma warning disable CS8622 // Nullability of reference types in type of parameter doesn't match the target delegate (possibly because of nullability attributes). + +namespace Fantasy.Network.TCP +{ + public sealed class TCPServerNetworkChannel : ANetworkServerChannel + { + private bool _isSending; + private bool _isInnerDispose; + private readonly Socket _socket; + private readonly ANetwork _network; + private readonly Pipe _pipe = new Pipe(); + private readonly SocketAsyncEventArgs _sendArgs; + private readonly ReadOnlyMemoryPacketParser _packetParser; + private readonly Queue _sendBuffers = new Queue(); + private readonly CancellationTokenSource _cancellationTokenSource = new CancellationTokenSource(); + + public TCPServerNetworkChannel(ANetwork network, Socket socket, uint id) : base(network, id, socket.RemoteEndPoint) + { + _socket = socket; + _network = network; + _socket.NoDelay = true; + _sendArgs = new SocketAsyncEventArgs(); + _sendArgs.Completed += OnSendCompletedHandler; + _packetParser = PacketParserFactory.CreateServerReadOnlyMemoryPacket(network); + ReadPipeDataAsync().Coroutine(); + ReceiveSocketAsync().Coroutine(); + } + + public override void Dispose() + { + if (IsDisposed || _isInnerDispose) + { + return; + } + + _isInnerDispose = true; + _network.RemoveChannel(Id); + + if (!_cancellationTokenSource.IsCancellationRequested) + { + try + { + _cancellationTokenSource.Cancel(); + } + catch (OperationCanceledException) + { + // 通常情况下,此处的异常可以忽略 + } + } + + if (_socket != null) + { + _socket.Shutdown(SocketShutdown.Both); + _socket.Close(); + } + + _sendBuffers.Clear(); + _packetParser.Dispose(); + _isSending = false; + base.Dispose(); + } + + #region ReceiveSocket + + private async FTask ReceiveSocketAsync() + { + while (!_cancellationTokenSource.IsCancellationRequested) + { + try + { + var memory = _pipe.Writer.GetMemory(8192); + var count = await _socket.ReceiveAsync(memory, SocketFlags.None, _cancellationTokenSource.Token); + + if (count == 0) + { + Dispose(); + return; + } + + _pipe.Writer.Advance(count); + await _pipe.Writer.FlushAsync(); + } + catch (SocketException) + { + Dispose(); + break; + } + catch (OperationCanceledException) + { + break; + } + catch (ObjectDisposedException) + { + Dispose(); + break; + } + catch (Exception ex) + { + Log.Error($"Unexpected exception: {ex.Message}"); + } + } + + await _pipe.Writer.CompleteAsync(); + } + + #endregion + + #region ReceivePipeData + + private async FTask ReadPipeDataAsync() + { + var pipeReader = _pipe.Reader; + while (!_cancellationTokenSource.IsCancellationRequested) + { + ReadResult result = default; + + try + { + result = await pipeReader.ReadAsync(_cancellationTokenSource.Token); + } + catch (OperationCanceledException) + { + // 出现这个异常表示取消了_cancellationTokenSource。一般Channel断开会取消。 + break; + } + + var buffer = result.Buffer; + var consumed = buffer.Start; + var examined = buffer.End; + + while (TryReadMessage(ref buffer, out var message)) + { + ReceiveData(ref message); + consumed = buffer.Start; + } + + if (result.IsCompleted) + { + break; + } + + pipeReader.AdvanceTo(consumed, examined); + } + + await pipeReader.CompleteAsync(); + } + + private bool TryReadMessage(ref ReadOnlySequence buffer, out ReadOnlyMemory message) + { + if (buffer.Length == 0) + { + message = default; + return false; + } + + message = buffer.First; + + if (message.Length == 0) + { + message = default; + return false; + } + + buffer = buffer.Slice(message.Length); + return true; + } + + private void ReceiveData(ref ReadOnlyMemory buffer) + { + try + { + while (_packetParser.UnPack(ref buffer, out var packInfo)) + { + if (_cancellationTokenSource.IsCancellationRequested) + { + return; + } + + Session.Receive(packInfo); + } + } + catch (ScanException e) + { + Log.Warning($"RemoteAddress:{RemoteEndPoint} \n{e}"); + Dispose(); + } + catch (Exception e) + { + Log.Error($"RemoteAddress:{RemoteEndPoint} \n{e}"); + Dispose(); + } + } + + #endregion + + #region Send + + public override void Send(uint rpcId, long routeId, MemoryStreamBuffer memoryStream, IMessage message) + { + _sendBuffers.Enqueue(_packetParser.Pack(ref rpcId, ref routeId, memoryStream, message)); + + if (!_isSending) + { + Send(); + } + } + + private void Send() + { + if (_isSending || IsDisposed) + { + return; + } + + _isSending = true; + + while (_sendBuffers.Count > 0) + { + var memoryStreamBuffer = _sendBuffers.Dequeue(); + _sendArgs.UserToken = memoryStreamBuffer; + _sendArgs.SetBuffer(new ArraySegment(memoryStreamBuffer.GetBuffer(), 0, (int)memoryStreamBuffer.Position)); + + try + { + if (_socket.SendAsync(_sendArgs)) + { + break; + } + + ReturnMemoryStream(memoryStreamBuffer); + } + catch + { + _isSending = false; + return; + } + } + + _isSending = false; + } + + private void ReturnMemoryStream(MemoryStreamBuffer memoryStream) + { + if (memoryStream.MemoryStreamBufferSource == MemoryStreamBufferSource.Pack) + { + _network.MemoryStreamBufferPool.ReturnMemoryStream(memoryStream); + } + } + + private void OnSendCompletedHandler(object sender, SocketAsyncEventArgs asyncEventArgs) + { + if (asyncEventArgs.SocketError != SocketError.Success || asyncEventArgs.BytesTransferred == 0) + { + _isSending = false; + return; + } + + var memoryStreamBuffer = (MemoryStreamBuffer)asyncEventArgs.UserToken; + + Scene.ThreadSynchronizationContext.Post(() => + { + ReturnMemoryStream(memoryStreamBuffer); + + if (_sendBuffers.Count > 0) + { + Send(); + } + else + { + _isSending = false; + } + }); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Client/WebSocketClientNetwork.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Client/WebSocketClientNetwork.cs new file mode 100644 index 0000000..45e69e8 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Client/WebSocketClientNetwork.cs @@ -0,0 +1,345 @@ +#if FANTASY_NET || FANTASY_CONSOLE +using System.Buffers; +using System.IO.Pipelines; +using System.Net.WebSockets; +using Fantasy.Async; +using Fantasy.Helper; +using Fantasy.Network.Interface; +using Fantasy.PacketParser; +using Fantasy.Serialize; +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +namespace Fantasy.Network.WebSocket +{ + public sealed class WebSocketClientNetwork : AClientNetwork + { + private bool _isSending; + private bool _isInnerDispose; + private long _connectTimeoutId; + private ClientWebSocket _clientWebSocket; + private ReadOnlyMemoryPacketParser _packetParser; + private readonly Pipe _pipe = new Pipe(); + private readonly Queue _sendBuffers = new Queue(); + private readonly CancellationTokenSource _cancellationTokenSource = new CancellationTokenSource(); + + private Action _onConnectFail; + private Action _onConnectComplete; + private Action _onConnectDisconnect; + + public void Initialize(NetworkTarget networkTarget) + { + base.Initialize(NetworkType.Client, NetworkProtocolType.WebSocket, networkTarget); + _packetParser = PacketParserFactory.CreateClientReadOnlyMemoryPacket(this); + } + + public override void Dispose() + { + if (IsDisposed || _isInnerDispose) + { + return; + } + + try + { + _isInnerDispose = true; + + if (!_cancellationTokenSource.IsCancellationRequested) + { + try + { + _cancellationTokenSource.Cancel(); + } + catch (OperationCanceledException) + { + // 通常情况下,此处的异常可以忽略 + } + } + + ClearConnectTimeout(); + WebSocketClientDisposeAsync().Coroutine(); + _onConnectDisconnect?.Invoke(); + _packetParser.Dispose(); + _packetParser = null; + _isSending = false; + } + catch (Exception e) + { + Log.Error(e); + } + finally + { + base.Dispose(); + } + } + + private async FTask WebSocketClientDisposeAsync() + { + if (_clientWebSocket == null) + { + return; + } + + await _clientWebSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", CancellationToken.None); + _clientWebSocket.Dispose(); + _clientWebSocket = null; + } + + public override Session Connect(string remoteAddress, Action onConnectComplete, Action onConnectFail, Action onConnectDisconnect, bool isHttps, int connectTimeout = 5000) + { + if (IsInit) + { + throw new NotSupportedException( + $"WebSocketClientNetwork Id:{Id} Has already been initialized. If you want to call Connect again, please re instantiate it."); + } + + IsInit = true; + _onConnectFail = onConnectFail; + _onConnectComplete = onConnectComplete; + _onConnectDisconnect = onConnectDisconnect; + // 设置连接超时定时器 + _connectTimeoutId = Scene.TimerComponent.Net.OnceTimer(connectTimeout, () => + { + _onConnectFail?.Invoke(); + Dispose(); + }); + + _clientWebSocket = new ClientWebSocket(); + var webSocketAddress = WebSocketHelper.GetWebSocketAddress(remoteAddress, isHttps); + + try + { + _clientWebSocket.ConnectAsync(new Uri(webSocketAddress), _cancellationTokenSource.Token).Wait(); + + if (_cancellationTokenSource.IsCancellationRequested) + { + return null; + } + } + catch (WebSocketException wse) + { + Log.Error($"WebSocket error: {wse.Message}"); + Dispose(); + return null; + } + catch (Exception e) + { + Log.Error($"An error occurred: {e.Message}"); + Dispose(); + return null; + } + + ClearConnectTimeout(); + ReadPipeDataAsync().Coroutine(); + ReceiveSocketAsync().Coroutine(); + _onConnectComplete?.Invoke(); + Session = Session.Create(this, null); + return Session; + } + + #region ReceiveSocket + + private async FTask ReceiveSocketAsync() + { + while (!_cancellationTokenSource.IsCancellationRequested) + { + try + { + var memory = _pipe.Writer.GetMemory(8192); + // 这里接收的数据不一定是一个完整的包。如果大于8192就会分成多个包。 + var receiveResult = await _clientWebSocket.ReceiveAsync(memory, _cancellationTokenSource.Token); + + if (receiveResult.MessageType == WebSocketMessageType.Close) + { + break; + } + + var count = receiveResult.Count; + + if (count > 0) + { + await PipeWriterFlushAsync(count); + } + } + catch (OperationCanceledException) + { + break; + } + catch (ObjectDisposedException) + { + Dispose(); + break; + } + // 这个先暂时注释掉,因为有些时候会出现WebSocketException + // 因为会出现这个挥手的错误,下个版本处理一下。 + // The remote party closed the WebSocket connection without completing the close handshake. + // catch (WebSocketException wse) + // { + // Log.Error($"WebSocket error: {wse.Message}"); + // Dispose(); + // break; + // } + catch (Exception e) + { + Log.Error(e); + } + } + + await _pipe.Writer.CompleteAsync(); + } + + private async FTask PipeWriterFlushAsync(int count) + { + _pipe.Writer.Advance(count); + await _pipe.Writer.FlushAsync(); + } + + #endregion + + #region ReceivePipeData + + private async FTask ReadPipeDataAsync() + { + var pipeReader = _pipe.Reader; + while (!_cancellationTokenSource.IsCancellationRequested) + { + ReadResult result = default; + + try + { + result = await pipeReader.ReadAsync(_cancellationTokenSource.Token); + } + catch (OperationCanceledException) + { + // 出现这个异常表示取消了_cancellationTokenSource。一般Channel断开会取消。 + break; + } + + var buffer = result.Buffer; + var consumed = buffer.Start; + var examined = buffer.End; + + while (TryReadMessage(ref buffer, out var message)) + { + ReceiveData(ref message); + consumed = buffer.Start; + } + + if (result.IsCompleted) + { + break; + } + + pipeReader.AdvanceTo(consumed, examined); + } + + await pipeReader.CompleteAsync(); + } + + private bool TryReadMessage(ref ReadOnlySequence buffer, out ReadOnlyMemory message) + { + if (buffer.Length == 0) + { + message = default; + return false; + } + + message = buffer.First; + + if (message.Length == 0) + { + message = default; + return false; + } + + buffer = buffer.Slice(message.Length); + return true; + } + + private void ReceiveData(ref ReadOnlyMemory buffer) + { + try + { + while (_packetParser.UnPack(ref buffer, out var packInfo)) + { + if (_cancellationTokenSource.IsCancellationRequested) + { + return; + } + + Session.Receive(packInfo); + } + } + catch (ScanException e) + { + Log.Warning(e.Message); + Dispose(); + } + catch (Exception e) + { + Log.Error(e); + Dispose(); + } + } + + #endregion + + #region Send + + public override void Send(uint rpcId, long routeId, MemoryStreamBuffer memoryStream, IMessage message) + { + _sendBuffers.Enqueue(_packetParser.Pack(ref rpcId, ref routeId, memoryStream, message)); + + if (!_isSending) + { + Send().Coroutine(); + } + } + + private async FTask Send() + { + if (_isSending || IsDisposed) + { + return; + } + + _isSending = true; + + while (_isSending) + { + if (!_sendBuffers.TryDequeue(out var memoryStream)) + { + _isSending = false; + return; + } + + await _clientWebSocket.SendAsync(new ArraySegment(memoryStream.GetBuffer(), 0, (int)memoryStream.Position), WebSocketMessageType.Binary, true, _cancellationTokenSource.Token); + + if (memoryStream.MemoryStreamBufferSource == MemoryStreamBufferSource.Pack) + { + MemoryStreamBufferPool.ReturnMemoryStream(memoryStream); + } + } + } + + #endregion + + public override void RemoveChannel(uint channelId) + { + Dispose(); + } + + private void ClearConnectTimeout() + { + if (_connectTimeoutId == 0) + { + return; + } + + Scene?.TimerComponent?.Net?.Remove(ref _connectTimeoutId); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Client/WebSocketClientNetworkWebgl.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Client/WebSocketClientNetworkWebgl.cs new file mode 100644 index 0000000..36ef84d --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Client/WebSocketClientNetworkWebgl.cs @@ -0,0 +1,190 @@ +#if !FANTASY_NET && !FANTASY_CONSOLE +using System; +using System.Collections.Generic; +using System.IO; +using Fantasy.Helper; +using Fantasy.Network.Interface; +using Fantasy.PacketParser; +using Fantasy.Serialize; +using UnityWebSocket; + +namespace Fantasy.Network.WebSocket +{ + // 因为webgl的限制、注定这个要是在游戏主线程里。所以这个库不会再其他线程执行的。 + // WebGL:在WebGL环境下运行 + // 另外不是运行在WebGL环境下,也没必要使用WebSocket协议了。完全可以使用TCP或KCP运行。同样也不会有那个队列产生的GC。 + public class WebSocketClientNetwork : AClientNetwork + { + private UnityWebSocket.WebSocket _webSocket; + private bool _isInnerDispose; + private bool _isConnected; + private long _connectTimeoutId; + private BufferPacketParser _packetParser; + private readonly Queue _messageCache = new Queue(); + + private Action _onConnectFail; + private Action _onConnectComplete; + private Action _onConnectDisconnect; + + public void Initialize(NetworkTarget networkTarget) + { + base.Initialize(NetworkType.Client, NetworkProtocolType.WebSocket, networkTarget); + _packetParser = PacketParserFactory.CreateClient(this); + } + + public override void Dispose() + { + if (IsDisposed || _isInnerDispose) + { + return; + } + + try + { + _isInnerDispose = true; + ClearConnectTimeout(); + + if (_webSocket != null && _webSocket.ReadyState != WebSocketState.Closed) + { + _onConnectDisconnect?.Invoke(); + _webSocket.CloseAsync(); + } + + _packetParser.Dispose(); + _messageCache.Clear(); + } + catch (Exception e) + { + Log.Error(e); + } + finally + { + base.Dispose(); + } + } + + public override Session Connect(string remoteAddress, Action onConnectComplete, Action onConnectFail, Action onConnectDisconnect, bool isHttps, int connectTimeout = 5000) + { + // 如果已经初始化过一次,抛出异常,要求重新实例化 + + if (IsInit) + { + throw new NotSupportedException($"WebSocketClientNetwork Id:{Id} Has already been initialized. If you want to call Connect again, please re instantiate it."); + } + + IsInit = true; + _onConnectFail = onConnectFail; + _onConnectComplete = onConnectComplete; + _onConnectDisconnect = onConnectDisconnect; + _connectTimeoutId = Scene.TimerComponent.Net.OnceTimer(connectTimeout, () => + { + _onConnectFail?.Invoke(); + Dispose(); + }); + var webSocketAddress = WebSocketHelper.GetWebSocketAddress(remoteAddress, isHttps); + _webSocket = new UnityWebSocket.WebSocket(webSocketAddress); + _webSocket.OnOpen += OnNetworkConnectComplete; + _webSocket.OnMessage += OnReceiveComplete; + _webSocket.OnClose += (sender, args) => + { + _onConnectDisconnect?.Invoke(); + Dispose(); + }; + _webSocket.ConnectAsync(); + Session = Session.Create(this, null); + return Session; + } + + private void OnNetworkConnectComplete(object sender, OpenEventArgs e) + { + if (IsDisposed) + { + return; + } + + _isConnected = true; + ClearConnectTimeout(); + _onConnectComplete?.Invoke(); + + while (_messageCache.TryDequeue(out var memoryStream)) + { + Send(memoryStream); + } + } + + #region Receive + + private void OnReceiveComplete(object sender, MessageEventArgs e) + { + try + { + // WebSocket 协议已经在协议层面处理了消息的边界问题,因此不需要额外的粘包处理逻辑。 + // 所以如果解包的时候出现任何错误只能是恶意攻击造成的。 + var rawDataLength = e.RawData.Length; + _packetParser.UnPack(e.RawData, ref rawDataLength, out var packInfo); + Session.Receive(packInfo); + } + catch (ScanException ex) + { + Log.Warning($"{ex}"); + Dispose(); + } + catch (Exception ex) + { + Log.Error($"{ex}"); + Dispose(); + } + } + + #endregion + + #region Send + + public override void Send(uint rpcId, long routeId, MemoryStreamBuffer memoryStream, IMessage message) + { + if (IsDisposed) + { + return; + } + + var buffer = _packetParser.Pack(ref rpcId, ref routeId, memoryStream, message); + + if (!_isConnected) + { + _messageCache.Enqueue(buffer); + return; + } + + Send(buffer); + } + + private void Send(MemoryStreamBuffer memoryStream) + { + _webSocket.SendAsync(memoryStream.GetBuffer(), 0, (int)memoryStream.Position); +#if !UNITY_EDITOR && UNITY_WEBGL + if (memoryStream.MemoryStreamBufferSource == MemoryStreamBufferSource.Pack) + { + MemoryStreamBufferPool.ReturnMemoryStream(memoryStream); + } +#endif + } + + #endregion + + public override void RemoveChannel(uint channelId) + { + Dispose(); + } + + private void ClearConnectTimeout() + { + if (_connectTimeoutId == 0) + { + return; + } + + Scene?.TimerComponent?.Net?.Remove(ref _connectTimeoutId); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Server/WebSocketServerNetwork.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Server/WebSocketServerNetwork.cs new file mode 100644 index 0000000..09feb2b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Server/WebSocketServerNetwork.cs @@ -0,0 +1,112 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#if FANTASY_NET +using System.Net; +using System.Security.Cryptography.X509Certificates; +using Fantasy.Async; +using Fantasy.Network.Interface; + +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +// ReSharper disable PossibleMultipleEnumeration +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +namespace Fantasy.Network.WebSocket; + +public class WebSocketServerNetwork : ANetwork +{ + private Random _random; + private HttpListener _httpListener; + private readonly Dictionary _connectionChannel = new Dictionary(); + + public void Initialize(NetworkTarget networkTarget, string bindIp, int port) + { + base.Initialize(NetworkType.Server, NetworkProtocolType.WebSocket, networkTarget); + + try + { + _random = new Random(); + _httpListener = new HttpListener(); + StartAcceptAsync(bindIp, port).Coroutine(); + } + catch (HttpListenerException e) + { + if (e.ErrorCode == 5) + { + throw new Exception($"CMD管理员中输入: netsh http add urlacl url=http://*:8080/ user=Everyone", e); + } + + Log.Error(e); + } + catch (Exception e) + { + Log.Error(e); + } + } + + public override void Dispose() + { + if (IsDisposed) + { + return; + } + + if (_httpListener != null) + { + _httpListener.Close(); + _httpListener = null; + } + + foreach (var channel in _connectionChannel.Values.ToArray()) + { + channel.Dispose(); + } + + _connectionChannel.Clear(); + base.Dispose(); + } + + private async FTask StartAcceptAsync(string bindIp, int port) + { + var listenUrl = ""; + var certificatePath = Path.Combine(AppContext.BaseDirectory, $"certificate{bindIp}{port}"); + listenUrl = Directory.Exists(certificatePath) ? $"https://{bindIp}:{port}/" : $"http://{bindIp}:{port}/"; + _httpListener.Prefixes.Add(listenUrl); + _httpListener.Start(); + Log.Info($"SceneConfigId = {Scene.SceneConfigId} WebSocketServer Listen {listenUrl}"); + while (!IsDisposed) + { + try + { + var httpListenerContext = await _httpListener.GetContextAsync(); + var webSocketContext = await httpListenerContext.AcceptWebSocketAsync(null); + var channelId = 0xC0000000 | (uint) _random.Next(); + + while (_connectionChannel.ContainsKey(channelId)) + { + channelId = 0xC0000000 | (uint) _random.Next(); + } + + _connectionChannel.Add(channelId, new WebSocketServerNetworkChannel(this, channelId, webSocketContext, httpListenerContext.Request.RemoteEndPoint)); + } + catch (Exception e) + { + Log.Error(e); + } + } + } + + public override void RemoveChannel(uint channelId) + { + if (IsDisposed || !_connectionChannel.Remove(channelId, out var channel)) + { + return; + } + + if (channel.IsDisposed) + { + return; + } + + channel.Dispose(); + } +} +#endif diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Server/WebSocketServerNetworkChannel.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Server/WebSocketServerNetworkChannel.cs new file mode 100644 index 0000000..3b8ee90 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Protocol/WebSocket/Server/WebSocketServerNetworkChannel.cs @@ -0,0 +1,253 @@ +#if FANTASY_NET +using System.Buffers; +using System.IO.Pipelines; +using System.Net; +using System.Net.Sockets; +using System.Net.WebSockets; +using Fantasy.Async; +using Fantasy.Network.Interface; +using Fantasy.PacketParser; +using Fantasy.Serialize; +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Network.WebSocket; + +public sealed class WebSocketServerNetworkChannel : ANetworkServerChannel +{ + private bool _isSending; + private bool _isInnerDispose; + private readonly Pipe _pipe = new Pipe(); + private readonly System.Net.WebSockets.WebSocket _webSocket; + private readonly WebSocketServerNetwork _network; + private readonly ReadOnlyMemoryPacketParser _packetParser; + private readonly Queue _sendBuffers = new Queue(); + private readonly CancellationTokenSource _cancellationTokenSource = new CancellationTokenSource(); + + public WebSocketServerNetworkChannel(ANetwork network, uint id, HttpListenerWebSocketContext httpListenerWebSocketContext, IPEndPoint remoteEndPoint) : base(network, id, remoteEndPoint) + { + _network = (WebSocketServerNetwork)network; + _webSocket = httpListenerWebSocketContext.WebSocket; + _packetParser = PacketParserFactory.CreateServerReadOnlyMemoryPacket(network); + ReadPipeDataAsync().Coroutine(); + ReceiveSocketAsync().Coroutine(); + } + + public override void Dispose() + { + if (IsDisposed || _isInnerDispose) + { + return; + } + + _isInnerDispose = true; + if (!_cancellationTokenSource.IsCancellationRequested) + { + try + { + _cancellationTokenSource.Cancel(); + } + catch (OperationCanceledException) + { + // 通常情况下,此处的异常可以忽略 + } + } + _sendBuffers.Clear(); + _network.RemoveChannel(Id); + if (_webSocket.State == WebSocketState.Open || _webSocket.State == WebSocketState.CloseReceived) + { + _webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "Normal Closure", + _cancellationTokenSource.Token).GetAwaiter().GetResult(); + } + _webSocket.Dispose(); + _isSending = false; + base.Dispose(); + } + + #region ReceiveSocket + + private async FTask ReceiveSocketAsync() + { + while (!_cancellationTokenSource.IsCancellationRequested) + { + try + { + var memory = _pipe.Writer.GetMemory(8192); + // 这里接收的数据不一定是一个完整的包。如果大于8192就会分成多个包。 + var receiveResult = await _webSocket.ReceiveAsync(memory, _cancellationTokenSource.Token); + + if (receiveResult.MessageType == WebSocketMessageType.Close) + { + Dispose(); + break; + } + + var count = receiveResult.Count; + + if (count > 0) + { + await PipeWriterFlushAsync(count); + } + } + catch (OperationCanceledException) + { + break; + } + catch (ObjectDisposedException) + { + Dispose(); + break; + } + catch (WebSocketException) + { + // Log.Error($"WebSocket error: {wse.Message}"); + Dispose(); + break; + } + catch (Exception e) + { + Log.Error(e); + } + } + + await _pipe.Writer.CompleteAsync(); + } + + private async FTask PipeWriterFlushAsync(int count) + { + _pipe.Writer.Advance(count); + await _pipe.Writer.FlushAsync(); + } + + #endregion + + #region ReceivePipeData + + private async FTask ReadPipeDataAsync() + { + var pipeReader = _pipe.Reader; + while (!_cancellationTokenSource.IsCancellationRequested) + { + ReadResult result = default; + + try + { + result = await pipeReader.ReadAsync(_cancellationTokenSource.Token); + } + catch (OperationCanceledException) + { + // 出现这个异常表示取消了_cancellationTokenSource。一般Channel断开会取消。 + break; + } + + var buffer = result.Buffer; + var consumed = buffer.Start; + var examined = buffer.End; + + while (TryReadMessage(ref buffer, out var message)) + { + ReceiveData(ref message); + consumed = buffer.Start; + } + + if (result.IsCompleted) + { + break; + } + + pipeReader.AdvanceTo(consumed, examined); + } + + await pipeReader.CompleteAsync(); + } + + private bool TryReadMessage(ref ReadOnlySequence buffer, out ReadOnlyMemory message) + { + if (buffer.Length == 0) + { + message = default; + return false; + } + + message = buffer.First; + + if (message.Length == 0) + { + message = default; + return false; + } + + buffer = buffer.Slice(message.Length); + return true; + } + + private void ReceiveData(ref ReadOnlyMemory buffer) + { + try + { + while (_packetParser.UnPack(ref buffer, out var packInfo)) + { + if (_cancellationTokenSource.IsCancellationRequested) + { + return; + } + + Session.Receive(packInfo); + } + } + catch (ScanException e) + { + Log.Warning($"RemoteAddress:{RemoteEndPoint} \n{e}"); + Dispose(); + } + catch (Exception e) + { + Log.Error($"RemoteAddress:{RemoteEndPoint} \n{e}"); + Dispose(); + } + } + + #endregion + + #region Send + + public override void Send(uint rpcId, long routeId, MemoryStreamBuffer memoryStream, IMessage message) + { + _sendBuffers.Enqueue(_packetParser.Pack(ref rpcId, ref routeId, memoryStream, message)); + + if (!_isSending) + { + Send().Coroutine(); + } + } + + private async FTask Send() + { + if (_isSending || IsDisposed) + { + return; + } + + _isSending = true; + + while (_isSending) + { + if (!_sendBuffers.TryDequeue(out var memoryStream)) + { + _isSending = false; + return; + } + + await _webSocket.SendAsync(new ArraySegment(memoryStream.GetBuffer(), 0, (int)memoryStream.Position), WebSocketMessageType.Binary, true, _cancellationTokenSource.Token); + + if (memoryStream.MemoryStreamBufferSource == MemoryStreamBufferSource.Pack) + { + _network.MemoryStreamBufferPool.ReturnMemoryStream(memoryStream); + } + } + } + + #endregion +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/RoamingComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/RoamingComponent.cs new file mode 100644 index 0000000..a42d582 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/RoamingComponent.cs @@ -0,0 +1,254 @@ +#if FANTASY_NET +using System.Runtime.CompilerServices; +using Fantasy.Async; +using Fantasy.Entitas; +using Fantasy.Timer; +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable. +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8601 // Possible null reference assignment. +#pragma warning disable CS8603 // Possible null reference return. + +namespace Fantasy.Network.Roaming; + +/// +/// 漫游组件,用来管理当然Scene下的所有漫游消息。 +/// 大多数是在Gate这样的转发服务器上创建的。 +/// +public sealed class RoamingComponent : Entity +{ + private TimerSchedulerNet _timerSchedulerNet; + private readonly Dictionary _sessionRoamingComponents = new(); + private readonly Dictionary _delayRemoveTaskId = new(); + + internal RoamingComponent Initialize() + { + _timerSchedulerNet = Scene.TimerComponent.Net; + return this; + } + + /// + /// 销毁方法。 + /// + public override void Dispose() + { + DisposeAsync().Coroutine(); + } + + private async FTask DisposeAsync() + { + foreach (var (_,taskId) in _delayRemoveTaskId) + { + _timerSchedulerNet.Remove(taskId); + } + + _delayRemoveTaskId.Clear(); + + foreach (var (_, sessionRoamingComponent) in _sessionRoamingComponents) + { + await sessionRoamingComponent.UnLink(); + } + + _sessionRoamingComponents.Clear(); + _timerSchedulerNet = null; + base.Dispose(); + } + + /// + /// 给Session会话增加漫游功能 + /// 如果指定的roamingId已经存在漫游,会把这个漫游功能和当前Session会话关联起来。 + /// + /// + /// 自定义roamingId,这个Id在漫游中并没有实际作用,但用户可以用这个id来进行标记。。 + /// 是否在Session断开的时候自动断开漫游功能。 + /// 如果开启了自定断开漫游功能需要设置一个延迟多久执行断开。 + /// 创建成功会返回SessionRoamingComponent组件,这个组件提供漫游的所有功能。 + public SessionRoamingComponent Create(Session session, long roamingId, bool isAutoDispose, int delayRemove) + { + if (session.SessionRoamingComponent != null) + { + if (session.SessionRoamingComponent.Id != roamingId) + { + Log.Error("The current session has created a SessionRoamingComponent."); + return null; + } + } + else + { + if (!_sessionRoamingComponents.TryGetValue(roamingId, out var sessionRoamingComponent)) + { + sessionRoamingComponent = Entity.Create(Scene, roamingId, true, true); + sessionRoamingComponent.Initialize(session); + _sessionRoamingComponents.Add(roamingId, sessionRoamingComponent); + } + } + + if (isAutoDispose) + { + session.AddComponent(roamingId).DelayRemove = delayRemove; + } + + return session.SessionRoamingComponent; + } + + /// + /// 获取当前Session会话的漫游组件 + /// + /// + /// + public SessionRoamingComponent Get(Session session) + { + var sessionRoamingFlgComponent = session.GetComponent(); + + if (sessionRoamingFlgComponent != null) + { + if (_sessionRoamingComponents.TryGetValue(sessionRoamingFlgComponent.Id, out var sessionRoamingComponent)) + { + return sessionRoamingComponent; + } + + Log.Error($"There is no SessionRoamingComponent with roamingId: {sessionRoamingFlgComponent.Id}."); + } + else + { + Log.Error("The current session has not created a roaming session yet, so you need to create one first."); + } + + return null; + } + + /// + /// 获取当前Session会话的漫游组件 + /// + /// + /// + /// + public bool TryGet(Session session, out SessionRoamingComponent sessionRoamingComponent) + { + var sessionRoamingFlgComponent = session.GetComponent(); + + if (sessionRoamingFlgComponent != null) + { + return _sessionRoamingComponents.TryGetValue(sessionRoamingFlgComponent.Id, out sessionRoamingComponent); + } + + sessionRoamingComponent = null; + return false; + } + + /// + /// 移除一个漫游 + /// + /// + /// 要移除的RoamingType,默认不设置是移除所有漫游。 + /// 当设置了延迟移除时间后,会在设置的时间后再进行移除。 + public async FTask Remove(long roamingId, int roamingType, int delayRemove = 0) + { + if (_delayRemoveTaskId.Remove(roamingId, out var taskId)) + { + _timerSchedulerNet.Remove(taskId); + } + + if (delayRemove <= 0) + { + await InnerRemove(roamingId, roamingType); + return; + } + + taskId = _timerSchedulerNet.OnceTimer(delayRemove, () => + { InnerRemove(roamingId, roamingType).Coroutine(); }); + _delayRemoveTaskId.Add(roamingId, taskId); + } + + private async FTask InnerRemove(long roamingId, int roamingType) + { + if (!_sessionRoamingComponents.Remove(roamingId, out var sessionRoamingComponent)) + { + return; + } + + await sessionRoamingComponent.UnLink(roamingType); + sessionRoamingComponent.Dispose(); + _delayRemoveTaskId.Remove(roamingId); + } +} + +/// +/// 漫游Roaming帮助类 +/// +public static class RoamingHelper +{ + /// + /// 给Session会话增加漫游功能 + /// 如果指定的roamingId已经存在漫游,会把这个漫游功能和当前Session会话关联起来。 + /// + /// + /// 自定义roamingId,这个Id在漫游中并没有实际作用,但用户可以用这个id来进行标记。 + /// 是否在Session断开的时候自动断开漫游功能。 + /// 如果开启了自定断开漫游功能需要设置一个延迟多久执行断开。 + /// 创建成功会返回SessionRoamingComponent组件,这个组件提供漫游的所有功能。 + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static SessionRoamingComponent CreateRoaming(this Session session, long roamingId, bool isAutoDispose = true, int delayRemove = 1000 * 60 * 3) + { + return session.Scene.RoamingComponent.Create(session, roamingId, isAutoDispose, delayRemove); + } + + /// + /// 获取当前Session会话的漫游组件 + /// + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static SessionRoamingComponent GetRoaming(this Session session) + { + return session.Scene.RoamingComponent.Get(session); + } + + /// + /// 获取当前Session会话的漫游组件 + /// + /// + /// + /// 如果返回为false表示没有获取到漫游组件。 + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool TryGetRoaming(this Session session, out SessionRoamingComponent sessionRoamingComponent) + { + return session.Scene.RoamingComponent.TryGet(session, out sessionRoamingComponent); + } + + /// + /// 移除一个漫游 + /// + /// + /// 要移除的RoamingType,默认不设置是移除所有漫游。 + /// 当设置了延迟移除时间后,会在设置的时间后再进行移除。 + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static async FTask RemoveRoaming(this Session session, int roamingType = 0, int delayRemove = 0) + { + if (session.SessionRoamingComponent == null || session.SessionRoamingComponent.Id == 0) + { + return; + } + + await session.Scene.RoamingComponent.Remove(session.SessionRoamingComponent.Id, roamingType, delayRemove); + } + + /// + /// 移除一个漫游 + /// + /// + /// + /// 要移除的RoamingType,默认不设置是移除所有漫游。 + /// 当设置了延迟移除时间后,会在设置的时间后再进行移除。 + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static async FTask RemoveRoaming(Scene scene, long roamingId, int roamingType = 0, int delayRemove = 0) + { + if (roamingId == 0) + { + return; + } + + await scene.RoamingComponent.Remove(roamingId, roamingType, delayRemove); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/SessionRoamingComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/SessionRoamingComponent.cs new file mode 100644 index 0000000..c5ce55a --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/SessionRoamingComponent.cs @@ -0,0 +1,279 @@ +#if FANTASY_NET +using Fantasy.Async; +using Fantasy.Entitas; +using Fantasy.Entitas.Interface; +using Fantasy.InnerMessage; +using Fantasy.Network.Interface; +using Fantasy.PacketParser.Interface; +using Fantasy.Platform.Net; +using Fantasy.Scheduler; +using Fantasy.Timer; +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8601 // Possible null reference assignment. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable. +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. + +namespace Fantasy.Network.Roaming; + +internal sealed class SessionRoamingComponentDestroySystem : DestroySystem +{ + protected override void Destroy(SessionRoamingComponent self) + { + self.RoamingLock.Dispose(); + self.RoamingMessageLock.Dispose(); + + self.RoamingLock = null; + self.RoamingMessageLock = null; + self.TimerComponent = null; + self.NetworkMessagingComponent = null; + self.MessageDispatcherComponent = null; + } +} + +/// +/// Session的漫游组件。 +/// 用于关联对应的Session的功能。 +/// 但这个组件并不会挂载到这个Session下。 +/// +public sealed class SessionRoamingComponent : Entity +{ + internal CoroutineLock RoamingLock; + internal CoroutineLock RoamingMessageLock; + internal TimerComponent TimerComponent; + internal NetworkMessagingComponent NetworkMessagingComponent; + internal MessageDispatcherComponent MessageDispatcherComponent; + /// + /// 漫游的列表。 + /// + private readonly Dictionary _roaming = new Dictionary(); + + internal void Initialize(Session session) + { + session.SessionRoamingComponent = this; + + var scene = session.Scene; + TimerComponent = scene.TimerComponent; + NetworkMessagingComponent = scene.NetworkMessagingComponent; + MessageDispatcherComponent = scene.MessageDispatcherComponent; + RoamingLock = scene.CoroutineLockComponent.Create(this.GetType().TypeHandle.Value.ToInt64()); + RoamingMessageLock = scene.CoroutineLockComponent.Create(this.GetType().TypeHandle.Value.ToInt64()); + } + + #region Get + + /// + /// 尝试获取一个漫游。 + /// + /// + /// + /// + public bool TryGetRoaming(int roamingType, out Roaming roaming) + { + return _roaming.TryGetValue(roamingType, out roaming); + } + + #endregion + + #region Link + + /// + /// 建立漫游关系。 + /// + /// 要建立漫游协议的目标Scene的SceneConfig。 + /// 需要转发的Session + /// 要创建的漫游协议类型。 + /// 如果建立完成会返回为0,其余不为0的都是发生错误了。可以通过InnerErrorCode.cs来查看错误。 + public async FTask Link(Session session, SceneConfig targetSceneConfig, int roamingTyp) + { + return await Link(targetSceneConfig.RouteId, session.RuntimeId, roamingTyp); + } + + /// + /// 建立漫游关系。 + /// + /// 要建立漫游协议的目标Scene的RouteId。 + /// 需要转发的Session的RouteId。 + /// 要创建的漫游协议类型。 + /// 如果建立完成会返回为0,其余不为0的都是发生错误了。可以通过InnerErrorCode.cs来查看错误。 + public async FTask Link(long targetSceneRouteId, long forwardSessionRouteId, int roamingType) + { + if (_roaming.ContainsKey(roamingType)) + { + return InnerErrorCode.ErrLinkRoamingAlreadyExists; + } + + var response = (I_LinkRoamingResponse)await Scene.NetworkMessagingComponent.CallInnerRoute(targetSceneRouteId, + new I_LinkRoamingRequest() + { + RoamingId = Id, + RoamingType = roamingType, + ForwardSessionRouteId = forwardSessionRouteId, + SceneRouteId = Scene.RuntimeId + }); + + if (response.ErrorCode != 0) + { + return response.ErrorCode; + } + + var roaming = Entity.Create(Scene, true, true); + roaming.TerminusId = response.TerminusId; + roaming.TargetSceneRouteId = targetSceneRouteId; + roaming.ForwardSessionRouteId = forwardSessionRouteId; + roaming.SessionRoamingComponent = this; + roaming.RoamingType = roamingType; + roaming.RoamingLock = RoamingLock; + _roaming.Add(roamingType, roaming); + return 0; + } + + #endregion + + #region UnLink + + /// + /// 断开当前的所有漫游关系。 + /// 要移除的RoamingType,默认不设置是移除所有漫游。 + /// + public async FTask UnLink(int removeRoamingType = 0) + { + switch (removeRoamingType) + { + case 0: + { + foreach (var (roamingType,roaming) in _roaming) + { + try + { + var errorCode = await roaming.Disconnect(); + + if (errorCode != 0) + { + Log.Warning($"roaming roamingId:{Id} roamingType:{roamingType} disconnect errorCode:{errorCode}"); + } + } + finally + { + roaming.Dispose(); + } + } + + _roaming.Clear(); + return; + } + default: + { + if (!_roaming.Remove(removeRoamingType, out var roaming)) + { + return; + } + + var errorCode = await roaming.Disconnect(); + + if (errorCode != 0) + { + Log.Warning($"roaming roamingId:{Id} roamingType:{removeRoamingType} disconnect errorCode:{errorCode}"); + } + + roaming.Dispose(); + return; + } + } + } + + #endregion + + #region Message + + internal async FTask Send(int roamingType, Type requestType, APackInfo packInfo) + { + await Call(roamingType, requestType, packInfo); + } + + internal async FTask Call(int roamingType, Type requestType, APackInfo packInfo) + { + if (IsDisposed) + { + return MessageDispatcherComponent.CreateResponse(requestType, InnerErrorCode.ErrNotFoundRoaming); + } + + packInfo.IsDisposed = true; + + if (!_roaming.TryGetValue(roamingType, out var roaming)) + { + return MessageDispatcherComponent.CreateResponse(requestType, InnerErrorCode.ErrNotFoundRoaming); + } + + var failCount = 0; + var runtimeId = RuntimeId; + var routeId = roaming.TerminusId; + IResponse iRouteResponse = null; + + try + { + using (await RoamingMessageLock.Wait(roamingType, "RoamingComponent Call MemoryStream")) + { + while (!IsDisposed) + { + if (routeId == 0) + { + routeId = await roaming.GetTerminusId(); + } + + if (routeId == 0) + { + return MessageDispatcherComponent.CreateResponse(requestType, InnerErrorCode.ErrNotFoundRoaming); + } + + iRouteResponse = await NetworkMessagingComponent.CallInnerRoute(routeId, requestType, packInfo); + + if (runtimeId != RuntimeId) + { + iRouteResponse.ErrorCode = InnerErrorCode.ErrRoamingTimeout; + } + + switch (iRouteResponse.ErrorCode) + { + case InnerErrorCode.ErrRouteTimeout: + case InnerErrorCode.ErrRoamingTimeout: + { + return iRouteResponse; + } + case InnerErrorCode.ErrNotFoundRoute: + case InnerErrorCode.ErrNotFoundRoaming: + { + if (++failCount > 20) + { + Log.Error($"RoamingComponent.Call failCount > 20 route send message fail, LinkRoamingId: {routeId}"); + return iRouteResponse; + } + + await TimerComponent.Net.WaitAsync(100); + + if (runtimeId != RuntimeId) + { + iRouteResponse.ErrorCode = InnerErrorCode.ErrNotFoundRoaming; + } + routeId = 0; + continue; + } + default: + { + return iRouteResponse; // 对于其他情况,直接返回响应,无需额外处理 + } + } + } + } + } + finally + { + packInfo.Dispose(); + } + + return iRouteResponse; + } + + #endregion +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/SessionRoamingFlgComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/SessionRoamingFlgComponent.cs new file mode 100644 index 0000000..23f4c33 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/SessionRoamingFlgComponent.cs @@ -0,0 +1,23 @@ +#if FANTASY_NET +using Fantasy.Async; +using Fantasy.Entitas; +namespace Fantasy.Network.Roaming; + +internal sealed class SessionRoamingFlgComponent : Entity +{ + public int DelayRemove; + + public override void Dispose() + { + DisposeAsync().Coroutine(); + } + + private async FTask DisposeAsync() + { + var roamingId = Id; + await Scene.RoamingComponent.Remove(roamingId, 0, DelayRemove); + DelayRemove = 0; + base.Dispose(); + } +} +#endif diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/TerminusComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/TerminusComponent.cs new file mode 100644 index 0000000..0185261 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Component/TerminusComponent.cs @@ -0,0 +1,138 @@ +#if FANTASY_NET +using Fantasy.Async; +using Fantasy.DataStructure.Dictionary; +using Fantasy.Entitas; +using Fantasy.Network; +#pragma warning disable CS8601 // Possible null reference assignment. +#pragma warning disable CS8619 // Nullability of reference types in value doesn't match target type. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. + +namespace Fantasy.Network.Roaming; + +/// +/// 当Terminus创建完成后发送的事件参数 +/// +public struct OnCreateTerminus +{ + /// + /// 获取与事件关联的场景实体。 + /// + public readonly Scene Scene; + /// + /// 获取与事件关联的Terminus。 + /// + public readonly Terminus Terminus; + /// + /// 初始化一个新的 OnCreateTerminus 实例。 + /// + /// + /// + public OnCreateTerminus(Scene scene, Terminus terminus) + { + Scene = scene; + Terminus = terminus; + } +} + +/// +/// 漫游终端管理组件。 +/// 这个组件不需要手动挂载,会在Scene启动的时候自动挂载这个组件。 +/// +public sealed class TerminusComponent : Entity +{ + /// + /// 漫游终端的实体集合。 + /// + private readonly Dictionary _terminals = new(); + + /// + /// Dispose + /// + public override void Dispose() + { + foreach (var (_, terminus) in _terminals) + { + terminus.Dispose(); + } + + _terminals.Clear(); + base.Dispose(); + } + + /// + /// 创建一个新的漫游终端。 + /// + /// + /// + /// + /// + /// + public async FTask<(uint, Terminus)> Create(long roamingId, int roamingType, long forwardSessionRouteId, long forwardSceneRouteId) + { + if (_terminals.ContainsKey(roamingId)) + { + return (InnerErrorCode.ErrAddRoamingTerminalAlreadyExists, null); + } + + var terminus = roamingId == 0 + ? Entity.Create(Scene, false, true) + : Entity.Create(Scene, roamingId, false, true); + terminus.RoamingType = roamingType; + terminus.TerminusId = terminus.RuntimeId; + terminus.ForwardSceneRouteId = forwardSceneRouteId; + terminus.ForwardSessionRouteId = forwardSessionRouteId; + terminus.RoamingMessageLock = Scene.CoroutineLockComponent.Create(terminus.Type.TypeHandle.Value.ToInt64()); + await Scene.EventComponent.PublishAsync(new OnCreateTerminus(Scene, terminus)); + _terminals.Add(terminus.Id, terminus); + return (0U, terminus); + } + + /// + /// 添加一个漫游终端。 + /// + /// + public void AddTerminus(Terminus terminus) + { + _terminals.Add(terminus.Id, terminus); + } + + /// + /// 根据roamingId获取一个漫游终端。 + /// + /// + /// + /// + public bool TryGetTerminus(long roamingId, out Terminus terminus) + { + return _terminals.TryGetValue(roamingId, out terminus); + } + + /// + /// 根据roamingId获取一个漫游终端。 + /// + /// + /// + public Terminus GetTerminus(long roamingId) + { + return _terminals[roamingId]; + } + + /// + /// 根据roamingId移除一个漫游终端。 + /// + /// + /// + public void RemoveTerminus(long roamingId, bool isDispose = true) + { + if (!_terminals.Remove(roamingId, out var terminus)) + { + return; + } + + if (isDispose) + { + terminus.Dispose(); + } + } +} +#endif diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Entity/Roaming.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Entity/Roaming.cs new file mode 100644 index 0000000..33a5355 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Entity/Roaming.cs @@ -0,0 +1,132 @@ +#if FANTASY_NET +using Fantasy.Async; +using Fantasy.Entitas; +using Fantasy.InnerMessage; + +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable. + +namespace Fantasy.Network.Roaming; + +/// +/// 漫游实体 +/// +public sealed class Roaming : Entity +{ + /// + /// 连接到漫游TerminusId。 + /// 也可以理解为目标实体的RouteId。 + /// + internal long TerminusId; + /// + /// 漫游目标Scene的RouteId。 + /// + public long TargetSceneRouteId { get; internal set; } + /// + /// 漫游转发Session的RouteId。 + /// + public long ForwardSessionRouteId { get; internal set; } + /// + /// 当前漫游类型。 + /// + public int RoamingType { get; internal set; } + /// + /// 协程锁。 + /// + internal CoroutineLock RoamingLock; + /// + /// 当前正在执行的协程锁。 + /// + private WaitCoroutineLock? _waitCoroutineLock; + /// + /// 关联Session的漫游组件。 + /// + internal SessionRoamingComponent SessionRoamingComponent; + /// + /// 获得当前漫游对应终端的TerminusId。 + /// + /// + internal async FTask GetTerminusId() + { + using (await RoamingLock.Wait(RoamingType,"Roaming.cs GetTerminusId")) + { + return TerminusId; + } + } + /// + /// 设置当前漫游对应的终端的TerminusId。 + /// + /// + internal async FTask SetTerminusId(long terminusId) + { + using (await RoamingLock.Wait(RoamingType,"Roaming.cs SetTerminusId")) + { + TerminusId = terminusId; + } + } + /// + /// 锁定TerminusId。 + /// + internal async FTask LockTerminusId() + { + _waitCoroutineLock = await RoamingLock.Wait(RoamingType,"Roaming.cs LockTerminusId"); + } + + /// + /// 解锁TerminusId。 + /// + /// + /// + internal void UnLockTerminusId(long terminusId, long targetSceneRouteId) + { + if (_waitCoroutineLock == null) + { + Log.Error("terminusId unlock waitCoroutineLock is null"); + return; + } + + TerminusId = terminusId; + TargetSceneRouteId = targetSceneRouteId; + _waitCoroutineLock.Dispose(); + _waitCoroutineLock = null; + } + + /// + /// 断开当前漫游的连接。 + /// + /// + public async FTask Disconnect() + { + var response = + await Scene.NetworkMessagingComponent.CallInnerRoute(TargetSceneRouteId, new I_UnLinkRoamingRequest() + { + RoamingId = SessionRoamingComponent.Id + }); + return response.ErrorCode; + } + /// + /// 销毁方法 + /// + public override void Dispose() + { + if (IsDisposed) + { + return; + } + + if (_waitCoroutineLock != null) + { + _waitCoroutineLock.Dispose(); + _waitCoroutineLock = null; + } + + TerminusId = 0; + TargetSceneRouteId = 0; + ForwardSessionRouteId = 0; + + RoamingLock = null; + SessionRoamingComponent = null; + base.Dispose(); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Entity/Terminus.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Entity/Terminus.cs new file mode 100644 index 0000000..8d4448b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Entity/Terminus.cs @@ -0,0 +1,338 @@ +#if FANTASY_NET +using Fantasy.Async; +using Fantasy.Entitas; +using Fantasy.InnerMessage; +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.Scheduler; +using MongoDB.Bson.Serialization.Attributes; +// ReSharper disable UnassignedField.Global +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable. +#pragma warning disable CS8603 // Possible null reference return. +namespace Fantasy.Network.Roaming; + +/// +/// 漫游终端实体 +/// +public sealed class Terminus : Entity +{ + /// + /// 当前漫游终端的TerminusId。 + /// 可以通过 TerminusId 发送消息给这个漫游终端。 + /// 也可以理解为实体的RuntimeId。 + /// + internal long TerminusId; + /// + /// 当前漫游终端的类型。 + /// + [BsonElement("r")] + internal int RoamingType; + /// + /// 漫游转发Session所在的Scene的RouteId。 + /// + [BsonElement("s")] + internal long ForwardSceneRouteId; + /// + /// 漫游转发Session的RouteId。 + /// 不知道原理千万不要手动赋值这个。 + /// + [BsonElement("f")] + internal long ForwardSessionRouteId; + /// + /// 关联的玩家实体 + /// + [BsonElement("e")] + public Entity TerminusEntity; + /// + /// 漫游消息锁。 + /// + [BsonIgnore] + internal CoroutineLock RoamingMessageLock; + /// + /// 获得转发的SessionRouteId,可以通过这个Id来发送消息来自动转发到客户端。 + /// + public long SessionRouteId => ForwardSessionRouteId; + /// + /// 存放其他漫游终端的Id。 + /// 通过这个Id可以发送消息给它。 + /// + [BsonIgnore] + private readonly Dictionary _roamingTerminusId = new Dictionary(); + /// + /// 创建关联的终端实体。 + /// 创建完成后,接收消息都是由关联的终端实体来处理。 + /// 注意,当你销毁这个实体的时候,并不能直接销毁Terminus,会导致无法接收到漫游消息。 + /// + /// + /// + public T LinkTerminusEntity() where T : Entity, new() + { + if (TerminusEntity != null) + { + Log.Error($"TerminusEntity:{TerminusEntity.Type.FullName} Already exists!"); + return null; + } + + var t = Entity.Create(Scene, true, true); + TerminusEntity = t; + TerminusId = TerminusEntity.RuntimeId; + return t; + } + + /// + /// 关联的终端实体。 + /// 注意,当你销毁这个实体的时候,并不能直接销毁Terminus,会导致无法接收到漫游消息 + /// + /// + public void LinkTerminusEntity(Entity entity) + { + if (entity == null) + { + Log.Error("Entity cannot be empty"); + return; + } + + if (TerminusEntity != null) + { + Log.Error($"TerminusEntity:{TerminusEntity.Type.FullName} Already exists!"); + return; + } + + TerminusEntity = entity; + TerminusId = TerminusEntity.RuntimeId; + } + + #region Transfer + + /// + /// 传送漫游终端 + /// 传送完成后,漫游终端和关联的玩家实体都会被销毁。 + /// 所以如果有其他组件关联这个实体,要提前记录好Id,方便传送后清理。 + /// + /// + public async FTask StartTransfer(long targetSceneRouteId) + { + var currentSceneRouteId = Scene.SceneConfig.RouteId; + if (targetSceneRouteId == currentSceneRouteId) + { + Log.Warning($"Unable to teleport to your own scene targetSceneRouteId:{targetSceneRouteId} == currentSceneRouteId:{currentSceneRouteId}"); + return 0; + } + + try + { + // 传送目标服务器之前要先锁定,防止再传送过程中还有其他消息发送过来。 + var lockErrorCode = await Lock(); + if (lockErrorCode != 0) + { + return lockErrorCode; + } + // 开始执行传送请求。 + var response = (I_TransferTerminusResponse)await Scene.NetworkMessagingComponent.CallInnerRoute( + targetSceneRouteId, + new I_TransferTerminusRequest() + { + Terminus = this + }); + if (response.ErrorCode != 0) + { + // 如果传送出现异常,需要先解锁,不然会出现一直卡死的问题。 + await UnLock(); + return response.ErrorCode; + } + // 在当前Scene下移除漫游终端。 + Scene.TerminusComponent.RemoveTerminus(Id); + } + catch (Exception e) + { + Log.Error(e); + // 如果代码执行出现任何异常,要先去解锁,避免会出现卡死的问题。 + await UnLock(); + return InnerErrorCode.ErrTerminusStartTransfer; + } + + return 0; + } + + /// + /// 传送完成。 + /// 当传送完成后,需要清理漫游终端。 + /// + /// + public async FTask TransferComplete(Scene scene) + { + // 首先恢复漫游终端的序列化数据。并且注册到框架中。 + Deserialize(scene); + TerminusId = RuntimeId; + if (TerminusEntity != null) + { + TerminusEntity.Deserialize(scene); + TerminusId = TerminusEntity.RuntimeId; + } + // 然后要解锁下漫游 + return await UnLock(); + } + + /// + /// 锁定漫游当执行锁定了后,所有消息都会被暂时放入队列中不会发送。 + /// 必须要解锁后才能继续发送消息。 + /// + /// + public async FTask Lock() + { + var response = await Scene.NetworkMessagingComponent.CallInnerRoute(ForwardSceneRouteId, + new I_LockTerminusIdRequest() + { + SessionRuntimeId = ForwardSessionRouteId, + RoamingType = RoamingType + }); + return response.ErrorCode; + } + + /// + /// 锁定漫游 + /// + /// + public async FTask UnLock() + { + var response = await Scene.NetworkMessagingComponent.CallInnerRoute(ForwardSceneRouteId, + new I_UnLockTerminusIdRequest() + { + SessionRuntimeId = ForwardSessionRouteId, + RoamingType = RoamingType, + TerminusId = TerminusId, + TargetSceneRouteId = Scene.RouteId + }); + return response.ErrorCode; + } + + #endregion + + #region Message + + private async FTask GetTerminusId(int roamingType) + { + if (IsDisposed) + { + return 0; + } + + var response = (I_GetTerminusIdResponse)await Scene.NetworkMessagingComponent.CallInnerRoute( + ForwardSceneRouteId, + new I_GetTerminusIdRequest() + { + SessionRuntimeId = ForwardSessionRouteId, + RoamingType = roamingType + }); + return response.TerminusId; + } + + /// + /// 发送一个消息给客户端 + /// + /// + public void Send(IRouteMessage message) + { + Scene.NetworkMessagingComponent.SendInnerRoute(ForwardSessionRouteId, message); + } + /// + /// 发送一个漫游消息 + /// + /// + /// + public void Send(int roamingType, IRoamingMessage message) + { + Call(roamingType, message).Coroutine(); + } + + /// + /// 发送一个漫游RPC消息。 + /// + /// + /// + /// + public async FTask Call(int roamingType, IRoamingMessage request) + { + if (IsDisposed) + { + return Scene.MessageDispatcherComponent.CreateResponse(request.GetType(), InnerErrorCode.ErrNotFoundRoaming); + } + + if (roamingType == RoamingType) + { + Log.Warning($"Does not support sending messages to the same scene as roamingType currentRoamingType:{RoamingType} roamingType:{roamingType}"); + return Scene.MessageDispatcherComponent.CreateResponse(request.GetType(), InnerErrorCode.ErrNotFoundRoaming); + } + + var failCount = 0; + var runtimeId = RuntimeId; + IResponse iRouteResponse = null; + _roamingTerminusId.TryGetValue(roamingType, out var routeId); + + using (await RoamingMessageLock.Wait(roamingType, "Terminus Call request")) + { + while (!IsDisposed) + { + if (routeId == 0) + { + routeId = await GetTerminusId(roamingType); + + if (routeId != 0) + { + _roamingTerminusId[roamingType] = routeId; + } + else + { + return Scene.MessageDispatcherComponent.CreateResponse(request.GetType(), InnerErrorCode.ErrNotFoundRoaming); + } + } + + iRouteResponse = await Scene.NetworkMessagingComponent.CallInnerRoute(routeId, request); + + if (runtimeId != RuntimeId) + { + iRouteResponse.ErrorCode = InnerErrorCode.ErrRoamingTimeout; + } + + switch (iRouteResponse.ErrorCode) + { + case InnerErrorCode.ErrRouteTimeout: + case InnerErrorCode.ErrRoamingTimeout: + { + return iRouteResponse; + } + case InnerErrorCode.ErrNotFoundRoute: + case InnerErrorCode.ErrNotFoundRoaming: + { + if (++failCount > 20) + { + Log.Error($"Terminus.Call failCount > 20 route send message fail, TerminusId: {routeId}"); + return iRouteResponse; + } + + await Scene.TimerComponent.Net.WaitAsync(100); + + if (runtimeId != RuntimeId) + { + iRouteResponse.ErrorCode = InnerErrorCode.ErrNotFoundRoaming; + } + + routeId = 0; + continue; + } + default: + { + return iRouteResponse; // 对于其他情况,直接返回响应,无需额外处理 + } + } + } + } + + return iRouteResponse; + } + + #endregion +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_GetTerminusIdRequestHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_GetTerminusIdRequestHandler.cs new file mode 100644 index 0000000..90f7ab9 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_GetTerminusIdRequestHandler.cs @@ -0,0 +1,32 @@ +#if FANTASY_NET +using Fantasy.Async; +using Fantasy.InnerMessage; +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.Network.Roaming; +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract + +namespace Fantasy.Roaming.Handler; + +internal sealed class I_GetTerminusIdRequestHandler : RouteRPC +{ + protected override async FTask Run(Scene scene, I_GetTerminusIdRequest request, I_GetTerminusIdResponse response, Action reply) + { + if (!scene.TryGetEntity(request.SessionRuntimeId, out var sessionEntity)) + { + response.ErrorCode = InnerErrorCode.ErrLockTerminusIdNotFoundSession; + return; + } + + var session = (Session)sessionEntity; + + if (!scene.RoamingComponent.TryGet(session, out var sessionRoamingComponent) || !sessionRoamingComponent.TryGetRoaming(request.RoamingType, out var sessionRoaming)) + { + response.ErrorCode = InnerErrorCode.ErrLockTerminusIdNotFoundRoamingType; + return; + } + + response.TerminusId = await sessionRoaming.GetTerminusId(); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_LinkRoamingRequestHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_LinkRoamingRequestHandler.cs new file mode 100644 index 0000000..6efb58c --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_LinkRoamingRequestHandler.cs @@ -0,0 +1,26 @@ +#if FANTASY_NET +using Fantasy.Async; +using Fantasy.InnerMessage; +using Fantasy.Network.Interface; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Roaming.Handler; + +public sealed class I_LinkRoamingRequestHandler : RouteRPC +{ + protected override async FTask Run(Scene scene, I_LinkRoamingRequest request, I_LinkRoamingResponse response, Action reply) + { + var (errorCode, roamingTerminal) = await scene.TerminusComponent.Create( + request.RoamingId, request.RoamingType, + request.ForwardSessionRouteId, request.SceneRouteId); + + if (errorCode != 0) + { + response.ErrorCode = errorCode; + return; + } + + response.TerminusId = roamingTerminal.TerminusId; + } +} +#endif diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_LockTerminusIdRequestHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_LockTerminusIdRequestHandler.cs new file mode 100644 index 0000000..c530a1e --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_LockTerminusIdRequestHandler.cs @@ -0,0 +1,35 @@ +#if FANTASY_NET +using Fantasy.Async; +using Fantasy.InnerMessage; +using Fantasy.Network; +using Fantasy.Network.Interface; +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Roaming.Handler; + +/// +/// 内部网络漫游锁定的请求处理。 +/// +internal sealed class I_LockTerminusIdRequestHandler : RouteRPC +{ + protected override async FTask Run(Scene scene, I_LockTerminusIdRequest request, I_LockTerminusIdResponse response, Action reply) + { + if (!scene.TryGetEntity(request.SessionRuntimeId, out var sessionEntity)) + { + response.ErrorCode = InnerErrorCode.ErrLockTerminusIdNotFoundSession; + return; + } + + var session = (Session)sessionEntity; + + if (!scene.RoamingComponent.TryGet(session, out var sessionRoamingComponent) || !sessionRoamingComponent.TryGetRoaming(request.RoamingType, out var sessionRoaming)) + { + response.ErrorCode = InnerErrorCode.ErrLockTerminusIdNotFoundRoamingType; + return; + } + + await sessionRoaming.LockTerminusId(); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_TransferTerminusRequestHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_TransferTerminusRequestHandler.cs new file mode 100644 index 0000000..162171f --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_TransferTerminusRequestHandler.cs @@ -0,0 +1,22 @@ +#if FANTASY_NET +using Fantasy.Async; +using Fantasy.InnerMessage; +using Fantasy.Network.Interface; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Roaming.Handler; + +/// +/// 传送漫游Terminus的请求处理 +/// +internal sealed class I_TransferTerminusRequestHandler : RouteRPC +{ + protected override async FTask Run(Scene scene, I_TransferTerminusRequest request, I_TransferTerminusResponse response, Action reply) + { + // 添加Terminus到当前Scene下。 + scene.TerminusComponent.AddTerminus(request.Terminus); + // 执行Terminus的传送完成逻辑。 + await request.Terminus.TransferComplete(scene); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_UnLinkRoamingRequestHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_UnLinkRoamingRequestHandler.cs new file mode 100644 index 0000000..5849b11 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_UnLinkRoamingRequestHandler.cs @@ -0,0 +1,16 @@ +#if FANTASY_NET +using Fantasy.Async; +using Fantasy.InnerMessage; +using Fantasy.Network.Interface; + +namespace Fantasy.Roaming.Handler; + +internal sealed class I_UnLinkRoamingRequestHandler : RouteRPC +{ + protected override async FTask Run(Scene scene, I_UnLinkRoamingRequest request, I_UnLinkRoamingResponse response, Action reply) + { + scene.TerminusComponent.RemoveTerminus(request.RoamingId, request.DisposeRoaming); + await FTask.CompletedTask; + } +} +#endif diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_UnLockTerminusIdRequestHandler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_UnLockTerminusIdRequestHandler.cs new file mode 100644 index 0000000..8a04079 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Roaming/Handler/I_UnLockTerminusIdRequestHandler.cs @@ -0,0 +1,36 @@ +#if FANTASY_NET +using Fantasy.Async; +using Fantasy.InnerMessage; +using Fantasy.Network; +using Fantasy.Network.Interface; +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Roaming.Handler; + +/// +/// 内部网络漫游解锁的请求处理。 +/// +internal sealed class I_UnLockTerminusIdRequestHandler : RouteRPC +{ + protected override async FTask Run(Scene scene, I_UnLockTerminusIdRequest request, I_UnLockTerminusIdResponse response, Action reply) + { + if (!scene.TryGetEntity(request.SessionRuntimeId, out var sessionEntity)) + { + response.ErrorCode = InnerErrorCode.ErrUnLockTerminusIdNotFoundSession; + return; + } + + var session = (Session)sessionEntity; + + if (!scene.RoamingComponent.TryGet(session, out var sessionRoamingComponent) || !sessionRoamingComponent.TryGetRoaming(request.RoamingType, out var sessionRoaming)) + { + response.ErrorCode = InnerErrorCode.ErrLockTerminusIdNotFoundRoamingType; + return; + } + + sessionRoaming.UnLockTerminusId(request.TerminusId, request.TargetSceneRouteId); + await FTask.CompletedTask; + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Route/RouteComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Route/RouteComponent.cs new file mode 100644 index 0000000..1ce1fe8 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Route/RouteComponent.cs @@ -0,0 +1,82 @@ +using Fantasy.Entitas; +using Fantasy.Entitas.Interface; + +#if FANTASY_NET +namespace Fantasy.Network; + +/// +/// RouteComponent的AwakeSystem +/// +public sealed class RouteComponentAwakeSystem : AwakeSystem +{ + /// + /// Awake + /// + /// + /// + protected override void Awake(RouteComponent self) + { + ((Session)self.Parent).RouteComponent = self; + } +} + +/// +/// 自定义Route组件、如果要自定义Route协议必须使用这个组件 +/// +public sealed class RouteComponent : Entity +{ + /// + /// 存储路由类型和路由ID的映射关系。 + /// + public readonly Dictionary RouteAddress = new Dictionary(); + + /// + /// 添加路由类型和路由ID的映射关系。 + /// + /// 路由类型。 + /// 路由ID。 + public void AddAddress(long routeType, long routeId) + { + RouteAddress.Add(routeType, routeId); + } + + /// + /// 移除指定路由类型的映射关系。 + /// + /// 路由类型。 + public void RemoveAddress(long routeType) + { + RouteAddress.Remove(routeType); + } + + /// + /// 获取指定路由类型的路由ID。 + /// + /// 路由类型。 + /// 路由ID。 + public long GetRouteId(long routeType) + { + return RouteAddress.GetValueOrDefault(routeType, 0); + } + + /// + /// 尝试获取指定路由类型的路由ID。 + /// + /// 路由类型。 + /// 输出的路由ID。 + /// 如果获取成功返回true,否则返回false。 + public bool TryGetRouteId(long routeType, out long routeId) + { + return RouteAddress.TryGetValue(routeType, out routeId); + } + + /// + /// 释放组件资源,清空映射关系。 + /// + public override void Dispose() + { + RouteAddress.Clear(); + base.Dispose(); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Component/ConsoleSessionHeartbeatComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Component/ConsoleSessionHeartbeatComponent.cs new file mode 100644 index 0000000..dc4677e --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Component/ConsoleSessionHeartbeatComponent.cs @@ -0,0 +1,156 @@ +// ReSharper disable MemberCanBePrivate.Global + +#if FANTASY_CONSOLE + +using System; +using Fantasy.Async; +using Fantasy.Entitas; +using Fantasy.Entitas.Interface; +using Fantasy.Helper; +using Fantasy.InnerMessage; +using Fantasy.Timer; +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +namespace Fantasy.Network +{ + public class SessionHeartbeatComponentAwakeSystem : AwakeSystem + { + protected override void Awake(SessionHeartbeatComponent self) + { + self.TimerComponent = self.Scene.TimerComponent; + } + } + + /// + /// 负责管理会话心跳的组件。 + /// + public class SessionHeartbeatComponent : Entity + { + public int TimeOut; + public long TimerId; + public long LastTime; + public long SelfRunTimeId; + public long TimeOutTimerId; + public long SessionRunTimeId; + public TimerComponent TimerComponent; + public EntityReference Session; + private readonly PingRequest _pingRequest = new PingRequest(); + + public int Ping { get; private set; } + + public override void Dispose() + { + if (IsDisposed) + { + return; + } + + Stop(); + Ping = 0; + Session = null; + TimeOut = 0; + SelfRunTimeId = 0; + base.Dispose(); + } + + /// + /// 使用指定的间隔启动心跳功能。 + /// + /// 以毫秒为单位的心跳请求发送间隔。 + /// 设置与服务器的通信超时时间,如果超过这个时间限制,将自动断开会话(Session)。 + /// 用于检测与服务器连接超时频率。 + public void Start(int interval, int timeOut = 2000, int timeOutInterval = 3000) + { + TimeOut = timeOut + interval; + Session = (Session)Parent; + SelfRunTimeId = RuntimeId; + LastTime = TimeHelper.Now; + + if (TimerComponent == null) + { + Log.Error("请在Unity的菜单执行Fantasy->Generate link.xml再重新打包"); + return; + } + + TimerId = TimerComponent.Net.RepeatedTimer(interval, () => RepeatedSend().Coroutine()); + TimeOutTimerId = TimerComponent.Net.RepeatedTimer(timeOutInterval, CheckTimeOut); + } + + private void CheckTimeOut() + { + if (TimeHelper.Now - LastTime < TimeOut) + { + return; + } + + Session entityReference = Session; + + if (entityReference == null) + { + return; + } + + entityReference.Dispose(); + } + + /// + /// 停止心跳功能。 + /// + public void Stop() + { + if (TimerId != 0) + { + TimerComponent?.Net.Remove(ref TimerId); + } + + if (TimeOutTimerId != 0) + { + TimerComponent?.Net.Remove(ref TimeOutTimerId); + } + } + + /// + /// 异步发送心跳请求并处理响应。 + /// + /// 表示进行中操作的异步任务。 + private async FTask RepeatedSend() + { + if (SelfRunTimeId != RuntimeId) + { + Stop(); + return; + } + + Session session = Session; + + if (session == null) + { + Dispose(); + return; + } + + try + { + var requestTime = TimeHelper.Now; + + var pingResponse = (PingResponse)await session.Call(_pingRequest); + + if (pingResponse.ErrorCode != 0) + { + return; + } + + var responseTime = TimeHelper.Now; + LastTime = responseTime; + Ping = (int)(responseTime - requestTime) / 2; + TimeHelper.TimeDiff = pingResponse.Now + Ping - responseTime; + } + catch (Exception) + { + Dispose(); + } + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Component/SessionIdleCheckerComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Component/SessionIdleCheckerComponent.cs new file mode 100644 index 0000000..1edc1cf --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Component/SessionIdleCheckerComponent.cs @@ -0,0 +1,104 @@ +using Fantasy.Entitas; +using Fantasy.Entitas.Interface; +using Fantasy.Helper; +using Fantasy.Timer; + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#if FANTASY_NET +namespace Fantasy.Network; + +public class SessionIdleCheckerComponentAwakeSystem : AwakeSystem +{ + protected override void Awake(SessionIdleCheckerComponent self) + { + self.TimerComponent = self.Scene.TimerComponent; + } +} + +/// +/// 负责检查会话空闲超时的组件。 +/// +public class SessionIdleCheckerComponent : Entity +{ + /// + /// 空闲超时时间(毫秒) + /// + private long _timeOut; + /// + /// 检查计时器的 ID + /// + private long _timerId; + /// + /// 用于确保组件完整性的自身运行时 ID + /// + private long _selfRuntimeId; + /// + /// 对会话对象的引用 + /// + private Session _session; + public TimerComponent TimerComponent; + + /// + /// 重写 Dispose 方法以释放资源。 + /// + public override void Dispose() + { + Stop(); // 停止检查计时器 + _timeOut = 0; // 重置空闲超时时间 + _selfRuntimeId = 0; // 重置自身运行时 ID + _session = null; // 清除会话引用 + base.Dispose(); + } + + /// + /// 使用指定的间隔和空闲超时时间启动空闲检查功能。 + /// + /// 以毫秒为单位的检查间隔。 + /// 以毫秒为单位的空闲超时时间。 + public void Start(int interval, int timeOut) + { + _timeOut = timeOut; + _session = (Session)Parent; + _selfRuntimeId = RuntimeId; + // 安排重复计时器,在指定的间隔内执行 Check 方法 + _timerId = TimerComponent.Net.RepeatedTimer(interval, Check); + } + + /// + /// 停止空闲检查功能。 + /// + public void Stop() + { + if (_timerId == 0) + { + return; + } + + TimerComponent.Net.Remove(ref _timerId); + } + + /// + /// 执行空闲检查操作。 + /// + private void Check() + { + if (_selfRuntimeId != RuntimeId || IsDisposed || _session == null) + { + Stop(); + return; + } + + var timeNow = TimeHelper.Now; + + if (timeNow - _session.LastReceiveTime < _timeOut) + { + return; + } + + Log.Warning($"session timeout id:{Id} timeNow:{timeNow} _session.LastReceiveTime:{_session.LastReceiveTime} _timeOut:{_timeOut}"); + _session.Dispose(); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Component/UnitySessionHeartbeatComponent.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Component/UnitySessionHeartbeatComponent.cs new file mode 100644 index 0000000..83c7cbf --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Component/UnitySessionHeartbeatComponent.cs @@ -0,0 +1,156 @@ +// ReSharper disable MemberCanBePrivate.Global + +using System; +using Fantasy.Async; +using Fantasy.Entitas; +using Fantasy.Entitas.Interface; +using Fantasy.Helper; +using Fantasy.InnerMessage; +using Fantasy.Timer; + +#if FANTASY_UNITY + +namespace Fantasy.Network +{ + public class SessionHeartbeatComponentAwakeSystem : AwakeSystem + { + protected override void Awake(SessionHeartbeatComponent self) + { + self.TimerComponent = self.Scene.TimerComponent; + } + } + + /// + /// 负责管理会话心跳的组件。 + /// + public class SessionHeartbeatComponent : Entity + { + public int TimeOut; + public long TimerId; + public long LastTime; + public long SelfRunTimeId; + public long TimeOutTimerId; + public TimerComponent TimerComponent; + public EntityReference Session; + private readonly PingRequest _pingRequest = new PingRequest(); + + public int Ping { get; private set; } + + public override void Dispose() + { + if (IsDisposed) + { + return; + } + + Stop(); + Ping = 0; + Session = null; + TimeOut = 0; + LastTime = 0; + SelfRunTimeId = 0; + base.Dispose(); + } + + /// + /// 使用指定的间隔启动心跳功能。 + /// + /// 以毫秒为单位的心跳请求发送间隔。 + /// 设置与服务器的通信超时时间,如果超过这个时间限制,将自动断开会话(Session)。 + /// 用于检测与服务器连接超时频率。 + public void Start(int interval, int timeOut = 5000, int timeOutInterval = 3000) + { + TimeOut = timeOut + interval; + Session = (Session)Parent; + SelfRunTimeId = RuntimeId; + LastTime = TimeHelper.Now; + + if (TimerComponent == null) + { + Log.Error("请在Unity的菜单执行Fantasy->Generate link.xml再重新打包"); + return; + } + + TimerId = TimerComponent.Unity.RepeatedTimer(interval, () => + { + RepeatedSend().Coroutine(); + }); + TimeOutTimerId = TimerComponent.Unity.RepeatedTimer(timeOutInterval, CheckTimeOut); + } + + private void CheckTimeOut() + { + if (TimeHelper.Now - LastTime < TimeOut) + { + return; + } + + Session entityReference = Session; + + if (entityReference == null) + { + return; + } + + entityReference.Dispose(); + } + + /// + /// 停止心跳功能。 + /// + public void Stop() + { + if (TimerId != 0) + { + TimerComponent?.Unity.Remove(ref TimerId); + } + + if (TimeOutTimerId != 0) + { + TimerComponent?.Unity.Remove(ref TimeOutTimerId); + } + } + + /// + /// 异步发送心跳请求并处理响应。 + /// + /// 表示进行中操作的异步任务。 + private async FTask RepeatedSend() + { + if (SelfRunTimeId != RuntimeId) + { + Stop(); + return; + } + + Session session = Session; + + if (session == null) + { + Dispose(); + return; + } + + try + { + var requestTime = TimeHelper.Now; + var pingResponse = (PingResponse)await session.Call(_pingRequest); + + if (pingResponse.ErrorCode != 0) + { + return; + } + + var responseTime = TimeHelper.Now; + LastTime = responseTime; + Ping = (int)(responseTime - requestTime) / 2; + TimeHelper.TimeDiff = pingResponse.Now + Ping - responseTime; + } + catch (Exception) + { + Dispose(); + } + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/ProcessSession/ProcessScheduler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/ProcessSession/ProcessScheduler.cs new file mode 100644 index 0000000..ec7c30c --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/ProcessSession/ProcessScheduler.cs @@ -0,0 +1,269 @@ +#if FANTASY_NET +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +using Fantasy.IdFactory; +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.PacketParser.Interface; +using Fantasy.Platform.Net; + +namespace Fantasy.Scheduler; + +internal static class ProcessScheduler +{ + public static void Scheduler(this ProcessSession session, Type messageType, uint rpcId, long routeId, APackInfo packInfo) + { + switch (packInfo.OpCodeIdStruct.Protocol) + { + case OpCodeType.InnerResponse: + case OpCodeType.InnerRouteResponse: + case OpCodeType.InnerAddressableResponse: + case OpCodeType.InnerRoamingResponse: + case OpCodeType.OuterAddressableResponse: + case OpCodeType.OuterCustomRouteResponse: + case OpCodeType.OuterRoamingResponse: + { + using (packInfo) + { + var sessionScene = session.Scene; + var message = packInfo.Deserialize(messageType); + sessionScene.ThreadSynchronizationContext.Post(() => + { + // 因为有可能是其他Scene线程下发送过来的、所以必须放到当前Scene进程下运行。 + sessionScene.NetworkMessagingComponent.ResponseHandler(rpcId, (IResponse)message); + }); + } + + return; + } + case OpCodeType.InnerRouteMessage: + { + using (packInfo) + { + var sceneId = IdFactoryHelper.RuntimeIdTool.GetSceneId(ref routeId); + + if (!Process.TryGetScene(sceneId, out var scene)) + { + throw new Exception($"not found scene routeId:{routeId}"); + } + + var message = packInfo.Deserialize(messageType); + + scene.ThreadSynchronizationContext.Post(() => + { + var entity = scene.GetEntity(routeId); + var sceneMessageDispatcherComponent = scene.MessageDispatcherComponent; + + if (entity == null || entity.IsDisposed) + { + return; + } + + sceneMessageDispatcherComponent.RouteMessageHandler(session, messageType, entity, message, rpcId).Coroutine(); + }); + } + + return; + } + case OpCodeType.InnerRouteRequest: + { + using (packInfo) + { + var sceneId = IdFactoryHelper.RuntimeIdTool.GetSceneId(ref routeId); + + if (!Process.TryGetScene(sceneId, out var scene)) + { + throw new Exception($"not found scene routeId:{routeId}"); + } + + var message = packInfo.Deserialize(messageType); + + scene.ThreadSynchronizationContext.Post(() => + { + var entity = scene.GetEntity(routeId); + var sceneMessageDispatcherComponent = scene.MessageDispatcherComponent; + + if (entity == null || entity.IsDisposed) + { + sceneMessageDispatcherComponent.FailRouteResponse(session, messageType, InnerErrorCode.ErrNotFoundRoute, rpcId); + return; + } + + sceneMessageDispatcherComponent.RouteMessageHandler(session, messageType, entity, message, rpcId).Coroutine(); + }); + } + + return; + } + case OpCodeType.OuterAddressableMessage: + case OpCodeType.OuterCustomRouteMessage: + case OpCodeType.OuterAddressableRequest: + case OpCodeType.OuterCustomRouteRequest: + case OpCodeType.OuterRoamingMessage: + case OpCodeType.OuterRoamingRequest: + { + using (packInfo) + { + var sceneId = IdFactoryHelper.RuntimeIdTool.GetSceneId(ref routeId); + + if (!Process.TryGetScene(sceneId, out var scene)) + { + throw new NotSupportedException($"not found scene routeId = {routeId}"); + } + + var message = packInfo.Deserialize(messageType); + + scene.ThreadSynchronizationContext.Post(() => + { + var entity = scene.GetEntity(routeId); + + if (entity == null || entity.IsDisposed) + { + scene.MessageDispatcherComponent.FailRouteResponse(session, messageType, InnerErrorCode.ErrNotFoundRoute, rpcId); + return; + } + + scene.MessageDispatcherComponent.RouteMessageHandler(session, messageType, entity, message, rpcId).Coroutine(); + }); + } + return; + } + default: + { + var packInfoProtocolCode = packInfo.ProtocolCode; + packInfo.Dispose(); + throw new NotSupportedException($"SessionInnerScheduler Received unsupported message protocolCode:{packInfoProtocolCode} messageType:{messageType}"); + } + } + } + + public static void Scheduler(this ProcessSession session, Type messageType, uint rpcId, long routeId, uint protocolCode, object message) + { + OpCodeIdStruct opCodeIdStruct = protocolCode; + + switch (opCodeIdStruct.Protocol) + { + case OpCodeType.InnerResponse: + case OpCodeType.InnerRouteResponse: + case OpCodeType.InnerAddressableResponse: + case OpCodeType.InnerRoamingResponse: + case OpCodeType.OuterAddressableResponse: + case OpCodeType.OuterCustomRouteResponse: + case OpCodeType.OuterRoamingResponse: + { + var sessionScene = session.Scene; + sessionScene.ThreadSynchronizationContext.Post(() => + { + var iResponse = (IResponse)session.Deserialize(messageType, message, ref opCodeIdStruct); + // 因为有可能是其他Scene线程下发送过来的、所以必须放到当前Scene进程下运行。 + sessionScene.NetworkMessagingComponent.ResponseHandler(rpcId, iResponse); + }); + + return; + } + case OpCodeType.InnerRoamingMessage: + case OpCodeType.InnerAddressableMessage: + case OpCodeType.InnerRouteMessage: + { + var sceneId = IdFactoryHelper.RuntimeIdTool.GetSceneId(ref routeId); + + if (!Process.TryGetScene(sceneId, out var scene)) + { + throw new Exception($"not found scene routeId:{routeId}"); + } + + var messageObject = session.Deserialize(messageType, message, ref opCodeIdStruct); + + scene.ThreadSynchronizationContext.Post(() => + { + var entity = scene.GetEntity(routeId); + var sceneMessageDispatcherComponent = scene.MessageDispatcherComponent; + + if (entity == null || entity.IsDisposed) + { + return; + } + + sceneMessageDispatcherComponent.RouteMessageHandler(session, messageType, entity, messageObject, rpcId).Coroutine(); + }); + + return; + } + case OpCodeType.InnerAddressableRequest: + case OpCodeType.InnerRoamingRequest: + case OpCodeType.InnerRouteRequest: + { + var sceneId = IdFactoryHelper.RuntimeIdTool.GetSceneId(ref routeId); + + if (!Process.TryGetScene(sceneId, out var scene)) + { + throw new Exception($"not found scene routeId:{routeId}"); + } + + var messageObject = session.Deserialize(messageType, message, ref opCodeIdStruct); + + scene.ThreadSynchronizationContext.Post(() => + { + var entity = scene.GetEntity(routeId); + var sceneMessageDispatcherComponent = scene.MessageDispatcherComponent; + + if (entity == null || entity.IsDisposed) + { + sceneMessageDispatcherComponent.FailRouteResponse(session, message.GetType(), InnerErrorCode.ErrNotFoundRoute, rpcId); + return; + } + + sceneMessageDispatcherComponent.RouteMessageHandler(session, messageType, entity, messageObject, rpcId).Coroutine(); + }); + + return; + } + case OpCodeType.OuterAddressableMessage: + case OpCodeType.OuterCustomRouteMessage: + case OpCodeType.OuterRoamingMessage: + { + var sceneId = IdFactoryHelper.RuntimeIdTool.GetSceneId(ref routeId); + + if (!Process.TryGetScene(sceneId, out var scene)) + { + Log.Error($"not found scene routeId:{routeId}"); + return; + } + + var messageObject = session.Deserialize(messageType, message, ref opCodeIdStruct); + + scene.ThreadSynchronizationContext.Post(() => + { + var entity = scene.GetEntity(routeId); + + switch (entity) + { + case null: + { + // 执行到这里是说明Session已经断开了 + // 因为这里是其他服务器Send到外网的数据、所以不需要给发送端返回就可以 + return; + } + case Session gateSession: + { + // 这里如果是Session只可能是Gate的Session、如果是的话、肯定是转发Address消息 + gateSession.Send((IMessage)messageObject, rpcId); + return; + } + default: + { + scene.MessageDispatcherComponent.RouteMessageHandler(session, messageType, entity, messageObject, rpcId).Coroutine(); + return; + } + } + }); + + return; + } + default: + { + throw new NotSupportedException($"SessionInnerScheduler Received unsupported message protocolCode:{protocolCode} messageType:{messageType}"); + } + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/ProcessSession/ProcessSession.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/ProcessSession/ProcessSession.cs new file mode 100644 index 0000000..ecd0bd4 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/ProcessSession/ProcessSession.cs @@ -0,0 +1,124 @@ +using Fantasy.Async; +using Fantasy.Network.Interface; +using Fantasy.PacketParser; +using Fantasy.PacketParser.Interface; +using Fantasy.Pool; +using Fantasy.Scheduler; +using Fantasy.Serialize; +#pragma warning disable CS8604 // Possible null reference argument. +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#if FANTASY_NET +namespace Fantasy.Network; + +/// +/// 网络服务器内部会话。 +/// +public sealed class ProcessSession : Session +{ + private readonly MemoryStreamBufferPool _memoryStreamBufferPool = new MemoryStreamBufferPool(); + private readonly Dictionary> _createInstances = new Dictionary>(); + + /// + /// 发送消息到服务器内部。 + /// + /// 要发送的消息。 + /// RPC 标识符。 + /// 路由标识符。 + public override void Send(IMessage message, uint rpcId = 0, long routeId = 0) + { + if (IsDisposed) + { + return; + } + + this.Scheduler(message.GetType(), rpcId, routeId, message.OpCode(), message); + } + + /// + /// 发送路由消息到服务器内部。 + /// + /// 要发送的路由消息。 + /// RPC 标识符。 + /// 路由标识符。 + public override void Send(IRouteMessage routeMessage, uint rpcId = 0, long routeId = 0) + { + if (IsDisposed) + { + return; + } + + this.Scheduler(routeMessage.GetType(), rpcId, routeId, routeMessage.OpCode(), routeMessage); + } + + public override void Send(uint rpcId, long routeId, Type messageType, APackInfo packInfo) + { + if (IsDisposed) + { + return; + } + + this.Scheduler(messageType, rpcId, routeId, packInfo); + } + + public override void Send(ProcessPackInfo packInfo, uint rpcId = 0, long routeId = 0) + { + this.Scheduler(packInfo.MessageType, rpcId, routeId, packInfo); + } + + public override void Send(MemoryStreamBuffer memoryStream, uint rpcId = 0, long routeId = 0) + { + throw new Exception("The use of this method is not supported"); + } + + public override FTask Call(IRouteRequest request, long routeId = 0) + { + throw new Exception("The use of this method is not supported"); + } + + public override FTask Call(IRequest request, long routeId = 0) + { + throw new Exception("The use of this method is not supported"); + } + + public object Deserialize(Type messageType, object message, ref OpCodeIdStruct opCodeIdStruct) + { + var memoryStream = _memoryStreamBufferPool.RentMemoryStream(MemoryStreamBufferSource.None); + + try + { + if (SerializerManager.TryGetSerializer(opCodeIdStruct.OpCodeProtocolType, out var serializer)) + { + serializer.Serialize(messageType, message, memoryStream); + + if (memoryStream.Position == 0) + { + if (_createInstances.TryGetValue(messageType, out var createInstance)) + { + return createInstance(); + } + + createInstance = CreateInstance.CreateObject(messageType); + _createInstances.Add(messageType, createInstance); + return createInstance(); + } + + memoryStream.SetLength(memoryStream.Position); + memoryStream.Seek(0, SeekOrigin.Begin); + return serializer.Deserialize(messageType, memoryStream); + } + } + catch (Exception e) + { + Log.Error($"ProcessSession.Deserialize {e}"); + } + finally + { + _memoryStreamBufferPool.ReturnMemoryStream(memoryStream); + } + + throw new Exception($"type:{messageType} Does not support processing protocol"); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/ProcessSession/ProcessSessionInfo.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/ProcessSession/ProcessSessionInfo.cs new file mode 100644 index 0000000..6e3a534 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/ProcessSession/ProcessSessionInfo.cs @@ -0,0 +1,17 @@ +using Fantasy.Network.Interface; + +#if FANTASY_NET +namespace Fantasy.Network; + +internal sealed class ProcessSessionInfo(Session session, AClientNetwork aClientNetwork) : IDisposable +{ + public readonly Session Session = session; + public readonly AClientNetwork AClientNetwork = aClientNetwork; + + public void Dispose() + { + Session.Dispose(); + AClientNetwork?.Dispose(); + } +} +#endif diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Session.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Session.cs new file mode 100644 index 0000000..fc75dea --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Network/Session/Session.cs @@ -0,0 +1,272 @@ +// ReSharper disable RedundantUsingDirective +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using Fantasy.Async; +using Fantasy.Entitas; +using Fantasy.Entitas.Interface; +using Fantasy.Helper; +using Fantasy.Network.Interface; +using Fantasy.PacketParser; +using Fantasy.PacketParser.Interface; +using Fantasy.Scheduler; +using Fantasy.Serialize; +#if FANTASY_NET +using Fantasy.Network.Route; +using Fantasy.Platform.Net; +using Fantasy.Network.Roaming; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#endif +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8603 +#pragma warning disable CS8601 +#pragma warning disable CS8618 + +namespace Fantasy.Network +{ + /// + /// 网络会话的基类,用于管理网络通信。 + /// + public class Session : Entity, ISupportedMultiEntity + { + private uint _rpcId; + internal long LastReceiveTime; + /// + /// 关联的网络连接通道 + /// + internal INetworkChannel Channel { get; private set; } + /// + /// 当前Session的终结点信息 + /// + public IPEndPoint RemoteEndPoint { get; private set; } + private ANetworkMessageScheduler NetworkMessageScheduler { get; set;} + internal readonly Dictionary> RequestCallback = new(); + /// + /// Session的Dispose委托 + /// + internal event Action OnDispose; +#if FANTASY_NET + internal RouteComponent RouteComponent; + internal SessionRoamingComponent SessionRoamingComponent; + internal AddressableRouteComponent AddressableRouteComponent; + internal static Session Create(ANetworkMessageScheduler networkMessageScheduler, ANetworkServerChannel channel, NetworkTarget networkTarget) + { + var session = Entity.Create(channel.Scene, false, true); + session.Channel = channel; + session.NetworkMessageScheduler = networkMessageScheduler; + session.RemoteEndPoint = channel.RemoteEndPoint as IPEndPoint; + session.OnDispose = channel.Dispose; + session.LastReceiveTime = TimeHelper.Now; + // 在外部网络目标下,添加会话空闲检查组件 + if (networkTarget == NetworkTarget.Outer) + { + var interval = ProcessDefine.SessionIdleCheckerInterval; + var timeOut = ProcessDefine.SessionIdleCheckerTimeout; + session.AddComponent().Start(interval, timeOut); + } + return session; + } +#endif + internal static Session Create(AClientNetwork network, IPEndPoint remoteEndPoint) + { + // 创建会话实例 + var session = Entity.Create(network.Scene, false, true); + session.Channel = network; + session.RemoteEndPoint = remoteEndPoint; + session.OnDispose = network.Dispose; + session.NetworkMessageScheduler = network.NetworkMessageScheduler; + session.LastReceiveTime = TimeHelper.Now; + return session; + } +#if FANTASY_NET + internal static ProcessSession CreateInnerSession(Scene scene) + { + var session = Entity.Create(scene, false, false); + session.NetworkMessageScheduler = new InnerMessageScheduler(scene); + return session; + } + + /// + /// 发送一个消息,框架内部使用建议不要用这个方法。 + /// + /// 如果是RPC消息需要传递一个RPCId + /// routeId + /// 消息的类型 + /// packInfo消息包 + public virtual void Send(uint rpcId, long routeId, Type messageType, APackInfo packInfo) + { + if (IsDisposed) + { + return; + } + + Channel.Send(rpcId, routeId, packInfo.MemoryStream, null); + } + + /// + /// 发送一个消息,框架内部使用建议不要用这个方法。 + /// + /// 一个ProcessPackInfo消息包 + /// 如果是RPC消息需要传递一个RPCId + /// routeId + public virtual void Send(ProcessPackInfo packInfo, uint rpcId = 0, long routeId = 0) + { + if (IsDisposed) + { + return; + } + + using (packInfo) + { + Channel.Send(rpcId, routeId, packInfo.MemoryStream, null); + } + } + + /// + /// 发送一个消息 + /// + /// 需要发送的MemoryStreamBuffer + /// 如果是RPC消息需要传递一个RPCId + /// routeId + public virtual void Send(MemoryStreamBuffer memoryStream, uint rpcId = 0, long routeId = 0) + { + if (IsDisposed) + { + return; + } + + Channel.Send(rpcId, routeId, memoryStream, null); + } +#endif + /// + /// 销毁一个Session,当执行了这个方法会自动断开网络的连接。 + /// + public override void Dispose() + { + if (IsDisposed) + { + return; + } + + _rpcId = 0; + LastReceiveTime = 0; + Channel = null; + RemoteEndPoint = null; + NetworkMessageScheduler = null; +#if FANTASY_NET + SessionRoamingComponent = null; + RouteComponent = null; + AddressableRouteComponent = null; +#endif + base.Dispose(); + + // 终止所有等待中的请求回调 + foreach (var requestCallback in RequestCallback.Values.ToArray()) + { + requestCallback.SetException(new Exception($"session is dispose: {Id}")); + } + + RequestCallback.Clear(); + OnDispose?.Invoke(); + } + + /// + /// 发送一个消息 + /// + /// 消息的实例 + /// 如果是RPC消息需要传递一个RPCId + /// routeId + public virtual void Send(IMessage message, uint rpcId = 0, long routeId = 0) + { + if (IsDisposed) + { + return; + } + + Channel.Send(rpcId, routeId, null, message); + } + + /// + /// 发送一个消息 + /// + /// 消息的实例,不同的是这个是发送Route消息使用的 + /// 如果是RPC消息需要传递一个RPCId + /// routeId + public virtual void Send(IRouteMessage routeMessage, uint rpcId = 0, long routeId = 0) + { + if (IsDisposed) + { + return; + } + + Channel.Send(rpcId, routeId, null, routeMessage); + } + + /// + /// 发送一个RPC消息 + /// + /// 请求Route消息的实例 + /// routeId + /// + public virtual FTask Call(IRouteRequest request, long routeId = 0) + { + if (IsDisposed) + { + return null; + } + + var requestCallback = FTask.Create(); + var rpcId = ++_rpcId; + RequestCallback.Add(rpcId, requestCallback); + Send(request, rpcId, routeId); + return requestCallback; + } + + /// + /// 发送一个RPC消息 + /// + /// 请求消息的实例 + /// routeId + /// + public virtual FTask Call(IRequest request, long routeId = 0) + { + if (IsDisposed) + { + return null; + } + + var requestCallback = FTask.Create(); + var rpcId = ++_rpcId; + RequestCallback.Add(rpcId, requestCallback); + Send(request, rpcId, routeId); + return requestCallback; + } + + internal void Receive(APackInfo packInfo) + { + if (IsDisposed) + { + return; + } + + LastReceiveTime = TimeHelper.Now; + + try + { + NetworkMessageScheduler.Scheduler(this, packInfo).Coroutine(); + } + catch (Exception e) + { + // 如果解析失败,只有一种可能,那就是有人恶意发包。 + // 所以这里强制关闭了当前连接。不让对方一直发包。 + Dispose(); + Log.Error(e); + } + } + } +} diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Console/Entry.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Console/Entry.cs new file mode 100644 index 0000000..2cddb8b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Console/Entry.cs @@ -0,0 +1,101 @@ +#if FANTASY_CONSOLE +using Fantasy.Assembly; +using Fantasy.Async; +using Fantasy.Serialize; +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +namespace Fantasy.Platform.Console +{ + public struct OnFantasyInit + { + public Scene Scene; + } + + /// + /// 一般的控制台启动入口,可以适用大部分客户端环境 + /// + public sealed class Entry + { + private static bool _isInit; + private static Thread _updateThread; + public static Scene Scene { get; private set; } + + /// + /// 初始化框架 + /// + /// + public static async FTask Initialize(params System.Reflection.Assembly[] assemblies) + { + if (_isInit) + { + Log.Error("Fantasy has already been initialized and does not need to be initialized again!"); + return; + } + + // 初始化程序集管理系统 + await AssemblySystem.InnerInitialize(assemblies); + // 初始化序列化 + SerializerManager.Initialize(); + _isInit = true; + Log.Debug("Fantasy Initialize Complete!"); + } + + /// + /// 启动框架。 + /// 如果您的平台有每帧更新逻辑的方法,请不要调用这个方法。 + /// 如果没有实现每帧执行方法平台需要调用这个方法,目的是开启一个新的线程来每帧执行Update。 + /// 注意因为开启了一个新的线程来处理更新逻辑,所以要注意多线程的问题。 + /// + public static void StartUpdate() + { + _updateThread = new Thread(() => + { + while (_isInit) + { + ThreadScheduler.Update(); + Thread.Sleep(1); + } + }) + { + IsBackground = true + }; + _updateThread.Start(); + } + + /// + /// 在Entry中创建一个Scene,如果Scene已经被创建过,将先销毁Scene再创建。 + /// + /// + /// + public static async FTask CreateScene(string sceneRuntimeMode = SceneRuntimeMode.MainThread) + { + Scene?.Dispose(); + Scene = await Scene.Create(sceneRuntimeMode); + await Scene.EventComponent.PublishAsync(new OnFantasyInit() + { + Scene = Scene + }); + return Scene; + } + + /// + /// 如果有的话一定要在每帧执行这个方法 + /// + public void Update() + { + ThreadScheduler.Update(); + } + + public static void Dispose() + { + AssemblySystem.Dispose(); + SerializerManager.Dispose(); + Scene?.Dispose(); + Scene = null; + _isInit = false; + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Console/ThreadSynchronizationContext.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Console/ThreadSynchronizationContext.cs new file mode 100644 index 0000000..29fd54a --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Console/ThreadSynchronizationContext.cs @@ -0,0 +1,38 @@ +#if FANTASY_CONSOLE +#pragma warning disable CS8601 // Possible null reference assignment. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8765 // Nullability of type of parameter doesn't match overridden member (possibly because of nullability attributes). +namespace Fantasy +{ + public sealed class ThreadSynchronizationContext : SynchronizationContext + { + private Action _actionHandler; + private readonly Queue _queue = new(); + + public void Update() + { + while (_queue.TryDequeue(out _actionHandler)) + { + try + { + _actionHandler(); + } + catch (Exception e) + { + Log.Error(e); + } + } + } + + public override void Post(SendOrPostCallback callback, object state) + { + Post(() => callback(state)); + } + + public void Post(Action action) + { + _queue.Enqueue(action); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/MachineConfig.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/MachineConfig.cs new file mode 100644 index 0000000..e09b00e --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/MachineConfig.cs @@ -0,0 +1,88 @@ +#if FANTASY_NET +// ReSharper disable InconsistentNaming +using System.Collections.Concurrent; +using System.Runtime.Serialization; +using Fantasy.Helper; +using Newtonsoft.Json; +#pragma warning disable CS8601 // Possible null reference assignment. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +namespace Fantasy.Platform.Net +{ + /// + /// 用于记录服务器物理信息 + /// + public sealed class MachineConfigData + { + /// + /// 存放所有MachineConfigInfo信息 + /// + public List List; + [JsonIgnore] + [IgnoreDataMember] + private readonly ConcurrentDictionary _configs = new ConcurrentDictionary(); + /// + /// 获得MachineConfig的实例 + /// + public static MachineConfigData Instance { get; private set; } + /// + /// 初始化MachineConfig + /// + /// + public static void Initialize(string machineConfigJson) + { + Instance = machineConfigJson.Deserialize(); + foreach (var config in Instance.List) + { + Instance._configs.TryAdd(config.Id, config); + } + } + /// + /// 根据Id获取MachineConfig + /// + /// + /// + /// + public MachineConfig Get(uint id) + { + if (_configs.TryGetValue(id, out var machineConfigInfo)) + { + return machineConfigInfo; + } + + throw new FileNotFoundException($"MachineConfig not find {id} Id"); + } + /// + /// 根据Id获取MachineConfig + /// + /// + /// + /// + public bool TryGet(uint id, out MachineConfig config) + { + return _configs.TryGetValue(id, out config); + } + } + /// + /// 表示一个物理服务器的信息 + /// + public sealed class MachineConfig + { + /// + /// Id + /// + public uint Id { get; set; } + /// + /// 外网IP + /// + public string OuterIP { get; set; } + /// + /// 外网绑定IP + /// + public string OuterBindIP { get; set; } + /// + /// 内网绑定IP + /// + public string InnerBindIP { get; set; } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/ProcessConfig.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/ProcessConfig.cs new file mode 100644 index 0000000..4a400b0 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/ProcessConfig.cs @@ -0,0 +1,100 @@ +#if FANTASY_NET +using System.Collections.Concurrent; +using System.Runtime.Serialization; +using Fantasy.Helper; +using Newtonsoft.Json; +// ReSharper disable CollectionNeverUpdated.Global +#pragma warning disable CS8601 // Possible null reference assignment. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +namespace Fantasy.Platform.Net +{ + /// + /// 用于管理进程信息 + /// + public sealed class ProcessConfigData + { + /// + /// 存放所有ProcessConfig信息 + /// + public List List; + [JsonIgnore] + [IgnoreDataMember] + private readonly ConcurrentDictionary _configs = new ConcurrentDictionary(); + /// + /// 获得ProcessConfigData的实例 + /// + public static ProcessConfigData Instance { get; private set; } + /// + /// 初始化MachineConfig + /// + /// + public static void Initialize(string processConfigJson) + { + Instance = processConfigJson.Deserialize(); + foreach (var config in Instance.List) + { + Instance._configs.TryAdd(config.Id, config); + } + } + /// + /// 根据Id获取ProcessConfig + /// + /// + /// + /// + public ProcessConfig Get(uint id) + { + if (_configs.TryGetValue(id, out var processConfigInfo)) + { + return processConfigInfo; + } + + throw new FileNotFoundException($"MachineConfig not find {id} Id"); + } + /// + /// 根据Id获取ProcessConfig + /// + /// + /// + /// + public bool TryGet(uint id, out ProcessConfig config) + { + return _configs.TryGetValue(id, out config); + } + /// + /// 按照startupGroup寻找属于startupGroup组的ProcessConfig + /// + /// startupGroup + /// + public IEnumerable ForEachByStartupGroup(uint startupGroup) + { + foreach (var processConfig in List) + { + if (processConfig.StartupGroup == startupGroup) + { + yield return processConfig; + } + } + } + } + /// + /// 表示一个进程配置信息 + /// + public sealed class ProcessConfig + { + /// + /// 进程Id + /// + public uint Id { get; set; } + /// + /// 机器ID + /// + public uint MachineId { get; set; } + /// + /// 启动组 + /// + public uint StartupGroup { get; set; } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/SceneConfig.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/SceneConfig.cs new file mode 100644 index 0000000..e939419 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/SceneConfig.cs @@ -0,0 +1,196 @@ +#if FANTASY_NET +using System.Collections.Concurrent; +using System.Runtime.Serialization; +using Fantasy.DataStructure.Collection; +using Fantasy.DataStructure.Dictionary; +using Fantasy.Helper; +using Fantasy.IdFactory; +using Newtonsoft.Json; +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS8601 // Possible null reference assignment. + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +namespace Fantasy.Platform.Net +{ + /// + /// 存放所有SceneConfigInfo信息 + /// + public sealed class SceneConfigData + { + /// + /// 存放所有SceneConfig信息 + /// + public List List; + [JsonIgnore] + [IgnoreDataMember] + private readonly ConcurrentDictionary _configs = new ConcurrentDictionary(); + [JsonIgnore] + [IgnoreDataMember] + private readonly OneToManyList _sceneConfigBySceneType = new OneToManyList(); + [JsonIgnore] + [IgnoreDataMember] + private readonly OneToManyList _sceneConfigByProcess = new OneToManyList(); + [JsonIgnore] [IgnoreDataMember] + private readonly Dictionary>> _worldSceneTypes = new Dictionary>>(); + /// + /// 获得SceneConfigData的实例 + /// + public static SceneConfigData Instance { get; private set; } + /// + /// 初始化SceneConfig + /// + /// + public static void Initialize(string sceneConfigJson) + { + Instance = sceneConfigJson.Deserialize(); + foreach (var config in Instance.List) + { + config.Initialize(); + Instance._configs.TryAdd(config.Id, config); + Instance._sceneConfigByProcess.Add(config.ProcessConfigId, config); + Instance._sceneConfigBySceneType.Add(config.SceneType, config); + + var configWorldConfigId = (int)config.WorldConfigId; + + if (!Instance._worldSceneTypes.TryGetValue(configWorldConfigId, out var sceneConfigDic)) + { + sceneConfigDic = new Dictionary>(); + Instance._worldSceneTypes.Add(configWorldConfigId, sceneConfigDic); + } + + if (!sceneConfigDic.TryGetValue(config.SceneType, out var sceneConfigList)) + { + sceneConfigList = new List(); + sceneConfigDic.Add(config.SceneType, sceneConfigList); + } + + sceneConfigList.Add(config); + } + } + + /// + /// 根据Id获取SceneConfig + /// + /// + /// + /// + public SceneConfig Get(uint id) + { + if (_configs.TryGetValue(id, out var sceneConfigInfo)) + { + return sceneConfigInfo; + } + + throw new FileNotFoundException($"WorldConfig not find {id} Id"); + } + + /// + /// 根据Id获取SceneConfig + /// + /// + /// + /// + public bool TryGet(uint id, out SceneConfig config) + { + return _configs.TryGetValue(id, out config); + } + + /// + /// 获得SceneConfig + /// + /// + /// + public List GetByProcess(uint serverConfigId) + { + return _sceneConfigByProcess.TryGetValue(serverConfigId, out var list) ? list : new List(); + } + + /// + /// 获得SceneConfig + /// + /// + /// + public List GetSceneBySceneType(int sceneType) + { + return !_sceneConfigBySceneType.TryGetValue(sceneType, out var list) ? new List() : list; + } + + /// + /// 获得SceneConfig + /// + /// + /// + /// + public List GetSceneBySceneType(int world, int sceneType) + { + if (!_worldSceneTypes.TryGetValue(world, out var sceneConfigDic)) + { + return new List(); + } + + if (!sceneConfigDic.TryGetValue(sceneType, out var list)) + { + return new List(); + } + + return list; + } + } + + /// + /// 表示一个Scene配置信息 + /// + public sealed class SceneConfig + { + /// + /// ID + /// + public uint Id { get; set; } + /// + /// 进程Id + /// + public uint ProcessConfigId { get; set; } + /// + /// 世界Id + /// + public uint WorldConfigId { get; set; } + /// + /// Scene运行类型 + /// + public string SceneRuntimeMode { get; set; } + /// + /// Scene类型 + /// + public string SceneTypeString { get; set; } + /// + /// 协议类型 + /// + public string NetworkProtocol { get; set; } + /// + /// 外网端口 + /// + public int OuterPort { get; set; } + /// + /// 内网端口 + /// + public int InnerPort { get; set; } + /// + /// Scene类型 + /// + public int SceneType { get; set; } + /// + /// RouteId + /// + [JsonIgnore] + [IgnoreDataMember] + public long RouteId { get; private set; } + /// + /// 初始化方法 + /// + public void Initialize() + { + RouteId = IdFactoryHelper.RuntimeId(0, Id, (byte)WorldConfigId, 0); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/WorldConfig.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/WorldConfig.cs new file mode 100644 index 0000000..9b0ede5 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ConfigTable/WorldConfig.cs @@ -0,0 +1,93 @@ +#if FANTASY_NET +using System.Collections.Concurrent; +using System.Runtime.Serialization; +using Fantasy.Helper; +using Newtonsoft.Json; +#pragma warning disable CS8601 // Possible null reference assignment. + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +namespace Fantasy.Platform.Net +{ + /// + /// 存放所有WorldConfigInfo信息 + /// + public sealed class WorldConfigData + { + /// + /// 存放所有WorldConfigInfo信息 + /// + public List List; + [JsonIgnore] + [IgnoreDataMember] + private readonly ConcurrentDictionary _configs = new ConcurrentDictionary(); + /// + /// 获得WorldConfig的实例 + /// + public static WorldConfigData Instance { get; private set; } + /// + /// 初始化WorldConfig + /// + /// + public static void Initialize(string worldConfigJson) + { + Instance = worldConfigJson.Deserialize(); + foreach (var config in Instance.List) + { + Instance._configs.TryAdd(config.Id, config); + } + } + /// + /// 根据Id获取WorldConfig + /// + /// + /// + /// + public WorldConfig Get(uint id) + { + if (_configs.TryGetValue(id, out var worldConfigInfo)) + { + return worldConfigInfo; + } + + throw new FileNotFoundException($"WorldConfig not find {id} Id"); + } + /// + /// 根据Id获取WorldConfig + /// + /// + /// + /// + public bool TryGet(uint id, out WorldConfig config) + { + return _configs.TryGetValue(id, out config); + } + } + + /// + /// 表示一个世界配置信息 + /// + public sealed class WorldConfig + { + /// + /// Id + /// + public uint Id { get; set; } + /// + /// 名称 + /// + public string WorldName { get; set; } + /// + /// 数据库连接字符串 + /// + public string DbConnection { get; set; } + /// + /// 数据库名称 + /// + public string DbName { get; set; } + /// + /// 数据库类型 + /// + public string DbType { get; set; } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/Entry.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/Entry.cs new file mode 100644 index 0000000..959818d --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/Entry.cs @@ -0,0 +1,124 @@ +#if FANTASY_NET +using CommandLine; +using Fantasy.Assembly; +using Fantasy.Async; +using Fantasy.Helper; +using Fantasy.IdFactory; +using Fantasy.LowLevel; +using Fantasy.Network; +using Fantasy.Serialize; +// ReSharper disable FunctionNeverReturns + +namespace Fantasy.Platform.Net; + +/// +/// Fantasy.Net 应用程序入口 +/// +/// 当命令行格式异常时抛出。 +/// 不支持的 ProcessType 类型异常。 +public static class Entry +{ + /// + /// 框架初始化 + /// + /// 注册的Assembly + public static async FTask Initialize(params System.Reflection.Assembly[] assemblies) + { + // 解析命令行参数 + Parser.Default.ParseArguments(Environment.GetCommandLineArgs()) + .WithNotParsed(error => throw new Exception("Command line format error!")) + .WithParsed(option => + { + ProcessDefine.Options = option; + ProcessDefine.InnerNetwork = Enum.Parse(option.InnerNetwork); + }); + // 初始化Log系统 + Log.Initialize(); + // 检查启动参数,后期可能有机器人等不同的启动参数 + switch (ProcessDefine.Options.ProcessType) + { + case "Game": + { + break; + } + default: + { + throw new NotSupportedException($"ProcessType is {ProcessDefine.Options.ProcessType} Unrecognized!"); + } + } + // 初始化程序集管理系统 + await AssemblySystem.InnerInitialize(assemblies); + // 初始化序列化 + SerializerManager.Initialize(); + // 精度处理(只针对Windows下有作用、其他系统没有这个问题、一般也不会用Windows来做服务器的) + WinPeriod.Initialize(); + + FantasyMemory.Initialize(); + } + + /// + /// 启动Fantasy.Net + /// + public static async FTask Start() + { + // 启动Process + StartProcess().Coroutine(); + await FTask.CompletedTask; + while (true) + { + ThreadScheduler.Update(); + Thread.Sleep(1); + } + } + + /// + /// 初始化并且启动框架 + /// + /// + public static async FTask Start(params System.Reflection.Assembly[] assemblies) + { + await Initialize(assemblies); + await Start(); + } + + private static async FTask StartProcess() + { + if (ProcessDefine.Options.StartupGroup != 0) + { + foreach (var processConfig in ProcessConfigData.Instance.ForEachByStartupGroup((uint)ProcessDefine.Options.StartupGroup)) + { + await Process.Create(processConfig.Id); + } + + return; + } + + switch (ProcessDefine.Options.Mode) + { + case "Develop": + { + foreach (var processConfig in ProcessConfigData.Instance.List) + { + await Process.Create(processConfig.Id); + } + + return; + } + case "Release": + { + await Process.Create(ProcessDefine.Options.ProcessId); + return; + } + } + } + + /// + /// 关闭 Fantasy + /// + public static void Close() + { + AssemblySystem.Dispose(); + SerializerManager.Dispose(); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/Process.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/Process.cs new file mode 100644 index 0000000..e3a6cf8 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/Process.cs @@ -0,0 +1,156 @@ +#if FANTASY_NET +using System.Collections.Concurrent; +using Fantasy.Async; +using Fantasy.IdFactory; + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8601 // Possible null reference assignment. +namespace Fantasy.Platform.Net; + +/// +/// 一个进程的实例 +/// +public sealed class Process : IDisposable +{ + /// + /// 当前进程的Id + /// + public readonly uint Id; + /// + /// 进程关联的MachineId + /// + public readonly uint MachineId; + private readonly ConcurrentDictionary _processScenes = new ConcurrentDictionary(); + private static readonly ConcurrentDictionary Scenes = new ConcurrentDictionary(); + private Process() {} + private Process(uint id, uint machineId) + { + Id = id; + MachineId = machineId; + } + + internal bool IsProcess(ref long routeId) + { + var sceneId = IdFactoryHelper.RuntimeIdTool.GetSceneId(ref routeId); + return _processScenes.ContainsKey(sceneId); + } + + internal bool IsProcess(ref uint sceneId) + { + return _processScenes.ContainsKey(sceneId); + } + + internal void AddSceneToProcess(Scene scene) + { + _processScenes.TryAdd(scene.SceneConfigId, scene); + } + + internal void RemoveSceneToProcess(Scene scene, bool isDispose) + { + if (!_processScenes.Remove(scene.SceneConfigId, out _)) + { + return; + } + + if (isDispose) + { + scene.Dispose(); + } + } + + internal bool TryGetSceneToProcess(long routeId, out Scene scene) + { + var sceneId = IdFactoryHelper.RuntimeIdTool.GetSceneId(ref routeId); + return _processScenes.TryGetValue(sceneId, out scene); + } + + internal bool TryGetSceneToProcess(uint sceneId, out Scene scene) + { + return _processScenes.TryGetValue(sceneId, out scene); + } + /// + /// 销毁方法 + /// + public void Dispose() + { + if (_processScenes.IsEmpty) + { + return; + } + + var sceneQueue = new Queue(); + + foreach (var (_, scene) in _processScenes) + { + sceneQueue.Enqueue(scene); + } + + while (sceneQueue.TryDequeue(out var removeScene)) + { + removeScene.Dispose(); + } + + _processScenes.Clear(); + } + + internal static async FTask Create(uint processConfigId) + { + if (!ProcessConfigData.Instance.TryGet(processConfigId, out var processConfig)) + { + Log.Error($"not found processConfig by Id:{processConfigId}"); + return null; + } + + if (!MachineConfigData.Instance.TryGet(processConfig.MachineId, out var machineConfig)) + { + Log.Error($"not found machineConfig by Id:{processConfig.MachineId}"); + return null; + } + + var process = new Process(processConfigId, processConfig.MachineId); + var sceneConfigs = SceneConfigData.Instance.GetByProcess(processConfigId); + + foreach (var sceneConfig in sceneConfigs) + { + await Scene.Create(process, machineConfig, sceneConfig); + } + + Log.Info($"Process:{processConfigId} Startup Complete SceneCount:{sceneConfigs.Count}"); + return process; + } + + internal bool IsInAppliaction(ref uint sceneId) + { + return _processScenes.ContainsKey(sceneId); + } + + internal static void AddScene(Scene scene) + { + Scenes.TryAdd(scene.SceneConfigId, scene); + } + + internal static void RemoveScene(Scene scene, bool isDispose) + { + if (!Scenes.Remove(scene.SceneConfigId, out _)) + { + return; + } + + if (isDispose) + { + scene.Dispose(); + } + } + + internal static bool TryGetScene(long routeId, out Scene scene) + { + var sceneId = IdFactoryHelper.RuntimeIdTool.GetSceneId(ref routeId); + return Scenes.TryGetValue(sceneId, out scene); + } + + internal static bool TryGetScene(uint sceneId, out Scene scene) + { + return Scenes.TryGetValue(sceneId, out scene); + } +} +#endif diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ProcessDefine.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ProcessDefine.cs new file mode 100644 index 0000000..2bcc4e0 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ProcessDefine.cs @@ -0,0 +1,99 @@ +#if FANTASY_NET +using CommandLine; +using Fantasy.Network; + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +namespace Fantasy.Platform.Net; + +/// +/// Process运行模式 +/// +public enum ProcessMode +{ + /// + /// 默认 + /// + None =0, + /// + /// 开发模式 + /// + Develop = 1, + /// + /// 发布模式 + /// + Release = 2 +} + +internal sealed class CommandLineOptions +{ + /// + /// 用于启动指定的进程,该进程的 ID 与 ProcessConfig 的 ID 相关联。此参数只能传递单个 ID,不支持传递多个 ID。 + /// + [Option("pid", Required = false, Default = (uint)0, HelpText = "Enter an ProcessIdId such as 1")] + public uint ProcessId { get; set; } + /// + /// Process类型,获取或设置应用程序的类型。 + /// Game - 游戏服务器Process + /// Robot - 机器人(暂未支持该功能) + /// + [Option('a', "ProcessType", Required = false, Default = "Game", HelpText = "Game")] + public string ProcessType { get; set; } + /// + /// 服务器运行模式,获取或设置服务器的运行模式。 + /// Develop - 开发模式(启动Process配置表中的所有Process) + /// Release - 发布模式(根据ProcessId启动Process) + /// + [Option('m', "Mode", Required = true, Default = "Release", HelpText = "Develop:启动Process配置表中的所有Process,\nRelease:根据ProcessId启动Process")] + public string Mode { get; set; } + /// + /// 服务器内部网络协议 + /// TCP - 服务器内部之间通讯使用TCP协议 + /// KCP - 服务器内部之间通讯使用KCP协议 + /// WebSocket - 服务器内部之间通讯使用WebSocket协议(不推荐、TCP或KCP) + /// + [Option('n', "InnerNetwork", Required = false, Default = "TCP", HelpText = "TCP、KCP、WebSocket")] + public string InnerNetwork { get; set; } + /// + /// 会话空闲检查超时时间。 + /// + [Option('t', "SessionIdleCheckerTimeout", Required = false, Default = 8000, HelpText = "Session idle check timeout")] + public int SessionIdleCheckerTimeout { get; set; } + /// + /// 会话空闲检查间隔。 + /// + [Option('i', "SessionIdleCheckerInterval", Required = false, Default = 5000, HelpText = "Session idle check interval")] + public int SessionIdleCheckerInterval { get; set; } + /// + /// 启动组。 + /// + [Option('g', "StartupGroup", Required = false, Default = 0, HelpText = "Used to start a group of Process")] + public int StartupGroup { get; set; } +} + +/// +/// AppDefine +/// +internal static class ProcessDefine +{ + /// + /// 命令行选项 + /// + public static CommandLineOptions Options; + /// + /// App程序Id + /// + public static uint ProcessId => Options.ProcessId; + /// + /// 会话空闲检查超时时间。 + /// + public static int SessionIdleCheckerTimeout => Options.SessionIdleCheckerTimeout; + /// + /// 会话空闲检查间隔。 + /// + public static int SessionIdleCheckerInterval => Options.SessionIdleCheckerInterval; + /// + /// 内部网络通讯协议类型 + /// + public static NetworkProtocolType InnerNetwork; +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ThreadSynchronizationContext.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ThreadSynchronizationContext.cs new file mode 100644 index 0000000..bb2948a --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Net/ThreadSynchronizationContext.cs @@ -0,0 +1,52 @@ +#if FANTASY_NET +using System.Collections.Concurrent; +#pragma warning disable CS8765 +#pragma warning disable CS8601 +#pragma warning disable CS8618 + +namespace Fantasy; + +/// +/// 线程的同步上下文 +/// +public sealed class ThreadSynchronizationContext : SynchronizationContext +{ + private readonly ConcurrentQueue _queue = new(); + /// + /// 执行当前上下文投递过的逻辑 + /// + public void Update() + { + while (_queue.TryDequeue(out var actionHandler)) + { + try + { + actionHandler(); + } + catch (Exception e) + { + Log.Error(e); + } + } + } + + /// + /// 投递一个逻辑到当前上下文 + /// + /// + /// + public override void Post(SendOrPostCallback callback, object state) + { + Post(() => callback(state)); + } + + /// + /// 投递一个逻辑到当前上下文 + /// + /// + public void Post(Action action) + { + _queue.Enqueue(action); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/AppDefine.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/AppDefine.cs new file mode 100644 index 0000000..d9d85ae --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/AppDefine.cs @@ -0,0 +1,19 @@ +#if FANTASY_UNITY +namespace Fantasy.Platform.Unity +{ + public static class AppDefine + { + public static string RemoteUpdatePath; + public static bool EditorModel = true; + public const string VersionName = "version.bytes"; + public const string VersionMD5Name = "version.md5"; + public const string AssetBundleManifestName = "Fantasy"; + public static bool IsEditor => UnityEngine.Application.isEditor && EditorModel; + public static string AssetBundleSaveDirectory => "Assets/AssetBundles"; + public static string LocalAssetBundlePath => UnityEngine.Application.streamingAssetsPath; + public static string RemoteAssetBundlePath => UnityEngine.Application.persistentDataPath; + public static string PersistentDataVersion => $"{UnityEngine.Application.persistentDataPath}/{VersionName}"; + public static string StreamingAssetsVersion => $"{UnityEngine.Application.streamingAssetsPath}/{VersionName}"; + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonDefaultValueAttribute.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonDefaultValueAttribute.cs new file mode 100644 index 0000000..49914ec --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonDefaultValueAttribute.cs @@ -0,0 +1,11 @@ +#if FANTASY_UNITY +using System; +namespace MongoDB.Bson.Serialization.Attributes +{ + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] + public class BsonDefaultValueAttribute : Attribute + { + public BsonDefaultValueAttribute(object defaultValue) { } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonElementAttribute.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonElementAttribute.cs new file mode 100644 index 0000000..3892727 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonElementAttribute.cs @@ -0,0 +1,13 @@ +#if FANTASY_UNITY +using System; +namespace MongoDB.Bson.Serialization.Attributes +{ + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] + public class BsonElementAttribute : Attribute + { + public BsonElementAttribute() { } + + public BsonElementAttribute(string elementName) { } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIdAttribute.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIdAttribute.cs new file mode 100644 index 0000000..48274d0 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIdAttribute.cs @@ -0,0 +1,11 @@ +#if FANTASY_UNITY +using System; +namespace MongoDB.Bson.Serialization.Attributes +{ + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)] + public class BsonIdAttribute : Attribute + { + + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIgnoreAttribute.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIgnoreAttribute.cs new file mode 100644 index 0000000..23e55c8 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIgnoreAttribute.cs @@ -0,0 +1,11 @@ +#if FANTASY_UNITY +using System; +namespace MongoDB.Bson.Serialization.Attributes +{ + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] + public class BsonIgnoreAttribute : Attribute + { + + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIgnoreIfDefaultAttribute.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIgnoreIfDefaultAttribute.cs new file mode 100644 index 0000000..82dddde --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIgnoreIfDefaultAttribute.cs @@ -0,0 +1,13 @@ +#if FANTASY_UNITY +using System; +namespace MongoDB.Bson.Serialization.Attributes +{ + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] + public class BsonIgnoreIfDefaultAttribute : Attribute + { + public BsonIgnoreIfDefaultAttribute() { } + + public BsonIgnoreIfDefaultAttribute(bool value) { } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIgnoreIfNullAttribute.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIgnoreIfNullAttribute.cs new file mode 100644 index 0000000..f330a8b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Attributes/BsonIgnoreIfNullAttribute.cs @@ -0,0 +1,11 @@ +#if FANTASY_UNITY +using System; +namespace MongoDB.Bson.Serialization.Attributes +{ + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)] + public class BsonIgnoreIfNullAttribute : Attribute + { + + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Entry.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Entry.cs new file mode 100644 index 0000000..e5377f2 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Entry.cs @@ -0,0 +1,102 @@ +#if FANTASY_UNITY +using System.Linq; +using Fantasy.Assembly; +using Fantasy.Async; +using Fantasy.Serialize; +using UnityEngine; +using UnityEngine.Scripting; + +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +namespace Fantasy.Platform.Unity +{ + public sealed class FantasyObject : MonoBehaviour + { + public static GameObject FantasyObjectGameObject { get; private set; } + + public static void OnRuntimeMethodLoad() + { + FantasyObjectGameObject = new GameObject("Fantasy.Net"); + DontDestroyOnLoad(FantasyObjectGameObject); + } + private void OnApplicationQuit() + { + Destroy(FantasyObjectGameObject); + } + } + + public struct OnSceneCreate + { + public Scene Scene; + public object Arg; + } + + public class Entry : MonoBehaviour + { + private static bool _isInit; + public static Scene Scene { get; private set; } + + /// + /// 初始化框架 + /// + /// + public static async FTask Initialize(params System.Reflection.Assembly[] assemblies) + { + if (_isInit) + { + Log.Error("Fantasy has already been initialized and does not need to be initialized again!"); + return; + } + FantasyObject.OnRuntimeMethodLoad(); + Log.Register(new UnityLog()); + await AssemblySystem.InnerInitialize(assemblies); + // 初始化序列化 + SerializerManager.Initialize(); +#if FANTASY_WEBGL + ThreadSynchronizationContext.Initialize(); +#endif + _isInit = true; + FantasyObject.FantasyObjectGameObject.AddComponent(); + Log.Debug("Fantasy Initialize Complete!"); + } + + /// + /// 在Entry中创建一个Scene,如果Scene已经被创建过,将先销毁Scene再创建。 + /// + /// + /// + /// + public static async FTask CreateScene(object arg = null, string sceneRuntimeMode = SceneRuntimeMode.MainThread) + { + Scene?.Dispose(); + Scene = await Scene.Create(sceneRuntimeMode); + await Scene.EventComponent.PublishAsync(new OnSceneCreate() + { + Arg = arg, + Scene = Scene + }); + return Scene; + } + + private void Update() + { + ThreadScheduler.Update(); + } + + private void OnDestroy() + { + AssemblySystem.Dispose(); + SerializerManager.Dispose(); + if (Scene != null) + { + Scene?.Dispose(); + Scene = null; + } + _isInit = false; + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Temp.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Temp.cs new file mode 100644 index 0000000..399488f --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/Temp.cs @@ -0,0 +1,108 @@ +// using System.Reflection; +// using Fantasy.Assembly; +// using Fantasy.Async; +// // using UnityEngine; +// #pragma warning disable CS0649 // Field is never assigned to, and will always have its default value +// #pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +// #pragma warning disable CS8603 // Possible null reference return. +// #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +// #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +// +// namespace Fantasy.Platform.Unity +// { +// public class MonoBehaviour +// { +// +// } +// +// public class GameObject +// { +// public GameObject(string name) +// { +// +// } +// } +// +// internal enum RuntimeInitializeLoadType +// { +// BeforeSceneLoad = 1, +// } +// +// internal class RuntimeInitializeOnLoadMethodAttribute : Attribute +// { +// public RuntimeInitializeLoadType RuntimeInitializeLoadType; +// +// public RuntimeInitializeOnLoadMethodAttribute(RuntimeInitializeLoadType loadType) +// { +// +// } +// } +// +// public sealed class FantasyObject : MonoBehaviour +// { +// public static GameObject FantasyObjectGameObject { get; private set; } +// // 这个方法将在游戏启动时自动调用 +// [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] +// static void OnRuntimeMethodLoad() +// { +// FantasyObjectGameObject = new GameObject("Fantasy.Net"); +// // DontDestroyOnLoad(FantasyObjectGameObject); +// } +// private void OnApplicationQuit() +// { +// // Destroy(FantasyObjectGameObject); +// } +// } +// +// public struct OnFantasyInit +// { +// public Scene Scene; +// } +// +// public class Entry : MonoBehaviour +// { +// private static bool _isInit; +// public static Scene Scene { get; private set; } +// /// +// /// 初始化框架 +// /// +// public static async FTask Initialize(params System.Reflection.Assembly[] assemblies) +// { +// Scene?.Dispose(); +// // 初始化程序集管理系统 +// AssemblySystem.Initialize(assemblies); +// if (!_isInit) +// { +// #if FANTASY_WEBGL +// ThreadSynchronizationContext.Initialize(); +// #endif +// _isInit = true; +// // FantasyObject.FantasyObjectGameObject.AddComponent(); +// } +// // Scene = await Scene.Create(SceneRuntimeType.MainThread); +// // await Scene.EventComponent.PublishAsync(new OnFantasyInit() +// // { +// // Scene = Scene +// // }); +// // return Scene; +// await FTask.CompletedTask; +// return null; +// } +// +// private void Update() +// { +// ThreadScheduler.Update(); +// } +// +// private void OnDestroy() +// { +// AssemblySystem.Dispose(); +// if (Scene != null) +// { +// Scene?.Dispose(); +// Scene = null; +// } +// _isInit = false; +// } +// } +// } diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/ThreadSynchronizationContext.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/ThreadSynchronizationContext.cs new file mode 100644 index 0000000..44b165a --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Platform/Unity/ThreadSynchronizationContext.cs @@ -0,0 +1,104 @@ +#if FANTASY_UNITY && !FANTASY_WEBGL +#pragma warning disable CS8765 +#pragma warning disable CS8601 +#pragma warning disable CS8618 +using System; +using System.Collections.Concurrent; +using System.Threading; + +namespace Fantasy +{ + public sealed class ThreadSynchronizationContext : SynchronizationContext + { + private Action _actionHandler; + private readonly ConcurrentQueue _queue = new(); + + public void Update() + { + while (_queue.TryDequeue(out _actionHandler)) + { + try + { + _actionHandler(); + } + catch (Exception e) + { + Log.Error(e); + } + } + } + + public override void Post(SendOrPostCallback callback, object state) + { + Post(() => callback(state)); + } + + public void Post(Action action) + { + _queue.Enqueue(action); + } + } +} +#endif +#if FANTASY_UNITY && FANTASY_WEBGL +using System; +using System.Collections.Generic; +using System.Threading; +using Fantasy; +using UnityEngine; +using Object = UnityEngine.Object; + +public class WebGLSynchronizationContextUpdater : MonoBehaviour +{ + private ThreadSynchronizationContext _context; + + public void Initialize(ThreadSynchronizationContext context) + { + _context = context; + } + + void Update() + { + _context.Update(); + } +} +public sealed class ThreadSynchronizationContext : SynchronizationContext +{ + private Action _actionHandler; + private readonly Queue _queue = new(); + + public static void Initialize() + { + var context = new ThreadSynchronizationContext(); + SetSynchronizationContext(context); + var go = new GameObject("WebGLSynchronizationContextUpdater"); + go.AddComponent().Initialize(context); + Object.DontDestroyOnLoad(go); + } + + public void Update() + { + while (_queue.TryDequeue(out _actionHandler)) + { + try + { + _actionHandler(); + } + catch (Exception e) + { + Log.Error(e); + } + } + } + + public override void Post(SendOrPostCallback callback, object state) + { + Post(() => callback(state)); + } + + public void Post(Action action) + { + _queue.Enqueue(action); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Concurrent/MultiThreadPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Concurrent/MultiThreadPool.cs new file mode 100644 index 0000000..4c946d1 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Concurrent/MultiThreadPool.cs @@ -0,0 +1,37 @@ +#if !FANTASY_WEBGL +using System; +using System.Collections.Concurrent; +using System.Runtime.CompilerServices; +#pragma warning disable CS8603 // Possible null reference return. + +namespace Fantasy.Pool +{ + /// + /// 线程安全的静态通用对象池。 + /// + internal static class MultiThreadPool + { + private static readonly ConcurrentDictionary ObjectPools = new ConcurrentDictionary(); + + public static T Rent() where T : IPool, new() + { + return ObjectPools.GetOrAdd(typeof(T), t => new MultiThreadPoolQueue(2000, () => new T())).Rent(); + } + + public static IPool Rent(Type type) + { + return ObjectPools.GetOrAdd(type, t => new MultiThreadPoolQueue(2000, CreateInstance.CreateIPool(type))).Rent(); + } + + public static void Return(T obj) where T : IPool, new() + { + if (!obj.IsPool()) + { + return; + } + + ObjectPools.GetOrAdd(typeof(T), t => new MultiThreadPoolQueue(2000, () => new T())).Return(obj); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Concurrent/MultiThreadPoolQueue.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Concurrent/MultiThreadPoolQueue.cs new file mode 100644 index 0000000..df15a1c --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Concurrent/MultiThreadPoolQueue.cs @@ -0,0 +1,76 @@ +#if !FANTASY_WEBGL +using System; +using System.Collections.Concurrent; +using System.Threading; +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8601 // Possible null reference assignment. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8603 // Possible null reference return. + +namespace Fantasy.Pool +{ + /// + /// 线程安全的对象池。 + /// + internal class MultiThreadPoolQueue + { + private int _poolCount; + private readonly int _maxCapacity; + private readonly Func _createInstance; + private readonly ConcurrentQueue _poolQueue = new ConcurrentQueue(); + private MultiThreadPoolQueue() { } + + public MultiThreadPoolQueue(int maxCapacity, Func createInstance) + { + _maxCapacity = maxCapacity; + _createInstance = createInstance; + } + + public T Rent() where T : IPool, new() + { + if (!_poolQueue.TryDequeue(out var t)) + { + var pool = new T(); + pool.SetIsPool(true); + return pool; + } + + t.SetIsPool(true); + Interlocked.Decrement(ref _poolCount); + return (T)t; + } + + public IPool Rent() + { + if (!_poolQueue.TryDequeue(out var t)) + { + var instance = _createInstance(); + instance.SetIsPool(true); + return instance; + } + + t.SetIsPool(true); + Interlocked.Decrement(ref _poolCount); + return t; + } + + public void Return(IPool obj) + { + if (!obj.IsPool()) + { + return; + } + + obj.SetIsPool(false); + + if (Interlocked.Increment(ref _poolCount) <= _maxCapacity) + { + _poolQueue.Enqueue(obj); + return; + } + + Interlocked.Decrement(ref _poolCount); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Interface/IPool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Interface/IPool.cs new file mode 100644 index 0000000..1775f28 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Interface/IPool.cs @@ -0,0 +1,18 @@ +namespace Fantasy.Pool +{ + /// + /// 实现了这个接口代表支持对象池 + /// + public interface IPool + { + /// + /// 是否从池里创建的 + /// + bool IsPool(); + /// + /// 设置是否从池里创建的 + /// + /// + void SetIsPool(bool isPool); + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Normal/Pool.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Normal/Pool.cs new file mode 100644 index 0000000..88006e1 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Normal/Pool.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +// ReSharper disable CheckNamespace + +namespace Fantasy.Pool +{ + /// + /// 静态的对象池系统,不支持多线程。 + /// + /// + public static class Pool where T : IPool, new() + { + private static readonly Queue PoolQueue = new Queue(); + /// + /// 池子里可用的数量 + /// + public static int Count => PoolQueue.Count; + + /// + /// 租借 + /// + /// + public static T Rent() + { + return PoolQueue.Count == 0 ? new T() : PoolQueue.Dequeue(); + } + + /// + /// 租借 + /// + /// 如果池子里没有,会先执行这个委托。 + /// + public static T Rent(Func generator) + { + return PoolQueue.Count == 0 ? generator() : PoolQueue.Dequeue(); + } + + /// + /// 返还 + /// + /// + public static void Return(T t) + { + if (t == null) + { + return; + } + + PoolQueue.Enqueue(t); + } + + /// + /// 返还 + /// + /// 返还的东西 + /// 返还后执行的委托 + public static void Return(T t, Action reset) + { + if (t == null) + { + return; + } + + reset(t); + PoolQueue.Enqueue(t); + } + + /// + /// 清空池子 + /// + public static void Clear() + { + PoolQueue.Clear(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Normal/PoolCore.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Normal/PoolCore.cs new file mode 100644 index 0000000..94144f1 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Normal/PoolCore.cs @@ -0,0 +1,203 @@ +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using Fantasy.DataStructure.Collection; + +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS8603 // Possible null reference return. + +namespace Fantasy.Pool +{ + /// + /// 对象池抽象接口,用于创建和管理可重复使用的对象实例。 + /// + public abstract class PoolCore : IDisposable + { + private int _poolCount; + private readonly int _maxCapacity; + /// + /// 池子里可用的数量 + /// + public int Count => _poolQueue.Count; + private readonly OneToManyQueue _poolQueue = new OneToManyQueue(); + private readonly Dictionary> _typeCheckCache = new Dictionary>(); + + /// + /// 构造函数 + /// + /// 初始的容量 + protected PoolCore(int maxCapacity) + { + _maxCapacity = maxCapacity; + } + + /// + /// 租借 + /// + /// + /// + public T Rent() where T : IPool, new() + { + if (!_poolQueue.TryDequeue(typeof(T), out var queue)) + { + queue = new T(); + } + + queue.SetIsPool(true); + _poolCount--; + return (T)queue; + } + + /// + /// 租借 + /// + /// 租借的类型 + /// + /// + public IPool Rent(Type type) + { + if (!_poolQueue.TryDequeue(type, out var queue)) + { + if (!_typeCheckCache.TryGetValue(type, out var createInstance)) + { + if (!typeof(IPool).IsAssignableFrom(type)) + { + throw new NotSupportedException($"{this.GetType().FullName} Type:{type.FullName} must inherit from IPool"); + } + else + { + createInstance = CreateInstance.CreateIPool(type); + _typeCheckCache[type] = createInstance; + } + } + + var instance = createInstance(); + instance.SetIsPool(true); + return instance; + } + + queue.SetIsPool(true); + _poolCount--; + return queue; + } + + /// + /// 返还 + /// + /// + /// + public void Return(Type type, IPool obj) + { + if (obj == null) + { + return; + } + + if (!obj.IsPool()) + { + return; + } + + if (_poolCount >= _maxCapacity) + { + return; + } + + _poolCount++; + obj.SetIsPool(false); + _poolQueue.Enqueue(type, obj); + } + + /// + /// 销毁方法 + /// + public virtual void Dispose() + { + _poolCount = 0; + _poolQueue.Clear(); + _typeCheckCache.Clear(); + } + } + + /// + /// 泛型对象池核心类,用于创建和管理可重复使用的对象实例。 + /// + /// 要池化的对象类型 + public abstract class PoolCore where T : IPool, new() + { + private int _poolCount; + private readonly int _maxCapacity; + private readonly Queue _poolQueue = new Queue(); + /// + /// 池子里可用的数量 + /// + public int Count => _poolQueue.Count; + + /// + /// 构造函数 + /// + /// 初始的容量 + protected PoolCore(int maxCapacity) + { + _maxCapacity = maxCapacity; + } + + /// + /// 租借 + /// + /// + public virtual T Rent() + { + T dequeue; + + if (_poolQueue.Count == 0) + { + dequeue = new T(); + } + else + { + _poolCount--; + dequeue = _poolQueue.Dequeue(); + } + + dequeue.SetIsPool(true); + return dequeue; + } + + /// + /// 返还 + /// + /// + public virtual void Return(T item) + { + if (item == null) + { + return; + } + + if (!item.IsPool()) + { + return; + } + + if (_poolCount >= _maxCapacity) + { + return; + } + + _poolCount++; + item.SetIsPool(false); + _poolQueue.Enqueue(item); + } + + /// + /// 销毁方法 + /// + public virtual void Dispose() + { + _poolCount = 0; + _poolQueue.Clear(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Normal/PoolWithDisposable.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Normal/PoolWithDisposable.cs new file mode 100644 index 0000000..3f97f1c --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/Normal/PoolWithDisposable.cs @@ -0,0 +1,140 @@ +using System; +using System.Collections.Generic; +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract + +namespace Fantasy.Pool +{ + /// + /// 静态通用对象池,用于存储实现了 IDisposable 接口的对象。 + /// + /// 要存储在对象池中的对象类型,必须实现 IDisposable 接口。 + public abstract class PoolWithDisposable : IDisposable where T : IPool, IDisposable, new() + { + private int _poolCount; + private readonly int _maxCapacity; + private readonly Queue _poolQueue = new Queue(); + /// + /// 池子里可用的数量 + /// + public int Count => _poolQueue.Count; + + /// + /// 构造函数 + /// + /// 初始的容量 + protected PoolWithDisposable(int maxCapacity) + { + _maxCapacity = maxCapacity; + } + + /// + /// 租借 + /// + /// + public T Rent() + { + T dequeue; + if (_poolQueue.Count == 0) + { + dequeue = new T(); + } + else + { + _poolCount--; + dequeue = _poolQueue.Dequeue(); + } + + dequeue.SetIsPool(true); + return dequeue; + } + + /// + /// 租借 + /// + /// + /// + public T Rent(Func generator) + { + T dequeue; + + if (_poolQueue.Count == 0) + { + dequeue = generator(); + } + else + { + _poolCount--; + dequeue = _poolQueue.Dequeue(); + } + + dequeue.SetIsPool(true); + return dequeue; + } + + /// + /// 返还 + /// + /// + public void Return(T t) + { + if (t == null) + { + return; + } + + if (!t.IsPool()) + { + return; + } + + if (_poolCount >= _maxCapacity) + { + return; + } + + _poolCount++; + t.SetIsPool(true); + _poolQueue.Enqueue(t); + t.Dispose(); + } + + /// + /// 返还 + /// + /// + /// + public void Return(T t, Action reset) + { + if (t == null) + { + return; + } + + if (!t.IsPool()) + { + reset(t); + return; + } + + if (_poolCount >= _maxCapacity) + { + return; + } + + reset(t); + _poolCount++; + t.SetIsPool(false); + _poolQueue.Enqueue(t); + t.Dispose(); + } + + /// + /// 销毁方法 + /// + public virtual void Dispose() + { + _poolCount = 0; + _poolQueue.Clear(); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/PoolHelper.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/PoolHelper.cs new file mode 100644 index 0000000..d9214fd --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Pool/PoolHelper.cs @@ -0,0 +1,79 @@ +using System; +using System.Reflection.Emit; +using Fantasy.Serialize; + +#pragma warning disable CS8604 // Possible null reference argument. + +namespace Fantasy.Pool +{ + internal static class CreateInstance where T : IPool + { + public static Func Create { get; } + + static CreateInstance() + { + var type = typeof(T); + var dynamicMethod = new DynamicMethod($"CreateInstance_{type.Name}", type, Type.EmptyTypes, true); + var il = dynamicMethod.GetILGenerator(); + il.Emit(OpCodes.Newobj, type.GetConstructor(Type.EmptyTypes)); + il.Emit(OpCodes.Ret); + Create = (Func) dynamicMethod.CreateDelegate(typeof(Func)); + } + } + + internal static class CreateInstance + { + public static Func CreateIPool(Type type) + { + var dynamicMethod = new DynamicMethod($"CreateInstance_{type.Name}", type, Type.EmptyTypes, true); + var il = dynamicMethod.GetILGenerator(); + il.Emit(OpCodes.Newobj, type.GetConstructor(Type.EmptyTypes)); + il.Emit(OpCodes.Ret); + return (Func)dynamicMethod.CreateDelegate(typeof(Func)); + } + + public static Func CreateObject(Type type) + { + var dynamicMethod = new DynamicMethod($"CreateInstance_{type.Name}", type, Type.EmptyTypes, true); + var il = dynamicMethod.GetILGenerator(); + il.Emit(OpCodes.Newobj, type.GetConstructor(Type.EmptyTypes)); + il.Emit(OpCodes.Ret); + return (Func)dynamicMethod.CreateDelegate(typeof(Func)); + } + + public static Func CreateMessage(Type type) + { + var dynamicMethod = new DynamicMethod($"CreateInstance_{type.Name}", type, Type.EmptyTypes, true); + var il = dynamicMethod.GetILGenerator(); + il.Emit(OpCodes.Newobj, type.GetConstructor(Type.EmptyTypes)); + il.Emit(OpCodes.Ret); + return (Func)dynamicMethod.CreateDelegate(typeof(Func)); + } + } + + // public static class CreateInstance + // { + // public static Func Create(Type type) + // { + // var dynamicMethod = new DynamicMethod($"CreateInstance_{type.Name}", type, Type.EmptyTypes, true); + // var il = dynamicMethod.GetILGenerator(); + // il.Emit(OpCodes.Newobj, type.GetConstructor(Type.EmptyTypes)); + // il.Emit(OpCodes.Ret); + // return (Func)dynamicMethod.CreateDelegate(typeof(Func)); + // } + // } + + // /// + // /// 利用泛型的特性来减少反射的使用。 + // /// + // /// + // public static class PoolChecker where T : new() + // { + // public static bool IsPool { get; } + // + // static PoolChecker() + // { + // IsPool = typeof(IPool).IsAssignableFrom(typeof(T)); + // } + // } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/ISceneUpdate.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/ISceneUpdate.cs new file mode 100644 index 0000000..f736edf --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/ISceneUpdate.cs @@ -0,0 +1,15 @@ +namespace Fantasy +{ + internal interface ISceneUpdate + { + void Update(); + } + + internal sealed class EmptySceneUpdate : ISceneUpdate + { + public void Update() + { + + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scene.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scene.cs new file mode 100644 index 0000000..e961533 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scene.cs @@ -0,0 +1,619 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Fantasy.Async; +using Fantasy.Entitas; +using Fantasy.Event; +using Fantasy.IdFactory; +using Fantasy.Network; +using Fantasy.Network.Interface; +using Fantasy.Pool; +using Fantasy.Scheduler; +using Fantasy.Timer; +#if FANTASY_NET +using Fantasy.DataBase; +using Fantasy.Platform.Net; +using Fantasy.SingleCollection; +using System.Runtime.CompilerServices; +using Fantasy.Network.Route; +using Fantasy.Network.Roaming; +#endif +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8601 // Possible null reference assignment. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +namespace Fantasy +{ + /// + /// 当Scene创建完成后发送的事件参数 + /// + public struct OnCreateScene + { + /// + /// 获取与事件关联的场景实体。 + /// + public readonly Scene Scene; + /// + /// 初始化一个新的 OnCreateScene 实例。 + /// + /// + public OnCreateScene(Scene scene) + { + Scene = scene; + } + } + + /// + /// 表示一个场景实体,用于创建与管理特定的游戏场景信息。 + /// + public partial class Scene : Entity + { + #region Members + /// + /// Scene的运行类型 + /// + public SceneRuntimeType SceneRuntimeType { get; protected set; } +#if FANTASY_NET + /// + /// Scene类型,对应SceneConfig的SceneType + /// + public int SceneType { get; protected set; } + /// + /// 所属的世界 + /// + public World World { get; protected set; } + /// + /// 所在的Process + /// + public Process Process { get; protected set; } + /// + /// SceneConfig的Id + /// + public uint SceneConfigId { get; protected set; } + internal ANetwork InnerNetwork { get; private set; } + internal ANetwork OuterNetwork { get; private set; } + internal SceneConfig SceneConfig => SceneConfigData.Instance.Get(SceneConfigId); + private readonly Dictionary _processSessionInfos = new Dictionary(); +#endif + /// + /// 当前Scene的上下文 + /// + public ThreadSynchronizationContext ThreadSynchronizationContext { get; internal set; } + /// + /// 当前Scene的下创建的Entity + /// + private readonly Dictionary _entities = new Dictionary(); + internal readonly Dictionary> TypeInstance = new Dictionary>(); + #endregion + + #region IdFactory + + /// + /// Entity实体Id的生成器 + /// + public IEntityIdFactory EntityIdFactory { get; protected set; } + /// + /// Entity实体RuntimeId的生成器 + /// + public IRuntimeIdFactory RuntimeIdFactory { get; protected set; } + + #endregion + + #region Pool + + internal EntityPool EntityPool; + internal EntityListPool EntityListPool; + internal EntitySortedDictionaryPool EntitySortedDictionaryPool; + + #endregion + + #region Component + + /// + /// Scene下的任务调度器系统组件 + /// + public TimerComponent TimerComponent { get; internal set; } + /// + /// Scene下的事件系统组件 + /// + public EventComponent EventComponent { get; internal set; } + /// + /// Scene下的ESC系统组件 + /// + public EntityComponent EntityComponent { get; internal set; } + /// + /// Scene下的网络消息对象池组件 + /// + public MessagePoolComponent MessagePoolComponent { get; internal set; } + /// + /// Scene下的协程锁组件 + /// + public CoroutineLockComponent CoroutineLockComponent { get; internal set; } + /// + /// Scene下的网络消息派发组件 + /// + internal MessageDispatcherComponent MessageDispatcherComponent { get; set; } +#if FANTASY_NET + /// + /// Scene下的Entity分表组件 + /// + public SingleCollectionComponent SingleCollectionComponent { get; internal set; } + /// + /// Scene下的内网消息发送组件 + /// + public NetworkMessagingComponent NetworkMessagingComponent { get; internal set; } + /// + /// Scene下的漫游终端管理组件 + /// + public TerminusComponent TerminusComponent { get; internal set; } + /// + /// Scene下的Session漫游组件 + /// + public RoamingComponent RoamingComponent { get; internal set; } +#endif + #endregion + + #region Initialize + + private async FTask Initialize() + { + EntityPool = new EntityPool(); + EntityListPool = new EntityListPool(); + EntitySortedDictionaryPool = new EntitySortedDictionaryPool(); + SceneUpdate = EntityComponent = await Create(this, false, false).Initialize(); + MessagePoolComponent = Create(this,false,true); + EventComponent = await Create(this,false,true).Initialize(); + TimerComponent = Create(this, false, true).Initialize(); + CoroutineLockComponent = Create(this, false, true).Initialize(); + MessageDispatcherComponent = await Create(this, false, true).Initialize(); +#if FANTASY_NET + NetworkMessagingComponent = Create(this, false, true); + SingleCollectionComponent = await Create(this, false, true).Initialize(); + TerminusComponent = Create(this, false, true); + RoamingComponent = Create(this, false, true).Initialize(); +#endif + } + + /// + /// Scene销毁方法,执行了该方法会把当前Scene下的所有实体都销毁掉。 + /// + public override void Dispose() + { + if (IsDisposed) + { + return; + } + + base.Dispose(); + _entities.Remove(RuntimeId); + + switch (SceneRuntimeType) + { + case SceneRuntimeType.Root: + { +#if FANTASY_NET + foreach (var (_, processSessionInfo) in _processSessionInfos.ToList()) + { + processSessionInfo.Dispose(); + } + + _processSessionInfos.Clear(); +#endif + _entities.Remove(EntityComponent.RuntimeId); + + foreach (var (runtimeId, entity) in _entities.ToList()) + { + if (runtimeId != entity.RuntimeId) + { + continue; + } + entity.Dispose(); + } + + _entities.Clear(); +#if FANTASY_UNITY + _unityWorldId--; + _unitySceneId--; +#endif + TypeInstance.Clear(); +#if FANTASY_NET + Process.RemoveScene(this, false); + Process.RemoveSceneToProcess(this, false); +#endif + EntityComponent.Dispose(); + EntityPool.Dispose(); + EntityListPool.Dispose(); + EntitySortedDictionaryPool.Dispose(); + break; + } + case SceneRuntimeType.SubScene: + { + break; + } + default: + { + Log.Error($"SceneRuntimeType: {SceneRuntimeType} The unsupported SceneRuntimeType of the Scene executed Dispose."); + break; + } + } + + SceneUpdate = null; + EntityIdFactory = null; + RuntimeIdFactory = null; + + EntityPool = null; + EntityListPool = null; + EntitySortedDictionaryPool = null; + EntityComponent = null; + TimerComponent = null; + EventComponent = null; + MessagePoolComponent = null; + CoroutineLockComponent = null; + MessageDispatcherComponent = null; +#if FANTASY_NET + World = null; + Process = null; + SceneType = 0; + SceneConfigId = 0; + SingleCollectionComponent = null; + NetworkMessagingComponent = null; + TerminusComponent = null; + RoamingComponent = null; +#elif FANTASY_UNITY + Session = null; + UnityNetwork = null; +#endif + ThreadSynchronizationContext = null; + SceneRuntimeType = SceneRuntimeType.None; + } + + #endregion + + internal ISceneUpdate SceneUpdate { get; set; } + + internal void Update() + { + try + { + SceneUpdate.Update(); + } + catch (Exception e) + { + Log.Error(e); + } + } + + #region Create + +#if FANTASY_UNITY || FANTASY_CONSOLE + private static uint _unitySceneId = 0; + private static byte _unityWorldId = 0; + public Session Session { get; private set; } + private AClientNetwork UnityNetwork { get; set; } + /// + /// 创建一个Unity的Scene,注意:该方法只能在主线程下使用。 + /// + /// 选择Scene的运行方式 + /// + /// + public static async FTask Create(string sceneRuntimeMode = SceneRuntimeMode.MainThread) + { + var world = ++_unityWorldId; + + if (world > byte.MaxValue - 1) + { + throw new Exception($"World ID ({world}) exceeds the maximum allowed value of 255."); + } + + var sceneId = (uint)(++_unitySceneId + world * 1000); + + if (sceneId > 255255) + { + throw new Exception($"Scene ID ({sceneId}) exceeds the maximum allowed value of 255255."); + } + + var scene = new Scene(); + scene.Scene = scene; + scene.Parent = scene; + scene.Type = typeof(Scene); + scene.SceneRuntimeType = SceneRuntimeType.Root; + scene.EntityIdFactory = IdFactoryHelper.EntityIdFactory(sceneId, world); + scene.RuntimeIdFactory = IdFactoryHelper.RuntimeIdFactory(0, sceneId, world); + scene.Id = IdFactoryHelper.EntityId(0, sceneId, world, 0); + scene.RuntimeId = IdFactoryHelper.RuntimeId(0, sceneId, world, 0); + scene.AddEntity(scene); + await SetScheduler(scene, sceneRuntimeMode); + scene.ThreadSynchronizationContext.Post(() => + { + scene.EventComponent.PublishAsync(new OnCreateScene(scene)).Coroutine(); + }); + return scene; + } + public Session Connect(string remoteAddress, NetworkProtocolType networkProtocolType, Action onConnectComplete, Action onConnectFail, Action onConnectDisconnect, bool isHttps, int connectTimeout = 5000) + { + UnityNetwork?.Dispose(); + UnityNetwork = NetworkProtocolFactory.CreateClient(this, networkProtocolType, NetworkTarget.Outer); + Session = UnityNetwork.Connect(remoteAddress, onConnectComplete, onConnectFail, onConnectDisconnect, isHttps, connectTimeout); + return Session; + } +#endif +#if FANTASY_NET + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static Scene Create(Process process, byte worldId, uint sceneConfigId) + { + var scene = new Scene(); + scene.Scene = scene; + scene.Parent = scene; + scene.Type = typeof(Scene); + scene.Process = process; + scene.SceneRuntimeType = SceneRuntimeType.Root; + scene.EntityIdFactory = IdFactoryHelper.EntityIdFactory(sceneConfigId, worldId); + scene.RuntimeIdFactory = IdFactoryHelper.RuntimeIdFactory(0,sceneConfigId, worldId); + scene.Id = IdFactoryHelper.EntityId(0, sceneConfigId, worldId, 0); + scene.RuntimeId = IdFactoryHelper.RuntimeId(0, sceneConfigId, worldId, 0); + scene.AddEntity(scene); + return scene; + } + /// + /// 创建一个新的Scene + /// + /// 所属的Process + /// 对应的MachineConfig配置文件 + /// 对应的SceneConfig配置文件 + /// 创建成功后会返回创建的Scene的实例 + public static async FTask Create(Process process, MachineConfig machineConfig, SceneConfig sceneConfig) + { + var scene = Create(process, (byte)sceneConfig.WorldConfigId, sceneConfig.Id); + scene.SceneType = sceneConfig.SceneType; + scene.SceneConfigId = sceneConfig.Id; + await SetScheduler(scene, sceneConfig.SceneRuntimeMode); + + if (sceneConfig.WorldConfigId != 0) + { + scene.World = World.Create(scene, (byte)sceneConfig.WorldConfigId); + } + + if (sceneConfig.InnerPort != 0) + { + // 创建内网网络服务器 + scene.InnerNetwork = NetworkProtocolFactory.CreateServer(scene, ProcessDefine.InnerNetwork, NetworkTarget.Inner, machineConfig.InnerBindIP, sceneConfig.InnerPort); + } + + if (sceneConfig.OuterPort != 0) + { + // 创建外网网络服务 + var networkProtocolType = Enum.Parse(sceneConfig.NetworkProtocol); + scene.OuterNetwork = NetworkProtocolFactory.CreateServer(scene, networkProtocolType, NetworkTarget.Outer, machineConfig.OuterBindIP, sceneConfig.OuterPort); + } + + Process.AddScene(scene); + process.AddSceneToProcess(scene); + + scene.ThreadSynchronizationContext.Post(() => + { + if (sceneConfig.SceneTypeString == "Addressable") + { + // 如果是AddressableScene,自动添加上AddressableManageComponent。 + scene.AddComponent(); + } + + scene.EventComponent.PublishAsync(new OnCreateScene(scene)).Coroutine(); + }); + + return scene; + } + /// + /// 在Scene下面创建一个子Scene,一般用于副本,或者一些特殊的场景。 + /// + /// 主Scene的实例 + /// SceneType,可以在SceneType里找到,例如:SceneType.Addressable + /// 子Scene创建成功后执行的委托,可以传递null + /// + public static SubScene CreateSubScene(Scene parentScene, int sceneType, Action onSubSceneComplete = null) + { + var scene = new SubScene(); + scene.Scene = scene; + scene.Parent = scene; + scene.RootScene = parentScene; + scene.Type = typeof(SubScene); + scene.SceneType = sceneType; + scene.World = parentScene.World; + scene.Process = parentScene.Process; + scene.SceneRuntimeType = SceneRuntimeType.SubScene; + scene.EntityIdFactory = parentScene.EntityIdFactory; + scene.RuntimeIdFactory = parentScene.RuntimeIdFactory; + scene.Id = scene.EntityIdFactory.Create; + scene.RuntimeId = scene.RuntimeIdFactory.Create; + scene.AddEntity(scene); + scene.Initialize(parentScene); + scene.ThreadSynchronizationContext.Post(() => OnEvent().Coroutine()); + return scene; + async FTask OnEvent() + { + await scene.EventComponent.PublishAsync(new OnCreateScene(scene)); + onSubSceneComplete?.Invoke(scene, parentScene); + } + } +#endif + private static async FTask SetScheduler(Scene scene, string sceneRuntimeMode) + { + switch (sceneRuntimeMode) + { + case "MainThread": + { + scene.ThreadSynchronizationContext = ThreadScheduler.MainScheduler.ThreadSynchronizationContext; + scene.SceneUpdate = new EmptySceneUpdate(); + ThreadScheduler.AddMainScheduler(scene); + await scene.Initialize(); + break; + } + case "MultiThread": + { +#if !FANTASY_WEBGL + scene.ThreadSynchronizationContext = new ThreadSynchronizationContext(); +#endif + scene.SceneUpdate = new EmptySceneUpdate(); + ThreadScheduler.AddToMultiThreadScheduler(scene); + await scene.Initialize(); + break; + } + case "ThreadPool": + { +#if !FANTASY_WEBGL + scene.ThreadSynchronizationContext = new ThreadSynchronizationContext(); +#endif + scene.SceneUpdate = new EmptySceneUpdate(); + ThreadScheduler.AddToThreadPoolScheduler(scene); + await scene.Initialize(); + break; + } + } + } + #endregion + + #region Entities + + /// + /// 添加一个实体到当前Scene下 + /// + /// 实体实例 + public virtual void AddEntity(Entity entity) + { + _entities.Add(entity.RuntimeId, entity); + } + + /// + /// 根据RunTimeId查询一个实体 + /// + /// 实体的RunTimeId + /// 返回的实体 + public virtual Entity GetEntity(long runTimeId) + { + return _entities.TryGetValue(runTimeId, out var entity) ? entity : null; + } + + /// + /// 根据RunTimeId查询一个实体 + /// + /// 实体的RunTimeId + /// 实体实例 + /// 返回一个bool值来提示是否查找到这个实体 + public virtual bool TryGetEntity(long runTimeId, out Entity entity) + { + return _entities.TryGetValue(runTimeId, out entity); + } + + /// + /// 根据RunTimeId查询一个实体 + /// + /// 实体的RunTimeId + /// 要查询实体的泛型类型 + /// 返回的实体 + public virtual T GetEntity(long runTimeId) where T : Entity + { + return _entities.TryGetValue(runTimeId, out var entity) ? (T)entity : null; + } + + /// + /// 根据RunTimeId查询一个实体 + /// + /// 实体的RunTimeId + /// 实体实例 + /// 要查询实体的泛型类型 + /// 返回一个bool值来提示是否查找到这个实体 + public virtual bool TryGetEntity(long runTimeId, out T entity) where T : Entity + { + if (_entities.TryGetValue(runTimeId, out var getEntity)) + { + entity = (T)getEntity; + return true; + } + + entity = null; + return false; + } + + /// + /// 删除一个实体,仅是删除不会指定实体的销毁方法 + /// + /// 实体的RunTimeId + /// 返回一个bool值来提示是否删除了这个实体 + public virtual bool RemoveEntity(long runTimeId) + { + return _entities.Remove(runTimeId); + } + + /// + /// 删除一个实体,仅是删除不会指定实体的销毁方法 + /// + /// 实体实例 + /// 返回一个bool值来提示是否删除了这个实体 + public virtual bool RemoveEntity(Entity entity) + { + return _entities.Remove(entity.RuntimeId); + } + + #endregion + + #region InnerSession + +#if FANTASY_NET + /// + /// 根据runTimeId获得Session + /// + /// + /// + /// + public virtual Session GetSession(long runTimeId) + { + var sceneId = IdFactoryHelper.RuntimeIdTool.GetSceneId(ref runTimeId); + + if (_processSessionInfos.TryGetValue(sceneId, out var processSessionInfo)) + { + if (!processSessionInfo.Session.IsDisposed) + { + return processSessionInfo.Session; + } + + _processSessionInfos.Remove(sceneId); + } + + if (Process.IsInAppliaction(ref sceneId)) + { + // 如果在同一个Process下,不需要通过Socket发送了,直接通过Process下转发。 + var processSession = Session.CreateInnerSession(Scene); + _processSessionInfos.Add(sceneId, new ProcessSessionInfo(processSession, null)); + return processSession; + } + + if (!SceneConfigData.Instance.TryGet(sceneId, out var sceneConfig)) + { + throw new Exception($"The scene with sceneId {sceneId} was not found in the configuration file"); + } + + if (!ProcessConfigData.Instance.TryGet(sceneConfig.ProcessConfigId, out var processConfig)) + { + throw new Exception($"The process with processId {sceneConfig.ProcessConfigId} was not found in the configuration file"); + } + + if (!MachineConfigData.Instance.TryGet(processConfig.MachineId, out var machineConfig)) + { + throw new Exception($"The machine with machineId {processConfig.MachineId} was not found in the configuration file"); + } + + var remoteAddress = $"{machineConfig.InnerBindIP}:{sceneConfig.InnerPort}"; + var client = NetworkProtocolFactory.CreateClient(Scene, ProcessDefine.InnerNetwork, NetworkTarget.Inner); + var session = client.Connect(remoteAddress, null, () => + { + Log.Error($"Unable to connect to the target server sourceServerId:{Scene.Process.Id} targetServerId:{sceneConfig.ProcessConfigId}"); + }, null, false); + _processSessionInfos.Add(sceneId, new ProcessSessionInfo(session, client)); + return session; + } +#endif + #endregion + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/SceneRuntimeMode.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/SceneRuntimeMode.cs new file mode 100644 index 0000000..60dbc85 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/SceneRuntimeMode.cs @@ -0,0 +1,21 @@ +namespace Fantasy +{ + /// + /// Scene的运行类型 + /// + public class SceneRuntimeMode + { + /// + /// Scene在主线程中运行. + /// + public const string MainThread = "MainThread"; + /// + /// Scene在一个独立的线程中运行. + /// + public const string MultiThread = "MultiThread"; + /// + /// Scene在一个根据当前CPU核心数创建的线程池中运行. + /// + public const string ThreadPool = "ThreadPool"; + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/SceneRuntimeType.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/SceneRuntimeType.cs new file mode 100644 index 0000000..664107f --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/SceneRuntimeType.cs @@ -0,0 +1,21 @@ +namespace Fantasy +{ + /// + /// 代表一个Scene的类型 + /// + public enum SceneRuntimeType + { + /// + /// 默认 + /// + None = 0, + /// + /// 代表一个普通的Scene,一个普通的Scene肯定是是Root的 + /// + Root = 1, + /// + /// 代表一个子场景,子场景肯定是有父场景的 + /// + SubScene = 2, + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/ISceneScheduler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/ISceneScheduler.cs new file mode 100644 index 0000000..c04cc30 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/ISceneScheduler.cs @@ -0,0 +1,11 @@ +using System; + +namespace Fantasy +{ + internal interface ISceneScheduler : IDisposable + { + void Add(Scene scene); + void Remove(Scene scene); + void Update(); + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/MainScheduler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/MainScheduler.cs new file mode 100644 index 0000000..692def0 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/MainScheduler.cs @@ -0,0 +1,83 @@ +using System.Collections.Generic; +#if FANTASY_UNITY || FANTASY_NET || !FANTASY_WEBGL +using System.Threading; +#endif +#if FANTASY_NET +using Fantasy.Platform.Net; +#endif +namespace Fantasy +{ + internal sealed class MainScheduler : ISceneScheduler + { + private readonly Queue _queue = new Queue(); + public readonly ThreadSynchronizationContext ThreadSynchronizationContext; + + public MainScheduler() + { + ThreadSynchronizationContext = new ThreadSynchronizationContext(); +#if !FANTASY_WEBGL + SynchronizationContext.SetSynchronizationContext(ThreadSynchronizationContext); +#endif + } + public void Dispose() + { + _queue.Clear(); + } + + public void Add(Scene scene) + { + ThreadSynchronizationContext.Post(() => + { + if (scene.IsDisposed) + { + return; + } + + _queue.Enqueue(scene); + }); + } + + public void Remove(Scene scene) + { + ThreadSynchronizationContext.Post(() => + { + if (scene.IsDisposed) + { + return; + } + + var initialCount = _queue.Count; + for (var i = 0; i < initialCount; i++) + { + var currentScene = _queue.Dequeue(); + if (currentScene != scene) + { + _queue.Enqueue(currentScene); + } + } + }); + } + + public void Update() + { + ThreadSynchronizationContext.Update(); + var initialCount = _queue.Count; + + while (initialCount-- > 0) + { + if(!_queue.TryDequeue(out var scene)) + { + continue; + } + + if (scene.IsDisposed) + { + continue; + } + + scene.Update(); + _queue.Enqueue(scene); + } + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/MultiThreadScheduler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/MultiThreadScheduler.cs new file mode 100644 index 0000000..28f2d42 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/MultiThreadScheduler.cs @@ -0,0 +1,103 @@ +#if !FANTASY_WEBGL || !FANTASY_SINGLETHREAD +using System; +using System.Collections.Concurrent; +using System.Threading; +namespace Fantasy +{ + internal struct MultiThreadStruct : IDisposable + { + public readonly Thread Thread; + public readonly CancellationTokenSource Cts; + + public MultiThreadStruct(Thread thread, CancellationTokenSource cts) + { + Thread = thread; + Cts = cts; + } + + public void Dispose() + { + Cts.Cancel(); + if (Thread.IsAlive) + { + Thread.Join(); + } + Cts.Dispose(); + } + } + + internal sealed class MultiThreadScheduler : ISceneScheduler + { + private bool _isDisposed; + private readonly ConcurrentDictionary _threads = new ConcurrentDictionary(); + public int ThreadCount => _threads.Count; + + public void Dispose() + { + if (_isDisposed) + { + return; + } + + _isDisposed = true; + + foreach (var (_, multiThreadStruct) in _threads.ToArray()) + { + multiThreadStruct.Dispose(); + } + + _threads.Clear(); + } + + public void Add(Scene scene) + { + var cts = new CancellationTokenSource(); + var thread = new Thread(() => Loop(scene, cts.Token)); + _threads.TryAdd(scene.RuntimeId, new MultiThreadStruct(thread, cts)); + thread.Start(); + } + + public void Remove(Scene scene) + { + if (_threads.TryRemove(scene.RuntimeId, out var multiThreadStruct)) + { + multiThreadStruct.Dispose(); + } + } + + public void Update() + { + throw new NotImplementedException(); + } + + private void Loop(Scene scene, CancellationToken cancellationToken) + { + var sceneThreadSynchronizationContext = scene.ThreadSynchronizationContext; + SynchronizationContext.SetSynchronizationContext(sceneThreadSynchronizationContext); + + while (!cancellationToken.IsCancellationRequested) + { + try + { + if (scene.IsDisposed) + { + Remove(scene); + return; + } + + sceneThreadSynchronizationContext.Update(); + scene.Update(); + } + catch (Exception e) + { + Log.Error($"Error in MultiThreadScheduler loop: {e.Message}"); + } + finally + { + Thread.Sleep(1); + } + } + } + } +} +#endif diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/ThreadPoolScheduler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/ThreadPoolScheduler.cs new file mode 100644 index 0000000..9f5a44c --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/ThreadPoolScheduler.cs @@ -0,0 +1,140 @@ +#if !FANTASY_WEBGL || !FANTASY_SINGLETHREAD +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Threading; +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8604 // Possible null reference argument. +namespace Fantasy +{ + internal sealed class ThreadPoolScheduler : ISceneScheduler + { + private bool _isDisposed; + private readonly List _threads; + private readonly ConcurrentBag _queue = new ConcurrentBag(); + private readonly CancellationTokenSource _cancellationTokenSource = new CancellationTokenSource(); + + public ThreadPoolScheduler() + { + // 最大线程数、避免线程过多发生的资源抢占问题。 + // 但如果使用了MultiThreadScheduler,那么这里的线程数就算是设置了也有可能导致线程过多的问题。 + // 线程过多看每个线程的抢占情况,如果抢占资源占用不是很大也没什么大问题。如果过大的情况,就会有性能问题。 + // 所以根据情况来使用不同的调度器。 + var maxThreadCount = Environment.ProcessorCount; + _threads = new List(maxThreadCount); + + for (var i = 0; i < maxThreadCount; ++i) + { + Thread thread = new(() => Loop(_cancellationTokenSource.Token)) + { + IsBackground = true + }; + _threads.Add(thread); + thread.Start(); + } + } + + public void Dispose() + { + if (_isDisposed) + { + return; + } + + _isDisposed = true; + _cancellationTokenSource.Cancel(); + + foreach (var thread in _threads) + { + if (thread.IsAlive) + { + thread.Join(); + } + } + + _cancellationTokenSource.Dispose(); + _threads.Clear(); + } + + public void Add(Scene scene) + { + if (_isDisposed) + { + return; + } + + _queue.Add(scene); + } + + public void Remove(Scene scene) + { + if (_isDisposed) + { + return; + } + + var newQueue = new Queue(); + + while (!_queue.IsEmpty) + { + if (_queue.TryTake(out var currentScene)) + { + if (currentScene != scene) + { + newQueue.Enqueue(currentScene); + } + } + } + + while (newQueue.TryDequeue(out var newScene)) + { + _queue.Add(newScene); + } + } + + public void Update() + { + throw new NotImplementedException(); + } + + private void Loop(CancellationToken cancellationToken) + { + while (!cancellationToken.IsCancellationRequested) + { + if (_queue.TryTake(out var scene)) + { + if (scene == null || scene.IsDisposed) + { + continue; + } + + var sceneThreadSynchronizationContext = scene.ThreadSynchronizationContext; + SynchronizationContext.SetSynchronizationContext(sceneThreadSynchronizationContext); + + try + { + sceneThreadSynchronizationContext.Update(); + scene.Update(); + } + catch (Exception e) + { + Log.Error($"Error in ThreadPoolScheduler scene: {e.Message}"); + } + finally + { + SynchronizationContext.SetSynchronizationContext(null); + } + + _queue.Add(scene); + Thread.Sleep(1); + } + else + { + // 当队列为空的时候、避免无效循环消耗CPU。 + Thread.Sleep(10); + } + } + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/ThreadScheduler.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/ThreadScheduler.cs new file mode 100644 index 0000000..5bd0dea --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/Scheduler/ThreadScheduler.cs @@ -0,0 +1,66 @@ +// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +namespace Fantasy +{ + /// + /// 线程调度器 + /// + internal static class ThreadScheduler + { + /// + /// 主线程调度器 + /// + public static MainScheduler MainScheduler { get; private set; } + /// + /// 多线程调度器,根据当前CPU核心数量创建的固定线程。 + /// + public static ISceneScheduler MultiThreadScheduler { get; private set; } + /// + /// 线程池调度器 + /// + public static ISceneScheduler ThreadPoolScheduler { get; private set; } + + static ThreadScheduler() + { + MainScheduler = new MainScheduler(); + } + + internal static void Update() + { + MainScheduler.Update(); + } + + internal static void AddMainScheduler(Scene scene) + { + MainScheduler.Add(scene); + } + + internal static void AddToMultiThreadScheduler(Scene scene) + { + if (MultiThreadScheduler == null) + { +#if FANTASY_SINGLETHREAD || FANTASY_WEBGL + MultiThreadScheduler = MainScheduler; +#else + MultiThreadScheduler = new MultiThreadScheduler(); +#endif + } + + MultiThreadScheduler.Add(scene); + } + + internal static void AddToThreadPoolScheduler(Scene scene) + { + if (ThreadPoolScheduler == null) + { +#if FANTASY_SINGLETHREAD || FANTASY_WEBGL + ThreadPoolScheduler = MainScheduler; +#else + ThreadPoolScheduler = new ThreadPoolScheduler(); +#endif + } + + ThreadPoolScheduler.Add(scene); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/SubScene.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/SubScene.cs new file mode 100644 index 0000000..438b8ba --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Scene/SubScene.cs @@ -0,0 +1,171 @@ +using System.Collections.Generic; +using System.Linq; +using Fantasy.Entitas; +using Fantasy.Network; +#pragma warning disable CS8601 // Possible null reference assignment. +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable. + +namespace Fantasy +{ + /// + /// 代表一个Scene下的子Scene + /// + public sealed partial class SubScene : Scene + { + /// + /// 子Scene的根Scene + /// + public Scene RootScene { get; internal set; } + /// + /// 存储当前Scene下管理的实体。 + /// + private readonly Dictionary _entities = new Dictionary(); + + internal void Initialize(Scene rootScene) + { + EntityPool = rootScene.EntityPool; + EntityListPool = rootScene.EntityListPool; + EntitySortedDictionaryPool = rootScene.EntitySortedDictionaryPool; + SceneUpdate = rootScene.SceneUpdate; + TimerComponent = rootScene.TimerComponent; + EventComponent = rootScene.EventComponent; + EntityComponent = rootScene.EntityComponent; + MessagePoolComponent = rootScene.MessagePoolComponent; + CoroutineLockComponent = rootScene.CoroutineLockComponent; + MessageDispatcherComponent = rootScene.MessageDispatcherComponent; + #if FANTASY_NET + NetworkMessagingComponent = rootScene.NetworkMessagingComponent; + SingleCollectionComponent = rootScene.SingleCollectionComponent; + TerminusComponent = rootScene.TerminusComponent; + #endif + ThreadSynchronizationContext = rootScene.ThreadSynchronizationContext; + } + + /// + /// 当子Scene销毁时执行 + /// + public override void Dispose() + { + if (IsDisposed) + { + return; + } + + ThreadSynchronizationContext.Post(() => + { + if (IsDisposed) + { + return; + } + + foreach (var (runtimeId, entity) in _entities.ToList()) + { + if (runtimeId != entity.RuntimeId) + { + continue; + } + entity.Dispose(); + } + + _entities.Clear(); + base.Dispose(); + }); + } + + /// + /// 添加一个实体到当前Scene下 + /// + /// 实体实例 + public override void AddEntity(Entity entity) + { + _entities.Add(entity.RuntimeId, entity); + RootScene.AddEntity(entity); + } + + /// + /// 根据RunTimeId查询一个实体 + /// + /// 实体的RunTimeId + /// 返回的实体 + public override Entity GetEntity(long runTimeId) + { + return _entities.GetValueOrDefault(runTimeId); + } + + /// + /// 根据RunTimeId查询一个实体 + /// + /// 实体的RunTimeId + /// 实体实例 + /// 返回一个bool值来提示是否查找到这个实体 + public override bool TryGetEntity(long runTimeId, out Entity entity) + { + return _entities.TryGetValue(runTimeId, out entity); + } + + /// + /// 根据RunTimeId查询一个实体 + /// + /// 实体的RunTimeId + /// 要查询实体的泛型类型 + /// 返回的实体 + public override T GetEntity(long runTimeId) + { + return _entities.TryGetValue(runTimeId, out var entity) ? (T)entity : null; + } + + /// + /// 根据RunTimeId查询一个实体 + /// + /// 实体的RunTimeId + /// 实体实例 + /// 要查询实体的泛型类型 + /// 返回一个bool值来提示是否查找到这个实体 + public override bool TryGetEntity(long runTimeId, out T entity) + { + if (_entities.TryGetValue(runTimeId, out var getEntity)) + { + entity = (T)getEntity; + return true; + } + + entity = null; + return false; + } + + /// + /// 删除一个实体,仅是删除不会指定实体的销毁方法 + /// + /// 实体的RunTimeId + /// 返回一个bool值来提示是否删除了这个实体 + public override bool RemoveEntity(long runTimeId) + { + return _entities.Remove(runTimeId) && RootScene.RemoveEntity(runTimeId); + } + + /// + /// 删除一个实体,仅是删除不会指定实体的销毁方法 + /// + /// 实体实例 + /// 返回一个bool值来提示是否删除了这个实体 + public override bool RemoveEntity(Entity entity) + { + return RemoveEntity(entity.RuntimeId); + } + +#if FANTASY_NET + /// + /// 根据runTimeId获得Session + /// + /// + /// + /// + public override Session GetSession(long runTimeId) + { + return RootScene.GetSession(runTimeId); + } + #endif + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/BsonPackHelperNet.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/BsonPackHelperNet.cs new file mode 100644 index 0000000..bb5293b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/BsonPackHelperNet.cs @@ -0,0 +1,311 @@ +#if FANTASY_NET +using System.Buffers; +using System.Collections; +using System.ComponentModel; +using System.Reflection; +using Fantasy.Assembly; +using Fantasy.Entitas; +using MongoDB.Bson; +using MongoDB.Bson.IO; +using MongoDB.Bson.Serialization; +using MongoDB.Bson.Serialization.Conventions; +using MongoDB.Bson.Serialization.Serializers; +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. +#pragma warning disable CS8602 // Dereference of a possibly null reference. + +namespace Fantasy.Serialize +{ + /// + /// BSON帮助方法 + /// + public class BsonPackHelper : ISerialize + { + /// + /// 序列化器的名字 + /// + public string SerializeName { get; } = "Bson"; + + /// + /// 构造函数 + /// + public BsonPackHelper() + { + // 清除掉注册过的LookupClassMap。 + + var classMapRegistryField = typeof(BsonClassMap).GetField("__classMaps", BindingFlags.Static | BindingFlags.NonPublic); + + if (classMapRegistryField != null) + { + ((Dictionary)classMapRegistryField.GetValue(null)).Clear(); + } + + // 清除掉注册过的ConventionRegistry。 + + var registryField = typeof(ConventionRegistry).GetField("_lookup", BindingFlags.Static | BindingFlags.NonPublic); + + if (registryField != null) + { + var registry = registryField.GetValue(null); + var dictionaryField = registry.GetType().GetField("_conventions", BindingFlags.Instance | BindingFlags.NonPublic); + if (dictionaryField != null) + { + ((IDictionary)dictionaryField.GetValue(registry)).Clear(); + } + } + + // 初始化ConventionRegistry、注册IgnoreExtraElements。 + + ConventionRegistry.Register("IgnoreExtraElements", new ConventionPack { new IgnoreExtraElementsConvention(true) }, type => true); + + // 注册一个自定义的序列化器。 + + // BsonSerializer.TryRegisterSerializer(typeof(float2), new StructBsonSerialize()); + // BsonSerializer.TryRegisterSerializer(typeof(float3), new StructBsonSerialize()); + // BsonSerializer.TryRegisterSerializer(typeof(float4), new StructBsonSerialize()); + // BsonSerializer.TryRegisterSerializer(typeof(quaternion), new StructBsonSerialize()); + BsonSerializer.RegisterSerializer(new ObjectSerializer(x => true)); + + // 注册LookupClassMap。 + + foreach (var type in AssemblySystem.ForEach()) + { + if (type.IsInterface || type.IsAbstract || type.IsGenericType || !typeof(Entity).IsAssignableFrom(type)) + { + continue; + } + + BsonClassMap.LookupClassMap(type); + } + } + + /// + /// 反序列化 + /// + /// + /// + /// + public T Deserialize(byte[] bytes) + { + var @object = BsonSerializer.Deserialize(bytes); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + return @object; + } + + /// + /// 反序列化 + /// + /// + /// + /// + public T Deserialize(MemoryStreamBuffer buffer) + { + var @object = BsonSerializer.Deserialize(buffer); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + return @object; + } + + /// + /// 反序列化 + /// + /// + /// + /// + public object Deserialize(Type type, byte[] bytes) + { + var @object = BsonSerializer.Deserialize(bytes, type); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + return @object; + } + + /// + /// 反序列化 + /// + /// + /// + /// + public object Deserialize(Type type, MemoryStreamBuffer buffer) + { + var @object = BsonSerializer.Deserialize(buffer, type); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + return @object; + } + + /// + /// 反序列化 + /// + /// + /// + /// + /// + /// + public unsafe T Deserialize(byte[] bytes, int index, int count) + { + T @object; + + fixed (byte* ptr = &bytes[index]) + { + using var stream = new UnmanagedMemoryStream(ptr, count); + @object = BsonSerializer.Deserialize(stream); + } + + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + + return @object; + } + + /// + /// 反序列化 + /// + /// + /// + /// + /// + /// + public unsafe object Deserialize(Type type, byte[] bytes, int index, int count) + { + object @object; + + fixed (byte* ptr = &bytes[index]) + { + using var stream = new UnmanagedMemoryStream(ptr, count); + @object = BsonSerializer.Deserialize(stream, type); + } + + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + + return @object; + } + + /// + /// 序列化 + /// + /// + /// + /// + public void Serialize(T @object, IBufferWriter buffer) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + using IBsonWriter bsonWriter = + new BsonBinaryWriter((MemoryStream)buffer, BsonBinaryWriterSettings.Defaults); + BsonSerializer.Serialize(bsonWriter, @object); + } + + /// + /// 序列化 + /// + /// + /// + public void Serialize(object @object, IBufferWriter buffer) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + using IBsonWriter bsonWriter = + new BsonBinaryWriter((MemoryStream)buffer, BsonBinaryWriterSettings.Defaults); + BsonSerializer.Serialize(bsonWriter, @object.GetType(), @object); + } + + /// + /// 序列化 + /// + /// + /// + /// + public void Serialize(Type type, object @object, IBufferWriter buffer) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + using IBsonWriter bsonWriter = + new BsonBinaryWriter((MemoryStream)buffer, BsonBinaryWriterSettings.Defaults); + BsonSerializer.Serialize(bsonWriter, type, @object); + } + + /// + /// 序列化并返回的长度 + /// + /// + /// + /// + /// + public int SerializeAndReturnLength(Type type, object @object, MemoryStreamBuffer buffer) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + using IBsonWriter bsonWriter = new BsonBinaryWriter(buffer, BsonBinaryWriterSettings.Defaults); + BsonSerializer.Serialize(bsonWriter, type, @object); + return (int)buffer.Length; + } + + /// + /// 序列化 + /// + /// + /// + public static byte[] Serialize(object @object) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + return @object.ToBson(@object.GetType()); + } + + /// + /// 序列化 + /// + /// + /// + /// + public static byte[] Serialize(T @object) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + return @object.ToBson(); + } + + /// + /// 克隆 + /// + /// + /// + /// + public T Clone(T t) + { + return Deserialize(Serialize(t)); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/BsonPackHelperUnity.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/BsonPackHelperUnity.cs new file mode 100644 index 0000000..df44fcb --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/BsonPackHelperUnity.cs @@ -0,0 +1,60 @@ +#if FANTASY_UNITY +using System; +using System.Buffers; +namespace Fantasy.Serialize +{ + public class BsonPackHelper : ISerialize + { + public string SerializeName { get; } = "Bson"; + public T Deserialize(byte[] bytes) + { + throw new NotImplementedException(); + } + + public T Deserialize(MemoryStreamBuffer buffer) + { + throw new NotImplementedException(); + } + + public object Deserialize(Type type, byte[] bytes) + { + throw new NotImplementedException(); + } + + public object Deserialize(Type type, MemoryStreamBuffer buffer) + { + throw new NotImplementedException(); + } + + public T Deserialize(byte[] bytes, int index, int count) + { + throw new NotImplementedException(); + } + + public object Deserialize(Type type, byte[] bytes, int index, int count) + { + throw new NotImplementedException(); + } + + public void Serialize(T @object, IBufferWriter buffer) + { + throw new NotImplementedException(); + } + + public void Serialize(object @object, IBufferWriter buffer) + { + throw new NotImplementedException(); + } + + public void Serialize(Type type, object @object, IBufferWriter buffer) + { + throw new NotImplementedException(); + } + + public T Clone(T t) + { + throw new NotImplementedException(); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/StructBsonSerialize.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/StructBsonSerialize.cs new file mode 100644 index 0000000..15d8663 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/StructBsonSerialize.cs @@ -0,0 +1,65 @@ +#if FANTASY_NET +using System.Reflection; +using MongoDB.Bson; +using MongoDB.Bson.IO; +using MongoDB.Bson.Serialization; +using MongoDB.Bson.Serialization.Serializers; + +namespace Fantasy.Serialize; + +/// +/// 提供对结构体类型进行 BSON 序列化和反序列化的辅助类。 +/// +/// 要序列化和反序列化的结构体类型。 +public class StructBsonSerialize : StructSerializerBase where TValue : struct +{ + /// + /// 将结构体对象序列化为 BSON 数据。 + /// + /// 序列化上下文。 + /// 序列化参数。 + /// 要序列化的结构体对象。 + public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, TValue value) + { + var nominalType = args.NominalType; + var bsonWriter = context.Writer; + bsonWriter.WriteStartDocument(); + var fields = nominalType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + foreach (var field in fields) + { + bsonWriter.WriteName(field.Name); + BsonSerializer.Serialize(bsonWriter, field.FieldType, field.GetValue(value)); + } + bsonWriter.WriteEndDocument(); + } + + /// + /// 将 BSON 数据反序列化为结构体对象。 + /// + /// 反序列化上下文。 + /// 反序列化参数。 + /// 反序列化得到的结构体对象。 + public override TValue Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) + { + //boxing is required for SetValue to work + object obj = new TValue(); + var actualType = args.NominalType; + var bsonReader = context.Reader; + bsonReader.ReadStartDocument(); + while (bsonReader.ReadBsonType() != BsonType.EndOfDocument) + { + var name = bsonReader.ReadName(Utf8NameDecoder.Instance); + + var field = actualType.GetField(name, + BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + if (field != null) + { + var value = BsonSerializer.Deserialize(bsonReader, field.FieldType); + field.SetValue(obj, value); + } + } + bsonReader.ReadEndDocument(); + return (TValue) obj; + } +} +#endif diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/SupportInitializeChecker.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/SupportInitializeChecker.cs new file mode 100644 index 0000000..82c6829 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/BsonPack/SupportInitializeChecker.cs @@ -0,0 +1,17 @@ +#if FANTASY_NET +using System.ComponentModel; +using Fantasy.Entitas; + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +namespace Fantasy.Serialize; + +public static class SupportInitializeChecker where T : Entity +{ + public static bool IsSupported { get; } + + static SupportInitializeChecker() + { + IsSupported = typeof(ISupportInitialize).IsAssignableFrom(typeof(T)); + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/Interface/ASerialize.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/Interface/ASerialize.cs new file mode 100644 index 0000000..7487b86 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/Interface/ASerialize.cs @@ -0,0 +1,60 @@ +using System; +using System.ComponentModel; +using System.Runtime.Serialization; +using Fantasy.Pool; +#if FANTASY_NET || FANTASY_UNITY || FANTASY_CONSOLE +using MongoDB.Bson.Serialization.Attributes; +#endif +using Newtonsoft.Json; +using ProtoBuf; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +namespace Fantasy.Serialize +{ + public abstract class ASerialize : ISupportInitialize, IDisposable + { + public virtual void Dispose() { } + public virtual void BeginInit() { } + public virtual void EndInit() { } + public virtual void AfterDeserialization() => EndInit(); + } + + public abstract class AMessage : ASerialize, IPool + { +#if FANTASY_NET || FANTASY_UNITY || FANTASY_CONSOLE + [BsonIgnore] + [JsonIgnore] + [IgnoreDataMember] + [ProtoIgnore] + private Scene _scene; + protected Scene GetScene() + { + return _scene; + } + + public void SetScene(Scene scene) + { + _scene = scene; + } +#endif +#if FANTASY_NET + [BsonIgnore] +#endif + [JsonIgnore] + [IgnoreDataMember] + [ProtoIgnore] + private bool _isPool; + + public bool IsPool() + { + return _isPool; + } + + public void SetIsPool(bool isPool) + { + _isPool = isPool; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/Interface/ISerialize.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/Interface/ISerialize.cs new file mode 100644 index 0000000..a3a9159 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/Interface/ISerialize.cs @@ -0,0 +1,87 @@ +using System; +using System.Buffers; + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +namespace Fantasy.Serialize +{ + public interface ISerialize + { + /// + /// 序列化器的名字,用于在协议里指定用什么协议序列化使用 + /// + string SerializeName { get; } + /// + /// 反序列化 + /// + /// + /// + /// + T Deserialize(byte[] bytes); + /// + /// 反序列化 + /// + /// + /// + /// + T Deserialize(MemoryStreamBuffer buffer); + /// + /// 反序列化 + /// + /// + /// + /// + object Deserialize(Type type, byte[] bytes); + /// + /// 反序列化 + /// + /// + /// + /// + object Deserialize(Type type, MemoryStreamBuffer buffer); + /// + /// 反序列化 + /// + /// + /// + /// + /// + /// + T Deserialize(byte[] bytes, int index, int count); + /// + /// 反序列化 + /// + /// + /// + /// + /// + /// + object Deserialize(Type type, byte[] bytes, int index, int count); + /// + /// 序列化 + /// + /// + /// + /// + void Serialize(T @object, IBufferWriter buffer); + /// + /// 序列化 + /// + /// + /// + void Serialize(object @object, IBufferWriter buffer); + /// + /// 序列化 + /// + /// + /// + /// + void Serialize(Type type, object @object, IBufferWriter buffer); + /// + /// 克隆 + /// + /// + /// + /// + T Clone(T t); + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/MemoryStreamBuffer.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/MemoryStreamBuffer.cs new file mode 100644 index 0000000..23919b4 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/MemoryStreamBuffer.cs @@ -0,0 +1,73 @@ +using System; +using System.Buffers; +using System.IO; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Fantasy.Serialize +{ + public enum MemoryStreamBufferSource + { + None = 0, + Pack = 1, + UnPack = 2, + } + + public sealed class MemoryStreamBuffer : MemoryStream, IBufferWriter + { + public MemoryStreamBufferSource MemoryStreamBufferSource; + public MemoryStreamBuffer() { } + + public MemoryStreamBuffer(MemoryStreamBufferSource memoryStreamBufferSource, int capacity) : base(capacity) + { + MemoryStreamBufferSource = memoryStreamBufferSource; + } + public MemoryStreamBuffer(byte[] buffer): base(buffer) { } + + public void Advance(int count) + { + if (count < 0) + { + throw new ArgumentOutOfRangeException(nameof(count), count, "The value of 'count' cannot be negative."); + } + + var newLength = Position + count; + + if (newLength != Length) + { + SetLength(newLength); + } + + Position = newLength; + } + + public Memory GetMemory(int sizeHint = 0) + { + if (sizeHint < 0) + { + throw new ArgumentOutOfRangeException(nameof(sizeHint), sizeHint, "The value of 'count' cannot be negative."); + } + + if (Length - Position <= sizeHint) + { + SetLength(Position + sizeHint); + } + + return new Memory(GetBuffer(), (int)Position, (int)(Length - Position)); + } + + public Span GetSpan(int sizeHint = 0) + { + if (sizeHint < 0) + { + throw new ArgumentOutOfRangeException(nameof(sizeHint), sizeHint, "The value of 'count' cannot be negative."); + } + + if (Length - Position <= sizeHint) + { + SetLength(Position + sizeHint); + } + + return new Span(GetBuffer(), (int)Position, (int)(Length - Position)); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/ProtoBufPackHelper/IProto.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/ProtoBufPackHelper/IProto.cs new file mode 100644 index 0000000..2267dd2 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/ProtoBufPackHelper/IProto.cs @@ -0,0 +1,9 @@ +namespace Fantasy.Serialize +{ + /// + /// 代表是一个ProtoBuf协议 + /// + public interface IProto + { + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/ProtoBufPackHelper/ProtoBufPackHelperNet.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/ProtoBufPackHelper/ProtoBufPackHelperNet.cs new file mode 100644 index 0000000..dc3886b --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/ProtoBufPackHelper/ProtoBufPackHelperNet.cs @@ -0,0 +1,223 @@ +#if FANTASY_NET || FANTASY_EXPORTER +using System.Buffers; +using Fantasy.Assembly; +using ProtoBuf.Meta; +namespace Fantasy.Serialize +{ + /// + /// ProtoBufP帮助类,Net平台使用 + /// + public sealed class ProtoBufPackHelper : ISerialize + { + /// + /// 序列化器的名字 + /// + public string SerializeName { get; } = "ProtoBuf"; + + /// + /// 构造函数 + /// + public ProtoBufPackHelper () + { +#if FANTASY_NET + RuntimeTypeModel.Default.AutoAddMissingTypes = true; + RuntimeTypeModel.Default.AllowParseableTypes = true; + RuntimeTypeModel.Default.AutoAddMissingTypes = true; + RuntimeTypeModel.Default.AutoCompile = true; + RuntimeTypeModel.Default.UseImplicitZeroDefaults = true; + RuntimeTypeModel.Default.InferTagFromNameDefault = true; + + foreach (var type in AssemblySystem.ForEach(typeof(IProto))) + { + RuntimeTypeModel.Default.Add(type, true); + } + + RuntimeTypeModel.Default.CompileInPlace(); +#endif + } + + /// + /// 使用ProtoBuf反序列化数据到实例 + /// + /// + /// + /// + public T Deserialize(byte[] bytes) + { + var memory = new ReadOnlyMemory(bytes); + var @object = RuntimeTypeModel.Default.Deserialize(memory); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + return @object; + } + /// + /// 使用ProtoBuf反序列化数据到实例 + /// + /// + /// + /// + public T Deserialize(MemoryStreamBuffer buffer) + { + var @object = RuntimeTypeModel.Default.Deserialize(buffer); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + + return @object; + } + /// + /// 使用ProtoBuf反序列化数据到实例 + /// + /// + /// + /// + public object Deserialize(Type type, byte[] bytes) + { + var memory = new ReadOnlyMemory(bytes); + var @object = RuntimeTypeModel.Default.Deserialize(type, memory); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + return @object; + } + /// + /// 使用ProtoBuf反序列化数据到实例 + /// + /// + /// + /// + public object Deserialize(Type type, MemoryStreamBuffer buffer) + { + var @object = RuntimeTypeModel.Default.Deserialize(type, buffer); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + + return @object; + } + /// + /// 使用ProtoBuf反序列化数据到实例 + /// + /// + /// + /// + /// + /// + public T Deserialize(byte[] bytes, int index, int count) + { + var memory = new ReadOnlyMemory(bytes, index, count); + var @object = RuntimeTypeModel.Default.Deserialize(memory); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + + return @object; + } + /// + /// 使用ProtoBuf反序列化数据到实例 + /// + /// + /// + /// + /// + /// + public object Deserialize(Type type, byte[] bytes, int index, int count) + { + var memory = new ReadOnlyMemory(bytes, index, count); + var @object = RuntimeTypeModel.Default.Deserialize(type, memory); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + + return @object; + } + /// + /// 使用ProtoBuf序列化某一个实例到IBufferWriter中 + /// + /// + /// + /// + public void Serialize(T @object, IBufferWriter buffer) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + RuntimeTypeModel.Default.Serialize(buffer, @object); + } + /// + /// 使用ProtoBuf序列化某一个实例到IBufferWriter中 + /// + /// + /// + public void Serialize(object @object, IBufferWriter buffer) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + RuntimeTypeModel.Default.Serialize(buffer, @object); + } + /// + /// 使用ProtoBuf序列化某一个实例到IBufferWriter中 + /// + /// + /// + /// + public void Serialize(Type type, object @object, IBufferWriter buffer) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + RuntimeTypeModel.Default.Serialize(buffer, @object); + } + internal byte[] Serialize(object @object) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + using (var buffer = new MemoryStream()) + { + RuntimeTypeModel.Default.Serialize(buffer, @object); + return buffer.ToArray(); + } + } + private byte[] Serialize(T @object) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + using (var buffer = new MemoryStream()) + { + RuntimeTypeModel.Default.Serialize(buffer, @object); + return buffer.ToArray(); + } + } + /// + /// 克隆 + /// + /// + /// + /// + public T Clone(T t) + { + return Deserialize(Serialize(t)); + } + } +} +#endif diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/ProtoBufPackHelper/ProtoBufPackHelperUnity.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/ProtoBufPackHelper/ProtoBufPackHelperUnity.cs new file mode 100644 index 0000000..6df5903 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/ProtoBufPackHelper/ProtoBufPackHelperUnity.cs @@ -0,0 +1,202 @@ +#if FANTASY_UNITY || FANTASY_CONSOLE +using System; +using System.Buffers; +using System.IO; +using Fantasy.Assembly; +using ProtoBuf; +using ProtoBuf.Meta; + +namespace Fantasy.Serialize +{ + /// + /// ProtoBufP帮助类,Unity平台使用 + /// + public sealed class ProtoBufPackHelper : ISerialize + { + /// + /// 序列化器的名字 + /// + public string SerializeName { get; } = "ProtoBuf"; + + /// + /// 使用ProtoBuf反序列化数据到实例 + /// + /// + /// + /// + public unsafe T Deserialize(byte[] bytes) + { + fixed (byte* ptr = bytes) + { + using var stream = new UnmanagedMemoryStream(ptr, bytes.Length); + var @object = ProtoBuf.Serializer.Deserialize(stream); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + return @object; + } + } + /// + /// 使用ProtoBuf反序列化数据到实例 + /// + /// + /// + /// + public T Deserialize(MemoryStreamBuffer buffer) + { + var @object = ProtoBuf.Serializer.Deserialize(buffer); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + return @object; + } + /// + /// 使用ProtoBuf反序列化数据到实例 + /// + /// + /// + /// + public unsafe object Deserialize(Type type, byte[] bytes) + { + fixed (byte* ptr = bytes) + { + using var stream = new UnmanagedMemoryStream(ptr, bytes.Length); + var @object = ProtoBuf.Serializer.Deserialize(type, stream); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + + return @object; + } + } + /// + /// 使用ProtoBuf反序列化数据到实例 + /// + /// + /// + /// + public object Deserialize(Type type, MemoryStreamBuffer buffer) + { + var @object = ProtoBuf.Serializer.Deserialize(type, buffer); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + + return @object; + } + /// + /// 使用ProtoBuf反序列化数据到实例 + /// + /// + /// + /// + /// + /// + public unsafe T Deserialize(byte[] bytes, int index, int count) + { + fixed (byte* ptr = &bytes[index]) + { + using var stream = new UnmanagedMemoryStream(ptr, count); + var @object = ProtoBuf.Serializer.Deserialize(stream); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + return @object; + } + } + /// + /// 使用ProtoBuf反序列化数据到实例 + /// + /// + /// + /// + /// + /// + public unsafe object Deserialize(Type type, byte[] bytes, int index, int count) + { + fixed (byte* ptr = &bytes[index]) + { + using var stream = new UnmanagedMemoryStream(ptr, count); + var @object = ProtoBuf.Serializer.Deserialize(type, stream); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + return @object; + } + } + /// + /// 使用ProtoBuf序列化某一个实例到IBufferWriter中 + /// + /// + /// + /// + public void Serialize(T @object, IBufferWriter buffer) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + RuntimeTypeModel.Default.Serialize((MemoryStream)buffer, @object); + } + /// + /// 使用ProtoBuf序列化某一个实例到IBufferWriter中 + /// + /// + /// + public void Serialize(object @object, IBufferWriter buffer) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + RuntimeTypeModel.Default.Serialize((MemoryStream)buffer, @object); + } + /// + /// 使用ProtoBuf序列化某一个实例到IBufferWriter中 + /// + /// + /// + /// + public void Serialize(Type type, object @object, IBufferWriter buffer) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + RuntimeTypeModel.Default.Serialize((MemoryStream)buffer, @object); + } + private byte[] Serialize(T @object) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + using (var buffer = new MemoryStream()) + { + RuntimeTypeModel.Default.Serialize(buffer, @object); + return buffer.ToArray(); + } + } + /// + /// 克隆 + /// + /// + /// + /// + public T Clone(T t) + { + return Deserialize(Serialize(t)); + } + } +} +#endif \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/SerializerManager.cs b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/SerializerManager.cs new file mode 100644 index 0000000..2272074 --- /dev/null +++ b/Fantasy/Fantasy.Net/Fantasy.Net/Runtime/Core/Serialize/SerializerManager.cs @@ -0,0 +1,152 @@ +using System; +using System.Collections.Generic; +using Fantasy.Assembly; +using Fantasy.Helper; +#if !FANTASY_EXPORTER +using Fantasy.Network; +#endif +#pragma warning disable CS8604 // Possible null reference argument. +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. + +namespace Fantasy.Serialize +{ + /// + /// 框架内置的序列化器类型 + /// + public static class FantasySerializerType + { + /// + /// ProtoBuf在SerializerManager的数组下标 + /// + public const int ProtoBuf = 0; + /// + /// Bson在SerializerManager的数组下标 + /// + public const int Bson = 1; + } + + /// + /// 管理序列化静态方法,主要是优化网络协议时使用。 + /// + public static class SerializerManager + { + private static ISerialize[] _serializers; + private static bool _isInitialized = false; + +#if FANTASY_NET || FANTASY_UNITY + /// + /// 初始化方法 + /// + public static void Initialize() + { + if (_isInitialized) + { + return; + } + + try + { + var sort = new SortedList(); + + foreach (var serializerType in AssemblySystem.ForEach(typeof(ISerialize))) + { + var serializer = (ISerialize)Activator.CreateInstance(serializerType); + var computeHash64 = HashCodeHelper.ComputeHash64(serializer.SerializeName); + sort.Add(computeHash64, serializer); + } + + var index = 1; + _serializers = new ISerialize[sort.Count]; + + foreach (var (_, serialize) in sort) + { + var serializerIndex = 0; + + switch (serialize) + { + case ProtoBufPackHelper: + { + serializerIndex = FantasySerializerType.ProtoBuf; + break; + } + case BsonPackHelper: + { + serializerIndex = FantasySerializerType.Bson; + break; + } + default: + { + serializerIndex = ++index; + break; + } + } + + _serializers[serializerIndex] = serialize; + } + + _isInitialized = true; + Log.Info($"初始化序列化器成功,数量为:{_serializers.Length}"); + } + catch (Exception e) + { + Log.Error(e); + Dispose(); + } + } +#else + /// + /// 初始化方法 + /// + public static void Initialize() + { + if (_isInitialized) + { + return; + } + + _serializers = new ISerialize[1]; + _serializers[0] = new ProtoBufPackHelper(); + } +#endif + + /// + /// 销毁方法 + /// + public static void Dispose() + { + _isInitialized = false; + Array.Clear(_serializers, 0, _serializers.Length); + } + + /// + /// 根据协议类型获取序列化器 + /// + /// + /// + public static ISerialize GetSerializer(uint opCodeProtocolType) + { + return _serializers[opCodeProtocolType]; + } + + /// + /// 获得一个序列化器 + /// + /// + /// + /// + public static bool TryGetSerializer(uint opCodeProtocolType, out ISerialize serializer) + { + if (opCodeProtocolType < _serializers.Length) + { + serializer = _serializers[opCodeProtocolType]; + return true; + } + + serializer = default; + return false; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Net/Fantasy.Net/icon.png b/Fantasy/Fantasy.Net/Fantasy.Net/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8ae7488eeee063ed5cc9c3143afda597f06b8770 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIICC0X`wFmgeTZxsPpKlI^|9-Q#zArJZw)T;ZL0-7%oY%Es$i>aIUPm1UkT zjv*T7lM@!G&zRPEYQCaUM(3GyK9NEmQwO00VI6(p5(hC39vw{=u>?*{9v&YDF#%y- z9alk(a#0aSu?HMHf+CLFS{;wtUf{f%y6oJPUsHQ`9-dLjv}tROWM(u0D6 m!iZ literal 0 HcmV?d00001 diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Custom.txt b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Custom.txt new file mode 100644 index 0000000..fd90a9b --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Custom.txt @@ -0,0 +1 @@ +// 自定义导出配置文件,用于配置自定义导出自定义程序的路径 diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Server/MachineConfig.xlsx b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Server/MachineConfig.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..999e9390a0106ff50de9a11177b0079970e8d172 GIT binary patch literal 10108 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 literal 0 HcmV?d00001 diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Server/ProcessConfig.xlsx b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Server/ProcessConfig.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..001235a88ccf20eb6b6e31d70999f503a96b5b59 GIT binary patch literal 10189 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 BNRR*k literal 0 HcmV?d00001 diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Server/SceneConfig.xlsx b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Server/SceneConfig.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8d6684f3df50ecaf9bece97ae03e49e2d7f44b8d GIT binary patch literal 18543 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 literal 0 HcmV?d00001 diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Server/WorldConfig.xlsx b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Server/WorldConfig.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8194c9a59601307e3caac2c14e6d71fb2da587cf GIT binary patch literal 10127 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 D88#kT literal 0 HcmV?d00001 diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Version.txt b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Version.txt new file mode 100644 index 0000000..55b03f5 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Excel/Version.txt @@ -0,0 +1 @@ +{"WorksheetNames":[-8419147776733210060,-3495952183970875596,1720330851179383898,5812538452563588342],"Tables":{"-3495952183970875596":1747624043302,"-1088042625810372120":1731573652950,"1720330851179383898":1728449870789,"3730651590607244245":1731575713470,"5812538452563588342":1748394916174}} \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/MachineConfigData.Json b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/MachineConfigData.Json new file mode 100644 index 0000000..f56f98e --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/MachineConfigData.Json @@ -0,0 +1,3 @@ +{"List":[ +{"Id":1,"OuterIP":"127.0.0.1","OuterBindIP":"127.0.0.1","InnerBindIP":"127.0.0.1"} +]} diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/ProcessConfigData.Json b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/ProcessConfigData.Json new file mode 100644 index 0000000..a05a13c --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/ProcessConfigData.Json @@ -0,0 +1,3 @@ +{"List":[ +{"Id":1,"MachineId":1,"StartupGroup":0} +]} diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/SceneConfigData.Json b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/SceneConfigData.Json new file mode 100644 index 0000000..dbb3a7f --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/SceneConfigData.Json @@ -0,0 +1,6 @@ +{"List":[ +{"Id":1001,"ProcessConfigId":1,"WorldConfigId":1,"SceneRuntimeMode":"MultiThread","SceneTypeString":"Addressable","NetworkProtocol":null,"OuterPort":0,"InnerPort":11001,"SceneType":2}, +{"Id":1002,"ProcessConfigId":1,"WorldConfigId":1,"SceneRuntimeMode":"MultiThread","SceneTypeString":"Gate","NetworkProtocol":"KCP","OuterPort":20000,"InnerPort":11002,"SceneType":3}, +{"Id":1003,"ProcessConfigId":1,"WorldConfigId":1,"SceneRuntimeMode":"MultiThread","SceneTypeString":"Map","NetworkProtocol":null,"OuterPort":0,"InnerPort":11003,"SceneType":4}, +{"Id":1004,"ProcessConfigId":1,"WorldConfigId":1,"SceneRuntimeMode":"MultiThread","SceneTypeString":"Chat","NetworkProtocol":null,"OuterPort":0,"InnerPort":11004,"SceneType":8} +]} diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/WorldConfigData.Json b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/WorldConfigData.Json new file mode 100644 index 0000000..60dd090 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/Json/Server/WorldConfigData.Json @@ -0,0 +1,3 @@ +{"List":[ +{"Id":1,"WorldName":"测试服","DbConnection":null,"DbName":"fantasy_main","DbType":"MongoDB"} +]} diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/Inner/InnerMessage.proto b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/Inner/InnerMessage.proto new file mode 100644 index 0000000..a8b51b8 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/Inner/InnerMessage.proto @@ -0,0 +1,27 @@ +syntax = "proto3"; +package Sining.Message; +message G2A_TestRequest // IRouteRequest,G2A_TestResponse +{ + +} +message G2A_TestResponse // IRouteResponse +{ + +} +message G2M_RequestAddressableId // IRouteRequest,M2G_ResponseAddressableId +{ + +} +message M2G_ResponseAddressableId // IRouteResponse +{ + int64 AddressableId = 1; // Map服务器返回的AddressableId +} +/// 通知Chat服务器创建一个RouteId +message G2Chat_CreateRouteRequest // IRouteRequest,Chat2G_CreateRouteResponse +{ + int64 GateRouteId = 1; +} +message Chat2G_CreateRouteResponse // IRouteResponse +{ + int64 ChatRouteId = 1; +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/OpCode.Cache b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/OpCode.Cache new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/OpCode.Cache @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/Outer/OuterMessage.proto b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/Outer/OuterMessage.proto new file mode 100644 index 0000000..b036a74 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/Outer/OuterMessage.proto @@ -0,0 +1,64 @@ +syntax = "proto3"; +package Fantasy.Network.Message; +// 协议分为: +// ProtoBuf:可以在Outer和Inner文件里使用。 +// MemoryPack:可以在Outer和Inner文件里使用。 +// Bson:仅支持在Inner文件里使用。 +// 使用方式: +// 在message协议上方添加// Protocol+空格+协议名字 +// 例如:// Protocol ProtoBuf 或 // Protocol MemoryPack +message C2G_TestMessage // IMessage +{ + string Tag = 1; +} +message C2G_TestRequest // IRequest,G2C_TestResponse +{ + string Tag = 1; +} +message G2C_TestResponse // IResponse +{ + string Tag = 1; +} +message C2G_CreateAddressableRequest // IRequest,G2C_CreateAddressableResponse +{ + +} +message G2C_CreateAddressableResponse // IResponse +{ + +} +message C2M_TestMessage // IAddressableRouteMessage +{ + string Tag = 1; +} +message C2M_TestRequest // IAddressableRouteRequest,M2C_TestResponse +{ + string Tag = 1; +} +message M2C_TestResponse // IAddressableRouteResponse +{ + string Tag = 1; +} +/// 通知Gate服务器创建一个Chat的Route连接 +message C2G_CreateChatRouteRequest // IRequest,G2C_CreateChatRouteResponse +{ + +} +message G2C_CreateChatRouteResponse // IResponse +{ + +} +/// 发送一个Route消息给Chat +message C2Chat_TestMessage // ICustomRouteMessage,ChatRoute +{ + string Tag = 1; +} +/// 发送一个RPCRoute消息给Chat +message C2Chat_TestMessageRequest // ICustomRouteRequest,Chat2C_TestMessageResponse,ChatRoute +{ + string Tag = 1; +} +message Chat2C_TestMessageResponse // ICustomRouteResponse +{ + string Tag = 1; +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/RouteType.Config b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/RouteType.Config new file mode 100644 index 0000000..66082cf --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.Config/Config/NetworkProtocol/RouteType.Config @@ -0,0 +1,3 @@ +// Route协议定义(需要定义1000以上、因为1000以内的框架预留) +GateRoute = 1001 // Gate +ChatRoute = 1002 // Chat \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Fantasy-Net.Config.targets b/Fantasy/Fantasy.Packages/Fantasy.Config/Fantasy-Net.Config.targets new file mode 100644 index 0000000..19464f8 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.Config/Fantasy-Net.Config.targets @@ -0,0 +1,25 @@ + + + + + + + + + + + + $(MSBuildProjectDirectory)\Tools\Exporter\ConfigTable\%(RecursiveDir)%(Filename)%(Extension) + + + + + + + + + + diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/Fantasy.Config.csproj b/Fantasy/Fantasy.Packages/Fantasy.Config/Fantasy.Config.csproj new file mode 100644 index 0000000..bcb4e78 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.Config/Fantasy.Config.csproj @@ -0,0 +1,37 @@ + + + + Fantasy-Net.Config + 2024.1.4 + Fantasy-Net.Config + qq362946 + qq362946 + ../../nupkg + false + + Fantasy is a high-performance network development framework based on .NET, supporting mainstream protocols. It is designed for development teams or individuals needing a quick start, scalability, and a distributed, cross-platform solution at the commercial level. Fantasy aims to provide easy-to-use tools while ensuring high system performance and scalability. + Copyright 2026 qq362946 + README.md + https://www.code-fantasy.com/ + https://github.com/qq362946/Fantasy + git + Net, c#, Server, Game, GameServer, Fantasy , Network + icon.png + enable + enable + Fantasy-Net.Config + net8.0;net9.0 + default + + + + + + + + + + + + + diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/README.md b/Fantasy/Fantasy.Packages/Fantasy.Config/README.md new file mode 100644 index 0000000..697ec05 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.Config/README.md @@ -0,0 +1,16 @@ +# Fantasy-Net.Config +在Config文件夹中,存放着Fantasy所需的各种配置文件。这些文件涵盖了多个方面。每个配置文件都有其特定的格式和功能,通过精心设计的这些配置文件,开发团队能够快速调整框架参数,以实现更好的游戏体验,从而提升Fantasy的整体质量。 +## Excel文件夹 +里面存放了Fantasy.Net所需的四个Excel配置文件。用户可以利用Fantasy-Net.Exporter工具,依据这四个Excel文件生成相应的JSON文件,以供框架使用。这一过程不仅简化了数据处理,还确保了不同组件之间的无缝对接,使得工作流程更加高效。请确保在导出之前,Excel文件的格式和内容符合要求,以避免产生错误。 +## Json文件夹 +在该目录中存放了Fantasy.Net所需的四个JSON配置文件。用户可以根据这四个文件的模板进行添加或修改配置,以满足具体需求。每个项目的功能说明在相应的Excel文件中有详细描述,方便用户理解和使用这些配置文件。我们建议用户仔细阅读Excel文件中的说明,以确保配置的正确性和有效性。 +## NetworkProtocol文件夹 +存放框架所需定义网络协议的模版和文件夹 +### Inner文件夹 +定义服务器之间的网络协议 +### Outer文件夹 +定义客户端和服务器之间的网络协议 +### RouteType.Config +定义自定义Route协议的配置文件 +## 交流与讨论: +__讨论QQ群 : Fantasy服务器开发交流群 569888673 __ \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.Config/icon.png b/Fantasy/Fantasy.Packages/Fantasy.Config/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8ae7488eeee063ed5cc9c3143afda597f06b8770 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIICC0X`wFmgeTZxsPpKlI^|9-Q#zArJZw)T;ZL0-7%oY%Es$i>aIUPm1UkT zjv*T7lM@!G&zRPEYQCaUM(3GyK9NEmQwO00VI6(p5(hC39vw{=u>?*{9v&YDF#%y- z9alk(a#0aSu?HMHf+CLFS{;wtUf{f%y6oJPUsHQ`9-dLjv}tROWM(u0D6 m!iZ literal 0 HcmV?d00001 diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/ConfigTableHelper.cs b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/ConfigTableHelper.cs new file mode 100644 index 0000000..242bd3c --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/ConfigTableHelper.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.IO; +using Fantasy.Platform.Net; +using Fantasy.Serialize; +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +// ReSharper disable SuspiciousTypeConversion.Global + +namespace Fantasy.ConfigTable +{ + /// + /// 配置表帮助类 + /// + public static class ConfigTableHelper + { + private static string _configTableBinaryDirectory; + private static readonly object Lock = new object(); + // 配置表数据缓存字典 + private static readonly Dictionary ConfigDic = new (); + /// + /// 初始化ConfigTableHelper + /// + /// + public static void Initialize(string configTableBinaryDirectory) + { + _configTableBinaryDirectory = configTableBinaryDirectory; + } + /// + /// 加载配置表数据 + /// + /// 配置表类型 + /// 配置表数据 + public static T Load() where T : ASerialize + { + lock (Lock) + { + try + { + var dataConfig = typeof(T).Name; + + if (ConfigDic.TryGetValue(dataConfig, out var aProto)) + { + return (T)aProto; + } + + var configFile = GetConfigPath(dataConfig); + var bytes = File.ReadAllBytes(configFile); + // Log.Debug($"dataConfig:{dataConfig} {bytes.Length}"); + var data = SerializerManager.GetSerializer(FantasySerializerType.ProtoBuf).Deserialize(bytes); + ConfigDic[dataConfig] = data; + return data; + } + catch (Exception ex) + { + throw new Exception($"ConfigTableManage:{typeof(T).Name} 数据表加载之后反序列化时出错:{ex}"); + } + } + } + + /// + /// 获取配置表文件路径 + /// + /// 配置表名称 + /// 配置表文件路径 + private static string GetConfigPath(string name) + { + var configFile = Path.Combine(_configTableBinaryDirectory, $"{name}.bytes"); + + if (File.Exists(configFile)) + { + return configFile; + } + + throw new FileNotFoundException($"{name}.byte not found: {configFile}"); + } + + /// + /// 重新加载配置表数据 + /// + public static void ReLoadConfigTable() + { + lock (Lock) + { + foreach (var (_, aProto) in ConfigDic) + { + ((IDisposable) aProto).Dispose(); + } + + ConfigDic.Clear(); + } + } + } +} diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Dictionary/IntDictionaryConfig.cs b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Dictionary/IntDictionaryConfig.cs new file mode 100644 index 0000000..a9b13b3 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Dictionary/IntDictionaryConfig.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using ProtoBuf; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable CheckNamespace +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +namespace Fantasy.ConfigTable +{ + [ProtoContract] + public partial class IntDictionaryConfig + { + [ProtoMember(1)] + public Dictionary Dic; + public int this[int key] => GetValue(key); + public bool TryGetValue(int key, out int value) + { + value = default; + + if (!Dic.ContainsKey(key)) + { + return false; + } + + value = Dic[key]; + return true; + } + private int GetValue(int key) + { + return Dic.TryGetValue(key, out var value) ? value : 0; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Dictionary/StringDictionaryConfig.cs b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Dictionary/StringDictionaryConfig.cs new file mode 100644 index 0000000..708ccd7 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Dictionary/StringDictionaryConfig.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using ProtoBuf; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable CheckNamespace +// ReSharper disable CollectionNeverUpdated.Global +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8603 // Possible null reference return. +namespace Fantasy.ConfigTable +{ + [ProtoContract] + public sealed partial class StringDictionaryConfig + { + [ProtoMember(1)] + public Dictionary Dic; + public string this[int key] => GetValue(key); + public bool TryGetValue(int key, out string value) + { + value = default; + + if (!Dic.ContainsKey(key)) + { + return false; + } + + value = Dic[key]; + return true; + } + private string GetValue(int key) + { + return Dic.TryGetValue(key, out var value) ? value : null; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Fantasy.ConfigTable.csproj b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Fantasy.ConfigTable.csproj new file mode 100644 index 0000000..5353c0c --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Fantasy.ConfigTable.csproj @@ -0,0 +1,34 @@ + + + + Fantasy-Net.ConfigTable + 2024.2.0 + Fantasy-Net.ConfigTable + qq362946 + qq362946 + ../../../nupkg + false + + Fantasy is a high-performance network development framework based on .NET, supporting mainstream protocols. It is designed for development teams or individuals needing a quick start, scalability, and a distributed, cross-platform solution at the commercial level. Fantasy aims to provide easy-to-use tools while ensuring high system performance and scalability. + Copyright 2026 qq362946 + https://www.code-fantasy.com/ + https://github.com/qq362946/Fantasy + git + Net, c#, Server, Game, GameServer, Fantasy , Network + icon.png + enable + enable + Fantasy-Net.ConfigTable + net8.0;net9.0 + default + + + + + + + + + + + diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Interface/IConfigTable.cs b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Interface/IConfigTable.cs new file mode 100644 index 0000000..0992677 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/Interface/IConfigTable.cs @@ -0,0 +1,7 @@ +namespace Fantasy.ConfigTable +{ + /// + /// 表示是一个配置文件 + /// + public interface IConfigTable { } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/icon.png b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Net/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8ae7488eeee063ed5cc9c3143afda597f06b8770 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIICC0X`wFmgeTZxsPpKlI^|9-Q#zArJZw)T;ZL0-7%oY%Es$i>aIUPm1UkT zjv*T7lM@!G&zRPEYQCaUM(3GyK9NEmQwO00VI6(p5(hC39vw{=u>?*{9v&YDF#%y- z9alk(a#0aSu?HMHf+CLFS{;wtUf{f%y6oJPUsHQ`9-dLjv}tROWM(u0D6 m!iZ literal 0 HcmV?d00001 diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/README.md b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/README.md new file mode 100644 index 0000000..aa00019 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/README.md @@ -0,0 +1,74 @@ +# Fantasy.ConfigTable + +Fantasy配置表扩展包,配合Tools里面的配置导出工具使用,注意该包依赖Fantasy包。 + +- Unity : 需要先安装Fantasy.Unity +- Net : 需要先安装Fantasy.Net +## Unity + +在Unity中使用Package Manager,点击左上角➕选择add package from disk,选择package.json安装。 + +Unity端采用assetbundle方式加载配置文件,需要把配置文件放到一个包中,例如config的ab包。 + +可以在导出工具中设置导出到前端二进制文件的路径,设置到这个config包中。 + +用代码使用一个IConfigTableAssetBundle接口 + +```csharp +public sealed class AsserBundleManager : IConfigTableAssetBundle + { + public string Combine(string assetBundleDirectoryPath, string dataConfig) + { + // 该方法用于拼装ab包的路径,因为不同的ab包资源管理工具路径都不一样 + // 所以这里提供该方法自定义路径 + return Path.Combine(assetBundleDirectoryPath, $"{dataConfig}.bytes"); + } + + public byte[] LoadConfigTable(string assetBundlePath) + { + // 这里是加载包里的二进制文件的逻辑。 + // 正常的情况下需要分编辑器和打包环境下。 + // 这里只做了编辑器下拿取ab包里的某个配置文件的逻辑。 + // 正常情况下要把非编辑器环境的逻辑也要写好。 + if (File.Exists(assetBundlePath)) + { + return AssetDatabase.LoadAssetAtPath(assetBundlePath).bytes; + } + UnityEngine.Debug.LogError($"assetBundlePath:{assetBundlePath} not exist"); + return null; + } + } +``` + +上述工作完成够,可以在项目入口点执行初始化代码 + +```csharp +// 第一个参数是指定ab包的路径,但不包含配置名字,因为配置文件会在上面的AsserBundleManager里Combine方法拼接出的路径 +// 同样这里因为是编辑环境下,所以我输入的是一个路径。 +// 但如果打包后这个路径其实并不能使用,要把这个路径改成ab包发布都得正常路径。 +ConfigTableHelper.Initialize("Assets/Bundles/Config/", new AsserBundleManager()); +``` + +## Net + +```csharp +// 设置配置表的路径 +// 导出工具会把配置表的二进制数据导出到一个目录中。 +// 服务器启动的时候需要传入这个目录的路径。 +// 我这里使用了相对路径,大家可以根据自己的环境更改目录 +ConfigTableHelper.Initialize("../../../Config/Binary"); +``` + +## 使用 + +初始化完成后,就可以在项目中使用配置文件了 + +```csharp +// 例如我配置了一个表名为UnitConfig,那在导出在代码中使用只需要再这个表名后面加上Data +// 然后在使用下面的Instance就可以访问表里的数据了 + +// 获得表里的所有数据 +var instanceList = UnitConfigData.Instance.List; +// 根据表的主键Id来获得数据,这里的1就是表对应的Id +var unitConfig = UnitConfigData.Instance.Get(1); +``` \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Fantasy.ConfigTable.asmdef b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Fantasy.ConfigTable.asmdef new file mode 100644 index 0000000..7869fee --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Fantasy.ConfigTable.asmdef @@ -0,0 +1,16 @@ +{ + "name": "Fantasy.ConfigTable", + "rootNamespace": "", + "references": [ + "GUID:0b7224b83ba514121aa026f3857f820a" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Fantasy.ConfigTable.asmdef.meta b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Fantasy.ConfigTable.asmdef.meta new file mode 100644 index 0000000..5caa0e4 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Fantasy.ConfigTable.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c4d36c5a80dc44c6e822eba8db9ed704 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime.meta b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime.meta new file mode 100644 index 0000000..489b45f --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cfbf88374cb6b49f2947ab95a9bc08ba +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/ConfigTableHelper.cs b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/ConfigTableHelper.cs new file mode 100644 index 0000000..bbeace3 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/ConfigTableHelper.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using Fantasy.Serialize; +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +// ReSharper disable SuspiciousTypeConversion.Global + +namespace Fantasy.ConfigTable +{ + /// + /// 配置表帮助类 + /// + public static class ConfigTableHelper + { + private static string _assetBundleDirectoryPath; + private static IConfigTableAssetBundle _configTableAssetBundle; + private static readonly object Lock = new object(); + // 配置表数据缓存字典 + private static readonly Dictionary ConfigDic = new (); + + /// + /// 初始化ConfigTableHelper + /// + /// + /// + public static void Initialize(string assetBundleDirectoryPath, IConfigTableAssetBundle configTableAssetBundle) + { + _assetBundleDirectoryPath = assetBundleDirectoryPath; + _configTableAssetBundle = configTableAssetBundle; + } + /// + /// 加载配置表数据 + /// + /// 配置表类型 + /// 配置表数据 + public static T Load() where T : ASerialize + { + lock (Lock) + { + try + { + var dataConfig = typeof(T).Name; + + if (ConfigDic.TryGetValue(dataConfig, out var aProto)) + { + return (T)aProto; + } + + var dataConfigPath = _configTableAssetBundle.Combine(_assetBundleDirectoryPath, dataConfig); + var bytes = _configTableAssetBundle.LoadConfigTable(dataConfigPath); + var data = SerializerManager.GetSerializer(FantasySerializerType.ProtoBuf).Deserialize(bytes); + ConfigDic[dataConfig] = data; + return data; + } + catch (Exception ex) + { + throw new Exception($"ConfigTableManage:{typeof(T).Name} 数据表加载之后反序列化时出错:{ex}"); + } + } + } + + /// + /// 重新加载配置表数据 + /// + public static void ReLoadConfigTable() + { + lock (Lock) + { + foreach (var (_, aProto) in ConfigDic) + { + ((IDisposable) aProto).Dispose(); + } + + ConfigDic.Clear(); + } + } + } +} diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/ConfigTableHelper.cs.meta b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/ConfigTableHelper.cs.meta new file mode 100644 index 0000000..132e91c --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/ConfigTableHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e3ca7a021b1c445a9f58c1e4645fe17 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary.meta b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary.meta new file mode 100644 index 0000000..abc7cb3 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6e10a07ad20ee4d7298ee808a3ea8b73 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/IntDictionaryConfig.cs b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/IntDictionaryConfig.cs new file mode 100644 index 0000000..a9b13b3 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/IntDictionaryConfig.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using ProtoBuf; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable CheckNamespace +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + +namespace Fantasy.ConfigTable +{ + [ProtoContract] + public partial class IntDictionaryConfig + { + [ProtoMember(1)] + public Dictionary Dic; + public int this[int key] => GetValue(key); + public bool TryGetValue(int key, out int value) + { + value = default; + + if (!Dic.ContainsKey(key)) + { + return false; + } + + value = Dic[key]; + return true; + } + private int GetValue(int key) + { + return Dic.TryGetValue(key, out var value) ? value : 0; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/IntDictionaryConfig.cs.meta b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/IntDictionaryConfig.cs.meta new file mode 100644 index 0000000..692433f --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/IntDictionaryConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 294753d61a7ac401f9f1b75e43d7536e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/StringDictionaryConfig.cs b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/StringDictionaryConfig.cs new file mode 100644 index 0000000..708ccd7 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/StringDictionaryConfig.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using ProtoBuf; +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable CheckNamespace +// ReSharper disable CollectionNeverUpdated.Global +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. +#pragma warning disable CS8603 // Possible null reference return. +namespace Fantasy.ConfigTable +{ + [ProtoContract] + public sealed partial class StringDictionaryConfig + { + [ProtoMember(1)] + public Dictionary Dic; + public string this[int key] => GetValue(key); + public bool TryGetValue(int key, out string value) + { + value = default; + + if (!Dic.ContainsKey(key)) + { + return false; + } + + value = Dic[key]; + return true; + } + private string GetValue(int key) + { + return Dic.TryGetValue(key, out var value) ? value : null; + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/StringDictionaryConfig.cs.meta b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/StringDictionaryConfig.cs.meta new file mode 100644 index 0000000..7c61f54 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Dictionary/StringDictionaryConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 295679520921148c685abac87ba609fd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface.meta b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface.meta new file mode 100644 index 0000000..92fa071 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e229cd1e867af419193a32fefaf271df +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTable.cs b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTable.cs new file mode 100644 index 0000000..0992677 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTable.cs @@ -0,0 +1,7 @@ +namespace Fantasy.ConfigTable +{ + /// + /// 表示是一个配置文件 + /// + public interface IConfigTable { } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTable.cs.meta b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTable.cs.meta new file mode 100644 index 0000000..4138cee --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTable.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ba91b698a7df846c185a3d9e384f71b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTableAssetBundle.cs b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTableAssetBundle.cs new file mode 100644 index 0000000..0e17a06 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTableAssetBundle.cs @@ -0,0 +1,16 @@ +namespace Fantasy.ConfigTable +{ + public interface IConfigTableAssetBundle + { + /// + /// 不同的资源管理器有各自独特的包加载方式。 + /// 为了满足不同的需求,我们提供了这个接口,允许用户自定义拼装包路径。 + /// 通过这个接口,用户可以根据自己的特定格式和要求,灵活地加载包,从而提高资源管理的灵活性和效率。 + /// + /// + /// + /// + public string Combine(string assetBundleDirectoryPath, string dataConfig); + public byte[] LoadConfigTable(string assetBundlePath); + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTableAssetBundle.cs.meta b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTableAssetBundle.cs.meta new file mode 100644 index 0000000..65579ac --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/Runtime/Interface/IConfigTableAssetBundle.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a819f57dfada43d9955a9b402772cf6d +timeCreated: 1728549292 \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/package.json b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/package.json new file mode 100644 index 0000000..a07c9b7 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/package.json @@ -0,0 +1,23 @@ +{ + "name": "com.fantasy.configtable", + "version": "2024.2.24", + "displayName": "Fantasy.ConfigTable", + "description": "Fantasy is a cross platform distributed server framework.", + "category": "Network Framework", + "documentationUrl": "https://www.code-fantasy.com/", + "changelogUrl": "https://www.code-fantasy.com/", + "licensesUrl": "https://www.code-fantasy.com/", + "keywords": [ + "Fantasy", + "Framework", + "hotfix", + "Server", + "Network" + ], + "author": { + "name": "Fantasy", + "email": "362946@qq.com", + "url": "https://www.code-fantasy.com/" + }, + "dependencies": {} +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/package.json.meta b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/package.json.meta new file mode 100644 index 0000000..fb85612 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.ConfigTable/Unity/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: db12b302eec284d61984b0798590173a +PackageManifestImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Fantasy/Fantasy.Packages/Fantasy.MemoryPack/Net/MemoryPack/MemoryPackHelper.cs b/Fantasy/Fantasy.Packages/Fantasy.MemoryPack/Net/MemoryPack/MemoryPackHelper.cs new file mode 100644 index 0000000..e60da3e --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.MemoryPack/Net/MemoryPack/MemoryPackHelper.cs @@ -0,0 +1,212 @@ +using System; +using System.Buffers; +using MemoryPack; + +namespace Fantasy.Serialize +{ + /// + /// MemoryPack帮助类 + /// + public sealed class MemoryPackHelper : ISerialize + { + /// + /// 序列化器的名字 + /// + public string SerializeName { get; } = "MemoryPack"; + + /// + /// 反序列化 + /// + /// + /// + /// + public T Deserialize(byte[] bytes) + { + var @object = MemoryPackSerializer.Deserialize(bytes); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + + return @object; + } + + /// + /// 反序列化 + /// + /// + /// + /// + public T Deserialize(MemoryStreamBuffer buffer) + { + var @object = MemoryPackSerializer.Deserialize(buffer.GetSpan()); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + + return @object; + } + + /// + /// 反序列化 + /// + /// + /// + /// + public object Deserialize(Type type, byte[] bytes) + { + var @object = MemoryPackSerializer.Deserialize(type,bytes); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + + return @object; + } + + /// + /// 反序列化 + /// + /// + /// + /// + public object Deserialize(Type type, MemoryStreamBuffer buffer) + { + var @object = MemoryPackSerializer.Deserialize(type, buffer.GetSpan()); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + + return @object; + } + + /// + /// 反序列化 + /// + /// + /// + /// + /// + /// + public T Deserialize(byte[] bytes, int index, int count) + { + var @object = MemoryPackSerializer.Deserialize(new ReadOnlySpan(bytes, index, count)); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + + return @object; + } + + /// + /// 反序列化 + /// + /// + /// + /// + /// + /// + public object Deserialize(Type type, byte[] bytes, int index, int count) + { + var @object = MemoryPackSerializer.Deserialize(type, new ReadOnlySpan(bytes, index, count)); + if (@object is ASerialize aSerialize) + { + aSerialize.AfterDeserialization(); + } + + return @object; + } + + /// + /// 序列化 + /// + /// + /// + /// + public void Serialize(T @object, IBufferWriter buffer) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + MemoryPackSerializer.Serialize>(buffer, @object); + } + + /// + /// 序列化 + /// + /// + /// + public void Serialize(object @object, IBufferWriter buffer) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + MemoryPackSerializer.Serialize(@object.GetType(), buffer, @object); + } + + /// + /// 序列化 + /// + /// + /// + /// + public void Serialize(Type type, object @object, IBufferWriter buffer) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + MemoryPackSerializer.Serialize(type, buffer, @object); + } + + /// + /// 序列化 + /// + /// + /// + public byte[] Serialize(object @object) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + return MemoryPackSerializer.Serialize(@object.GetType(), @object); + } + + /// + /// 序列化 + /// + /// + /// + /// + public byte[] Serialize(T @object) + { + if (@object is ASerialize aSerialize) + { + aSerialize.BeginInit(); + } + + return MemoryPackSerializer.Serialize(@object); + } + + /// + /// 克隆 + /// + /// + /// + /// + public T Clone(T t) + { + return Deserialize(Serialize(t)); + } + } +} \ No newline at end of file diff --git a/Fantasy/Fantasy.Packages/Fantasy.MemoryPack/README.md b/Fantasy/Fantasy.Packages/Fantasy.MemoryPack/README.md new file mode 100644 index 0000000..fe5b775 --- /dev/null +++ b/Fantasy/Fantasy.Packages/Fantasy.MemoryPack/README.md @@ -0,0 +1,25 @@ +# Fantasy.MemoryPack 扩展包 +## Unity +Unity使用,只需要再Unity文件夹里,导入Fantays.MemoryPack.unitypackage到Unity里即可。 +## Net + * 在你的项目里用Nuget或dotnet add package MemoryPack安装MemoryPack的库。 + * 再Net文件夹里把MemoryPack文件夹拷贝的项目中。 +## Tools +编辑改导表工具ExporterSettings.json文件,在文件Serializes里增加MemoryPack协议的说明. +```json +"Serializes": { + "Value": [ + { + "KeyIndex": 0, + "NameSpace" : "MemoryPack", + "SerializeName": "MemoryPack", + "Attribute": "\t[MemoryPackable]", + "Ignore": "\t\t[MemoryPackIgnore]", + "Member": "MemoryPackOrder" + } + ], + "Comment": "自定义序列化器" + } +``` +## 使用注意 +无论是Unity或Net下,导入所在的项目,必须要把当前程序集装载到框架中才可以。 diff --git a/Fantasy/Fantasy.Packages/Fantasy.MemoryPack/Unity/Fantays.MemoryPack.unitypackage b/Fantasy/Fantasy.Packages/Fantasy.MemoryPack/Unity/Fantays.MemoryPack.unitypackage new file mode 100644 index 0000000000000000000000000000000000000000..eea504bc0e002803524e06e352a5b4e6b85b7617 GIT binary patch literal 6266033 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

8XrkntNF; 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 z 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

1hbwKFNl}KE8;crhImW7Bi<7qh>rw7fCNOq z1VW$$M%4BflLST31VgX{NAQF|h=fGQ#3$l2@rC$Gd?UUSmBbI?Cs9RI6IMb&+K{%S z9a)F0OV%UnlMTp*WFxXM*@SFLHY1ypEy$K+E3!4&hO{T!lI_U$WCyY%*@^5-b|D?e zuB0RBL^_k*$nK;I*@JW?dy>7#-ee!LFWHamPYxj6NOy7|S=)x-K@K7ZlS9a%AXk#B$kpT;axJ-zTu*KwH@yTkz^DZO~#P1q?*)_ab!H1Kx)ZEGKowkQ^-_ON9xHm(mnW8`u21bLD?MV=BBtU{B zM8YIOq9jJ*WNni*MbacgvLr|Hq(F+KM9SnR@-z8`{7QZ!zmt{Z5Ar8jMOKqmQbE~J zwv-)JhpJ1}qv}%)sD@M{sxj4sYDzVuY6#{ur&>@gsa8~LstsjNwWZoo?Wqn_N2(Lm znd(A0P+ciU%87EOx>4OJ7pe#4O7*0AQN5`?R9~te)t?$bxl!)aK+1y}L=C2fP(!I< z)NpD9HIf=dji$y>W2te}cxnPQk(xwJrlwF+scF=7Y6dlvnnlf~JSi{AoARN2DL-ls zHJ6%4&8HSn{?tM$fC{97s6|vT6+$hhmQYKnWz=#ilv+Wpq*hU@sWsGEsWu^+LBC43OP$g6;RYsLlo2d$F3$>NnMs25dP&=tz)NX1I zwYQd_X&<$pIzSzy4pE1xBh*pq7K=8UdO$s-9#M~}C)88w8TFicLA|72QLm{t)LZHu^`81beWU;i zq#z2W5DKL*3a1FFw$q%Z7>cDhil+ohq$EnFK2e{kFVt7+8}*&4q<&C8sVb_PvQi4# zhPI{c=sI*=x*lDhZa_DrYnufc(T(XQbW^$+-JEVgx1?Lqt?4$jJ>8aWN4KXt&>iVc zbZ5E??Lc>>9cd@pneIk+r(NhCv@6|{?nU>e`_O&qesq6&0PRM*(*tP_dJsLB9zqYL zhtb375%frU6g`?ALyx7$(c|d}^hA0RJ(-?DPo<~Tte_%yIz5A)NzbBZ)1I^!?M?g8 zzO)}bhn`E%qvz8LXn%Sk9Y6=tLG&Uzm=2*A(@W^3^fG!m9ZIjDSJJEK)$|&AExnFj zPj8?%(wpcoI-HK6m9&bEq@(C)I);v=)wG6=qvPoWT1zL=Npv!uLZ{L?T2H6Z20ES2 zpfhPBokeHUIkbt+rSs@~x_~y*g>(^JOk3y@x|A-X%jwN@1-*sdN^hgL(>rPj=Ix|+ z(YxtA^j>-&y`MfnAEXb_hv_5qQTiBtoIXLHq)*YO=`-|M`W$_pzCd53FVUCjEA&o=h*MH`9md%k*RVGXoem#+@0+crb&Q!ORe5 zC^L*1&WvD2GNYK$%ot`YGmaV0OkgH5wTAym%w%Q?GnJXfOlM{=GnrY;Y{rxEV!Rn2 z#+UJ9<}h=adCYuf0prgsWCEB#CWu+Y1T!JbVrB`mlv&0sXF{13%t~ezvzl4MtYy|Q z>zNJAMrIQe#)LBwjFM3?kxUd5&BQRVjGECfaZEguz-XDoniW*!Co#!P3X{s{7(J85 z7?^Y>gUMu!Ocs;PtJYXI&kC?~I6Xq%NjCszyU|uq>nAgl3<}LG%dCz=c zJ~BWp!2*zh7??pAl))IBAsCXO7@A=imf;wl5g3t?7@7IRd}h8dUzu;rcczm0!Te;Z zm}=bq?JB^*r&R}P&MPv=d$zI`RoGLpIyiXuz_q4yNC^DL)gXa5_T!Oj9t!#vMbn?>?(FOyM|rM zu4C7;8`zEPCN_)>XCqi8t70SBC^njnVPjb}t6^(R`*CbMo4{(>L^g>{W>eTyR>$hu zG}geTvl(nAYh<(7Y&M5AvAJv>o6i=oX10(mVvAV|Tf&yIWo$XSnXO>Auv^(}>~?ks zyOZ6;?q>I}d)a;Le)a%+kUhj6W{`V3)`T&hC23$j~5!aY&!ZqcZam~3FTuZJM*P3g?*>i2Vc3gX| z1J{wOwdHr>I&)n(2d*pU$T@M&TsN*e=fd^iT)CcHFRnM&hwIDrFTFXzY2;pTGlxcS@y&c9{_6@?4A04|UV;udkiTnM+ATf!~nmT}9uP;Ldcl3T^C z=GJg)xpmxnZUeWG+r))&;ami#~AH|R6$M9qMar}6G0zZ+T#82j@@KgC|{B(W>Ka-!u&*nXO zFW#H?;eB~Oehy!2!k^2}^Go=p{4#zyAIh)bSMsa) z)%+TMEx(Rm&u`#2@|*ZDKAex>mAs0NjzvkcY zZ~1rpd;SCekq3B?hj^Grc$CL@oF{mar+AuYc$VjQo)>trmY_xAW&RWYng7Cn<-hUY z`AYr=|C6uct9dK05Nrfn!A__n)D`Lp^@RpPL!pt-SZE?N6`Bdng%(0fp_R~DXd~DQ zZH0D1d!d8SQRpOe7P<%yLRZ02a1xw_ZbEm#Md%^83O$8hLT{mu&{yau^cMyQZbA(~ zi@PvT@DK(GgM}f&P+^!bTo@sY6h;Z7g)zcdVVp2tm>^6PCJB>;DZ*4?nlN3MALYNRPLEe7(q{?TLXKb(a)mr0UnmgFLZMJ36blxiL?{)?gmPiCP$6s) zwhG&X?ZOUWr?5-dE$k8Y3j2ip!U5r+a7Z{T91)HR$Asg;3E`x0N;oZ?5zY$dg!94$ z;i7O!xGY=|t_s(L>%tA;rf^HRE!+|A3ipKjwFFBZ2oHrv!eily@KksvJQrRFFNIga zYvGOXR(L187d{9d1wa4=NPq=IKm|;|1wtSNN}vTsU1N(AHq+eN~jjBfw1*i>vLHWyonEyY%1Yq5=J zFSZriiS5M>Vn?x)*jel%I*46GN6|@i7Q2bvMHjJ$=qmOUdx^cpK4Ps^zOUF%>@N-w z-9&eBpy(kE5(kSz#G&Faakw}_94U?xM~h>`vEn#!yf{IeC{7Y5i&Mm@;xuu(I76H% z&Jt&fo}!oNE&7PQqMtZNoGZ=~=ZgzOe{rE0AO?y-;vz9v3=tQLOT?w(GI6;WDy|S$ zimSxcH7lqnT_dg)*NN-J4dO;|lNct3ixHwyREd#dlo&0>h_Rwt)QE9nyqF+r#Y8bl zOcqnbR8c4D#Wc|%ri&S3rf3wi#B4D~G>N%lo|rEdh-R@+EE0=Fi&!F-ie+NCxLK?a zw}@NCZQ^!uhqzPRCGHmYhPhvX{tlzK_Mr9M($sh`we z8X&nz?$SWXLmDIvmWD_}rD4)=X@oRV8YPXE#zV0(sXHt zG*g--&6YeRFUec-k$fdTX^u2knkUVd7D)cmLMcEBl!By1Qm_;vEtZx@OQmJfa;ett z9xAPnR!Xa+)zTVit+Y;BFKv)EN}HrGDO`$>l#)t{l%k|)DMpHw)RIPulj5ZWNh>8v zNm86~<4x*%PYE=iZAE7Dcznsi;dA>EX2Nw=jt(p~AEbYFTPJ(M0vkEJKlQ|X!XTzVnB zlwL`%r8m-B>7Ddm`XGIj011>J36>BEl`sjH2#J&^iIy0Nl{kr)1WA-6NtQlIpQSI- zSLvJdU8(_;eYt_$P;MkQmYc{;l%M0ZIIZzIg7spB}dCKa;&VDHFBIBFDJ-a zIZ;lMljRgSRo2ORIZZam>2ijgDI4W1Ia|(=O>(ZBC+EurvRN*ai{xV2BA3Xea+zFS zORz%W*2HS#X6x3>>gw3Z+R@t8YGZY)uClr~dRO~Y`&OS+%&DGRJ+FFxb)dDiqkDB5 zM~~_VmqFED)eWo-t%IwFR0mjttV64ZRkv}ocN<+;a$sLK(T2QKw`)a`N8<%Uaz%VwAJF6Ugf4y@~RPyt)VTJPIV zubxpoyV|pQX7#M<;Oda-#np|iO|35#UloTH9i2N{9jslfq0TFuL!2F)eVrFOFR5Ny zy{vk9b!hb>YcJ>C&fA?Gox3_;bbjLT*rShgf9Ju@gPh0pn9w8NxyZTpzInEj$*I7} z>{R4b=;Y$u&AEB){njm`toF_;tLs=%Yb!Uv3R>%09j$gw4V_k1udZHG{rnGi$RBuA z{NWz?A%(wBfX^bIAfLrPOMURUWW)ot)+Ny;$tBq(#U<56=c0GXaxuDOx@5SdyBJ*3 zTt@x6lhoa%vrC?f!o}7l-=)c~n@a6n*16OW+_K(fqss=DIts`Ic0pYbmrX8VF5xaM ztSzmrtgWqWtoGKn)^^tR)(+Ocbnn*5&DpJ+TX#1Xw;pb;Zav+4xm8&w`Bhn+tj^YM z*6vmpYY(fdwWqb0wYRm8wXe0GwZCcWrCl z!#0Jdzo(6-o##Z)AkS3K49_#3V||wUtnmSS6uvgT7GHb6@qU4RxBMDzLmZc{ciigeqHC&3+(+}{lope1AGGf0=@+_4|EP3 z7Pu+!eGnQX21!A3P<2q)qUuGBgIfpBUQ+WOwzc$Z;n~!)pQoGWaL<{Z!vpo6IiC5R zCeJ+2EuNP>FL_?|yy1D%^SV5-QC^Y-CYS1 zBxnc{S`yr)SW79T5Gs`Vy1To(ySwk+b<%aY?fwFocjn7UhC?2jiiXkhXUnr!UkW>IV&kKweXR5B@m5nokPs!oR{6 zqL!kgqB_VZWIjSc2FucA`LboQ-LmHux4m`HK4=#uqO>Z{Dz7Q;DjQ=XFr}uSZj^4k zZnh56@pS8SnfkVrih|2qQCd=3P})$&Qx;MH3Wf5Va*J|}a-DL6a+C6u@{Dqu@_;gv zHiMQy3)0rnzSDltzR~K@7tzb;H5s)Str;B|4=M8)a~Wa=%uq8_jJ=ExjAx7l<1OPo z<2BQQP2j&0 zycE0;R1;Pg>V*zrRZ$yJYteC0J%oXP2pypz%VjTQgU|tJKeRtO5S1v;E1P0Xurb(F zYzj6B+o(&`XXx)4UKrXKI~)5L`x=KBhZ=_&hZ{4EPSXa{LDPHFUGo!j!aUA;z-q9a zwRNI&rqC%2N)n}jvW&8VvYhglQWt0o)B{=q4S^;=Q=l>Mnev75lk$<0p!}v(1?mHH zX|rjwXmeF0-J%4SPxkDS;N^w*nQXo*#p>v*?rkv)KpG-V{s~PSWR&c+ z?3L`T?49hhJRz@(PDDqbL(!3FSEW>GSGK|g7#o8y5e8#ajERXc9<~spU>c1`C(xys zzT5PUZ;nx}pliRYs=K7No< z5Re318C_$;D61$70RWf{umK@30^k8mU0!M<@MZ2Y_!_A6d^> z|FPz=Y3wQNh3txgD`&GQ>`81Y8(@!Tf8b1lN}z0L6;ui>g$ke;lm#t=a-blz91`&O z|D3iEFOwJH4d74VPvuYMPvR5*RJ9QQKS2XwM3^oN3cm_#h&qd;B1B{sSw*)*=R`L} z=S81H|B1ed-iVqZO_5Y2ABiDu#DruZI1)r0ND5*_^hh?MM&gJH$wP9GDB?%P%Ersa z$UezPxd^4807^w^C?92^LUb-V3xz8c*HsLZjmnf4mD4aGR)Bf10G5HJVMSOnX2S?f zgM}~!7Q?bJC+5R+SPEvq{Fn*L!g8@V=EY1JhsLR~Xb_!P2kVaMj_6|g0mlBu(Z(@G zujzy7srj(=koBO|Wc%r0x?=7ecZoahE^-&Tx46~bY;Q%uRhix_Z)V1oj4Hv=p;;kj zs3auK(qwJTS{ptSE{bf59EqHW9FH7}JQhTWCBzzH1+kQv8$A&{7abNG6dM}r7aI`k zMPX6&luSwyrIfOkvW}t#N`Ndt54ZpfC;~D8Ki~s2fDs4)Nq`-Q0VzNPhypeMq|s?i zS`y7nGtn%x{j}e-@$@nD(e!cjA@o7?QS_lp+HO5Vb z9yC@Oi>qUx10x&j@CL_8@^!pr9s z^5VQ=UIDL&*N#7jKa*ckaP=(yPX1#4F8*r%TK;DKR(=~{J7FtfOJRFqQ=vszD9jfY z3-g3A;TK^qQEyRSkz3>uxkL`pebFP)Z&A7Euc$HH0v-&Hgj>P=;FfS#xHsGv?hm(z zTOlox$;c#R3gSXeBj=D~$U)=?vKzUA+(p(RSCMPTS>zP53fYhBLoOk=k(0=IWIJ*P z*^JymZXh?26UaK`0y0UqQnpX_L)JpxT;4!lOI}UhNM1$WSl&`zuTm>pQ(N8;t&iep zCYpz8(PC7On$dK$1kFd)s0MYR8E6VhphmP1&G{#j>Co;!Pa8ev8&iF>=?EiJB)4kCtQ8P4q|(;$Jkx$47LvYfZfAxV2`kh zf@|_LVNJFss4374&<)g$(aq7Jx+L8p-38rk-A&yk-D>?ReVKl(ez|_4vBX$lEHtK? zj+j21NYiukZ}TMU6zf#$Y3nJg&1SXzu>Em>u8=F!Rnxu4z1+RTz1h9kz1F?jz0JMG zz0v*L^T*TByVYCbE%2`Q?)R2?cY8N`*LjzFH+pw@mwGpO4|sQaDSoZLBV7?V8@>>^ z7P%bRPV6E!6FZ2L(aTYDo;$BYY)Wi$Y&{dGv+! z1@!s!+4Ph2)AXbC!}Nv>Hp9*+WZY$}0}p|#zzg7Ma2L1&+zOrqkAVBZHQ?cjQ?Ph# zr8&A0Tnlan_kydzmEb|}FU!l$WG`YbWiMf0U~gdOu$d4I0w4-Rh3-MOpuf;l=oM6* z`y6@$-GN>}Rk=T*B;Hcq3f?l_65euNRX&9e@E7vu^KbL7@V^Q=3VRAW3!TD6!WF_F z!aAaXBAF;4N)rV|nWA)2NR%OJ26u$Jz&+tca36Rftbr9U0?&e{|Fad7VJSQnxrelp z)Rp`~-XT>b?~&g~ZOJF(Yo%AX?gR1``Gb&1Q%N<+WZ6vFTG@Wt6IoCBKzSE=Z~0(( zXL%p_PkPWr|Fo~2`ZM~y`YrnN z`a}Ay`gX>FM!>khNHNYgt~D+*E;lYQE;U+Aep9+BU^-8>v$nH_ zvzBv=E9^Sxs!?eouW#aR=x*vB<-Xy5?!Mzb>OST^=YH(I>%QQA;C|-5?HZ};2$3o8wk zjB6Qng4Kf6gQcNGAw!lvYg^X&@VW5E$cul@#q&r-!S(MV|3#ifUPaCj7l^~eQDS~{ zUi5s_n@5e!k1dETj3N0+`DgRrIa|~wI}r( z(3jeZT8lb?+L_vp+Kk$i`U9v!Z9(lr{RDKS)~B|mwxK3~_rO4EKk6T#KeaB^L0d*! zPFq4dPdi6DK|4!h(fM?c&Z7(H{TMDr8KZ>pknsv^!mP?1&HM#E2S0C*>yRMAvVN;xKLAW8*T?~XKs6L zbM9NH3%5JBFSjSR0kZ=h@wW1I@V4xCkh-LXk|843;n@(_qWa=Lthe5QP={F}T5+7fMD@d!IcF-I{=!BC7 z0o;h;8Mq4P;s!hk58*-Fil^Z+JQqKsxutogxve>+xu_Ydv+927zUzMLzUjW|{Q7tL zx`y}qNBTGV2Nfe-VB{OQM#y-;c-(l>xW%~DxZk+XxZ8NdxXYMn+GILoI&ZpQ>TB+7 z?qcp^er+CN>1`Qf>1Y{Y8EvU3xUr{YprwnYvt^itX{B0WtH{c-3atVw+sd^*vp%)H zv_7=Hu)en5vZmSsw%fK^_NMj>M^|TSXMJZqXBTHTXA5T&XG>>0X9s6PXIp1`=Qx+h zmFqh0I_#?DZsTt0ZtHICp6H(J{^YLa`RK0cdFLkGwLIV433naOZ+AVk%7KW~3;AMXI~UT=RN-3R*S`NsIDzPY|iZ3^%W^Nsb5^0oF&@eTF$@lE$t6x;;* zgZ?%C9RD)^YJbST)L-n^1k3?Xz#DJ|tbsPcCc#F*2EmrWdcoGg=D}9M#=)k+IU!rf z8d@A$5;AA43ttIe3ttRxj#MRT5nm%!h#wI$Ql0o6sY!f` zAH5m97rh@&L0dr&L2p58!4tt4 z;V9v7;b`Gb;V$70;dbEx;YiVF5nF_bl0-^TzNkP{DvFC1ix!EBMJ{+LoB=O_SHWlD zZSV_tf8{COd>q~jZ-?)}``}yfb@&AQ5Z(pffltEikoL$NWRYa0L??+!mPnRM%o0=* zm#mR!C95SF5}%|jVv`7DEE!D($=EUx6OeIa zOc^LEmKDj?$u7#y%Ff9y$OLk(Tq;+{<#M6?yZk1-J?c?xR4h^CD7GtH3X@{9Vx=Nq zu}R@m98;`U_!VjYT-a5LGR0zrS20YvM_EyD%YVwZ%Klgw--jpg+xQmzF@6qzhX2HW z;5Ahz@w50w{4%})e}I3-ci~_0a{M@c1#hR?j^Dxm!*Ahl@K5-A{1tuzKZdWt-{J@H z7x;HgU2Q$>Z_NkIM4eOT(RI+b*SFF)*SFQD>uVb78LAs<8UE-S8Xg(G7%B>G`D*B3 z>}Hf1hIo3JBImJ1|IovtJIoLVPIm|iK zInh<>Ds-K5U2t7-b@->_4feG1bocc4^z{t!^zc;kj`WW9j`EK6hJB^JxX<#>gWK<0 z>&x~9eL21i-y)ycXZJZOPw`g2Z>5jvPZpi@AM)?;AM+-9Zhb|(BYqR?=!Ix`^hNY( z^kwv2^mQ~NFF9t6>0_3dCT574V&)hYI~02pdmVdZduXc`uO8 zNe>m}iua0_itmamiqDFtinEIIiiSzek{TtQR@_mjl71>CDaR=%D&xwSa-Z^pau7Bc z8-NW~jZuNBuBu@wR5ef4Mb%T)UDaO2Q*l&1R4kQBHBi+{rB;nlEmVzD4Ny&2byQ7K zovn0uw`Zu@swgUnYKBUuN>YhbZME&Ry|hELUA3dMDs2bt0$r-ktsAB9sUM;5s~>0R zXBckiX6R`cX&7Y~VHj*^Z|G&{W9Vt@WmFoIjZchsjZclYjkk;sjE{_VljEPvy3KUY z1eo8M1s2SrwluWWvDLTLv{kXiZ50K#=i6eo=eDP|xptO)mYr&++d=z6`+PfKr`gLK z%N;@|)v0hYo&B9Er_L#M%AJT)G+AF7Pls z22V3@2k&cN_0(^^hN+Ky$N!m&AAFyDq>r6iFZH9ZLFzf*Z{KI%8Q+-HMyWMY@A+z{ zUh_Tl@%#_{xBc(@*Zg<=&-|DC5B%)F;lPo==729FmN7mE2bn=(a6)iuu%h4&Fvts1 zgR_Dog5!dtf~=r8`w;sa zJC|QGUMpTF{xbe1{vrN4{yF|GzM)`!!O_z5rI$;+l=al@)GgGl)Z^3x)OFOI)V&kAm9(|AmK2kf$u`OI3l88h?EGPA;rnBSYj zmQ9v?OWYE&WLO-Qs3phZvQ(PF9_xVA{nie)cD63I7Pii|PPQ`JBAeNM$PU|8cGSMv zvDLBNk>j*FqfU=A;^aA1t|V8oOXphcTIE{iV!1hPzdO~f^=Ld6kIbX;=sikLMZsNG zkIf_Z)b!5wdQ;7*6H|w#8dK$|%G9~3SSl}dLh8s=ajGOWDHTthl`8b}{UZN&fAjP@ z>9y0Vr2p~%^jAx-o?a`xUOE(b7`PU=9k>^`6}TUG95@rW9=H-H&Ul)k4C;dVpgfoq z)CALmj-VvCD5wpl1@RyfR0Xl1HE0h`3Mzs~C>Y8Joe7-`oeCWbZ3!I>9SI!|J6*D zjhIACC7MNBN3m#fG%0#IIy#%3Jtli%_LS^N*}Uxe+0txU_K57c*$cC0W{=IDoXyRS z=fz{WvAo#%e=6Xa*w@(4*!S3%7%Sh9Z^~~HZyIkNuNQ9?ZxH_#C*u_bcmIz6iEk~~ zT(GU+apCJ?Z)u~l=4D;VUQ*vvpHpv8-%;;SuTw8lFH=8JFHm1o5n6)gqkHK?8S5E; zm{nNqS*=;WnJrkgSan$qS&dj9V!R!$nn$@$Ic z33Y>dK*>-N^qBjC`b3MJ?1^fm$J>)gyBm7iBx_~E? z2$@2*5ENb&-VoLk%@S!uyG66b6$ST97S9)(#fVrU7KyoHj@T&fhonn6Qc$`~YLSYh zHYrVtN=Ha>sa>j*EtcJs-H1WYi+X^%vAUYNo4TUlp1-OOs#@xy z>M`nJ>h9{6>i+7%>VUeR`mL&}`m^es>Z>YOTcCAngW6PWwsz7#nSF+ys+azg(lrL$ zP{SBC_BJ&%)i>2OH8(vrJvF78oo1I=Y(8u$v#hjiwXC)*wS=t^YnFA8ZK!RHZME&4 z?SpNxJFUC#B+E6$V7b(J#pUXAOK>#^&hOX%jh)7?~$+Y|ZcBD*}^f6j4jZwqfH?|kp+ z)Pt!fQjet;q?V>`Ni9x2o4PCYQ0moGB6VNt<4`wK3^MRN@GbB=@G8(Q<3nIYFcd5eE)8Y{7YB2K%PMBs;=OBv%Y&-)55t!f*d_qD%gpfc80l_2MM%zR?MU7EQ z)EqTLE!pnuwCs3xEZd%)lUD%+7A&0d_hDsOe((!Aw)%km0h#j&E;x!9Fhm3&8j zTK<>(*6}v~jLPZ-H47RP)Gat%u(5Dc;funlMbnDN;xEOC;(ev#%jT8UpjDy$q?S{^ zQ>)SH(CX4^((YCMR<|#m9-wE?v*h}Vk4;&tLe z@iK9)c!PKlk|b42tgy`C8di(cW!iPx&DvF3maa%g(X;hQ zhD?L6;+bm7{uG1T;4*eG^)+=i^)U4^bv1P}6`J;#o|(etbaTiYHD{X7T8>-xSk71u zSgu?4SuR;7+a}ni*e2RW+s4~A+BVqM+c(>f{nOr0+7H_o+0WU}I377k=LhFc=Pl=3 z=Y8iZ=Tqk$=L6?!XQ}hH^Rx52)95n0Ho7Vb?tks-5w5AF!=4&Dt`+QnGtQRqSF zMd(@RZRlO-N$6?lUg%BeaR|>U%UYV%KinkTG2AWOINUefIovheDZD4#G15NLInp=M zE7C90A=0UGk{sw6Ng`B)g1`wgF(f)L+B-TlnjX!FW=4I{|{yfnZaa6oo92B1y?+_mlpAnxD4?&Jg4@=KV_e%Fk??{hHPfCwS&r1(VuSl;+ z4@eEN6Y|sY-ST7dlk#2iiOFM<$0b9_%4AOR*yI_>NU}J2e)8<(k;$UuImwXHtgMM0 zQEyf+uDFg*Ie1jPOnq3rQoU7uNWELVL%l-1NWD#cKzmwyNqa?mN_$A7iRU)x{UuRCry>ZMc^JlHg)PD=Zf?kSy8I;PZ3X_8`f zZE<~ceR92b^>J_YtoE$({PfiEa=egtUK*4(Cry!-lr}wWZW^AJoF+{3rI)3brY}j) zN*4$EWem&cnbAL^YsQ+46&WvrKZ5@SKLx8~-V44Az7PHhR?V!I`8D`1mu(x;?ZN&AvprPoTc%8JYS(K^$*(uUE>>0y?eMX=IX>8y%^ha#-&oU5G6oC};G zynehMJR5H`U%}re*dy34*dlXJ}Q{-0=MHobbHxjL4+Ow8+fJ8nB&dqlVi-8mm|xWpVKBMB?rslo(^WXADmudMX}{kkZf6Khj#VAJU)FuhN~ed-7iB*5q}`N0av^ z?@B(BydimGvPfxBZdBIQ)Ytq`*V6n@H`O%O{M7!^{?UHZn)OEgO2a`zOC!s~F;x^i zLO1Oa_D|m(otBZA#mdwmWS_+K2SF>7UadrTa6sWRMwsGRI~P z$n2j<4b{wo!jiB&EDejo%4`My?m*%g?uPAtQeg60Sg>fLhAWn%h;(Owg3MLm! zEErUD%`#_ml4=UrlbW>8$CaX{YI^X{l+WsikYEChdCKv$W@FU(woX3mX=_ zDtcLTqv&o?Mv1sYSCU+Um1LLZm*$jiEB!`a#oEc*!P>^!$9l$@!kf->^1kp+3%-ee zh}+0o$lA(Y$a|x2lP770XohK;=j&lH@q!+Hrgh)dhYL>$9Y5YkHzT)w1QOy{R@W_jxHQo*u1!5v9)x2 z>8sMgWuh`knYe5;Z4B)&>k#V*s|AGd&kKHu|A;%vI>_>5ujN0JYbbvtZ&5DLwAZcF z-7s7;B$=+7sg6iWC}p3kwSS<$oxgjaTcB&8b09eb%h;b`$gC)M+??smY@QViXN5Dv zqR7U`p6H<5;khGo$K{U69hTca_etKE{IU7N^8eb#XV&8lwu`K!_m0) z&kRAM%7j&(;^SMbutVfXaXZ})J-Q5a#;*)_W~;2$S|G*^+Yj`It+|NQz&rT%guSj;YF6+bU2 zD7#}#4u{eA{{nYU9F!8-?AA&Xr0v zcg%&E=G@cyNTIB-IHfpqP55}!nVXX9$Tb&RioceEAy;m@(muN6!l6Z#YP`--QSii~ z#Nxz~#L~pF#PY<7#LC2~#OlPF#M;EV#QMaB#Ky#?#OB17#MZ>N#P-CF#LmR7#O}nN z#NNcd#QwyA#KFX&#Not|#L>jD#PP(5#L2{|#OcJD#M#8T#QDU9#Kpv=#O1`5#MQ*L z#P!6D#LdL5#O=hL#NEWb#QnsB#KXj+#N))1#M8vH#Ph_9#LL91#OuVH#D9smiFb+j zi4Td7iBE~oi9~`-lqbF^C;uBkww9{JUCeZrVNc4$uA@DJK`QVf|=x!SoG1!eIvL#@*V_&+2m3n`l00Q z5malLo>cr1g&k{vo|v91tIBBioqNP!$Jql*Fe6tE!btobT>%aCyLO7~v;s0}igJof ztpXNmvT=&sl>$5yoeZ6FoI*s}cTG*%QH3<^?+VtR%IUc97g#tEH3yhCI?MRzJ{ZHB)L1U|KS^LwLmuU?5f3 zsNGVUhL_Wk05#fq%H8nO4&oKfLrkEuC{2FK^!;nf~@ECq<@Z#PLFEU_So6*0e+7$MBDWX|!puG_5oNKu2VCV(Vq07mX~gavy?} zWMh=RpT<@_()u$EHBB!qAZ2id?k{Ng* zgxPP|;`{}I>WI`#6W=E4_ikEm7;Xq}ToWJ(kqOjAeD|6EzVpVcCW(ZJz5 z(c!f*hM!gdFVh#`Ws>H7!;)Jzuj3RN9D;MEM7F&C-($v&&RHS*Yq@l}68-pz)P$iZ zaj({w!nA4r@T(v3qt++1n7|LJ1VAFLNk2(HL;sEhodlb@+xQ#2e5e8(+7vu4C*cMh zV(4bKwK#^feVYTtLEeGM;qf8a!BKF<)LabbKf5rO9xQXUYL(sF<*Zn0 zI8~&lZzA1`8v%1lbDneBx5~E&x5l@De0e75*$5Tiwg5^p6`GV1HA0*?%g+Jz%#4ZS zzVo5UExCL6U9DjIUhGS+w|xF$p!v3aqrg3IDp*>vB<*1Z!KH+4&DjO1CJON5HTqU~CHzR=i`)`;Jz{bEC zgrA5*sL8%p49i+`)V^PgIFV!+)g8GVJsJ%eaU9MWIUWuf{XKR(MmFj+8ZwqWnls!r zeEielV^kE>c_v~BDsUvHrGc0o8Kq8U7$plun28qBz;=|VuxDS=I@B%wNcBJ4**q$s!77DWX7$gG_@8gWtJaSL_utMYBY+M^)CxyT;ci#3sa;!Q;gF zZ;oKwJZBNthJ};He7>UXCaYrMt+fr)qqW_&Gt=|4Et4IQ9g}0Wo52p5wbQlqHO#f3 zHO+I%bG~!tbIWtbbKLV!=Nji&=Xh0vRkz#0>G_1Mc!Fdt?**w^a9b!_NEaoYY5DMs zVpaMV7Wx+=7Md4s7W_5@z7Q@T-)f!{xkIsXMwrbNDy zn6#K={_q#hD^f05cv{E;B0KVY_*hST`cpVDC=4@5xCe6sa3=hZIM0s23#2+xec@(8 zvAb0^y#Gfp=t!Wj+^GN}59f3KTQX+&J&mW~?i*3VfYkez!dwnN=cfDdoy6fUwNOVYcNJ>al zNO(wkNMcBGNL)x*Na)-5x5PJ-DV+tC1(OAt1*v9*X60sSeL7=iWA?vn@98XKp9`TE z`Xmuwt8u`n+#8D*#+fJ_-vCU$IqnJ~7~a!d@NZZd4JWIL2z1L)8vZkio$`_ zfg0cdN&J@2Rx*?ire>oTOHLZrUi4agzbLWz(NFJz^FiJZ#gD^}|KW>Y$b*2N+{3#E z{Re74t9n#_l9vRq@6NKK*4nuJC4mj0LI#k-dIzBo)TKGEz+f>>(I6BytJ2+T6I6GLEJC(aSxMtaznCH3WIpkS% zxQe)S*mqcTn15YnMl)5cF=^DP(Q8;HCyJik^k}A_l>2H&VW-15MEKRF1*_SyjjV;N z&8S(f&8jchsYzMyix%n!b8=YI7+qtzgg`St)#RJU=m0h})oAIaNr@owv&g<+KSwGFb>@#ei1yyb*^y(PS*yhXhYz7@S?zs0(h zxK+5NzjeK}@TRq=ocXaFC;VMFW;ta!b2-~6X*pInH~v!hYVLaO^7pkt;PyCUcRuuD2l9tk^8kEZeLqV9X;O5%(V_u`CPY$Zq)so&a3irt<<~Mz^Q{Hhb9h zrdKlwR-X%iceg8!ji4u`&Z5a;BBjq__hTSs$>PXj%%VPI$zmp@*_0PYr6c{A#YW1$ zsc4_Vh1X~uXAQCjJO4O|IQeywc@pCcHm1vGD;vrAIRS;ldB?THS;TF|UB*42i9;2+ zw4oAQnou(?buN7gjdAq^buVomt$Otv%^M92O;+s$ts8AG4GeWGT`X-Z9gzB#VwG?~ z;Lkwa7BS!5^sDl#*sGFSM%zC6W&-|AOm{ADqUV?YhTM562kI`co6+yKCCLXYK2yza zU>QdQTndPi=xt>AqMZ$DUFtStH*Kq~#NgkHOz2G5Oax6BOz6+!12$zsz@kh$!8_qM z;XZ*np)f%)fiz(?!ILMWr*RQyU^lG;eVa;d6>H^ajW{c-{0->d8edypqk{8aOJ2(X z=^OYp?zIw7z;(WYUQ1tp03x{1&7Yw>X=JVM{bZBfQ!lFl>u)BI{w;8ic2DB67jikW zcXe~Mbai#LJ#%$+1b$miu6Ad(XD(;1q~?dVqzt9)};-9wCo|{*#a0{_96gHVf0vSpY7^Ua4udmbXTapxv-0fy4uE8bwtEgbw2BKgm;K^^aUXXaR<5t@tCPm zjqxw?&(4p{_smZKU)vE6)xiAP{G{Fxe^1lY{OEk&`~d$F|HAw{|1v+Use9<+>lNn3 z#NEH!iA%0$uQ$9m=8*CH-K0mQm&4b!BnTk!x{VVYVQXwQbT-VaT2_PQI&a(4;a2j__pkU& zN!qlpvca;BI9(siKJdrL^}B3gU8ecUe`a*W^@+{t7uh0}NYo{0myJb$9zz+S!WzNK z1k1z$??dzjnulee>Z#?HzrUktkv?N*YvoM~;qbF3^{H$@_NJRz&v@AL|7@50 zM*Btk;&i1JbQTm90Rw* z>#gY3DC8>qprNeIfY$rpNi=qM&W6bU`7&^Wk=LWn`^q*ZE=+tG1Car&MdV~(^o9jq z7Tw27#oUya6wMKTg;+YXT3tLK4ReSmS(xISMnXS;XIv|>^_?{}AtO!4)!ej6ewvO_ zK|6&WDo;{-{VB_sb$^6L&d2-U zj8=atK8dF2o!?r%sA!gGzzRte>+#t#yKwR)oMn2(eZ}btrRvV#zPot3H_7dv+<3b5 zxt9a1JQQMKX8meNXwf3^ua51WU+&GOFqOrzYG-K^j2 zKE99o9ku?r6vZ4x^=S6k^@tqxh^%QgM9r(1K%AhLK%7X31A-LcwKq@tG~Iq^}6x8 z=J^M@#JU4rgD$YH-?vA&mAj>LjM-fu28{(GoAvKs?mnOe%9>TWHB25}KS*}s0Wyw6 z4p_#P(b@6=`u$Z4GsF{BaW5p6 ze(BC}r``4*{Fgw}v(^LOquNvR^O7c59>*i^)CI}`!lbB)5#-oTqme$)syo|b+|K4x+LBg2!m39rU3RO1^e^-`N!}i7{Eg?9L zp>Vx$vT(h~jkzkk=`}t$u`{kSY3b_OFZ8nx)KdC|=E%jHb5v5QB~$NIZ<|n>V3UweNL3TplG_4yu!UH&S?qBlj=%F1 zhV>bbj@zi04B zmG=_1Ft!qQ6E-n+Fg6nQV}2&C7`u|r51Ig&EyHG(W~?)hGa*+>A4DG>{&cdPJEdyIQXdj9L-?D^P3&@=wF7=T^S*z&rrC7!z`e@+v517`FC z->jjt31Ibq>p^zLC+0lkBQbV|C+1|Ym6Cj?FhkvOw-#{Tp@*tzaQV9KbKX%GU}tv* zIXQv+4ZemA*NO>E>+J^yfuN)Zo~gF<(3C$Z{B&*#qItE#yT+rbY3NKtnnJvyFWyf| zib}G?$dRFCUe+^Z&x#MJ9s=|U&_rks6b$`79RZE25tvQaO^qrskq-dhGM`#4L3zGE z@SZ9!74dukmO&XjpA&lmGrg%#gO@t$tsI)BD@!R9gtNTaPo0;_>(w0iVXkF~RyNfF ztPD=PEU5#Q2Kv-2-IBoMNl(8xtSSA_;4tpy*~_ApH7^yMN0|c64&tpteKOtSylorj z&&uasu5q)Tv+0}&{Gnj&ZQW!SG7*@&m=MHXCur2Y_Jb7in(6nU4!=$GT66Dw+$^i= zlTnRPZCfpeHF&f=|AG2iX0K^{EK6l^{*#%Vx2+tIz);;%-GpqY?zT3&Rz@3*u1>!6 zzx2M0Ql$QKnh0D&Fg08I08Zvl=TGEM$`~bso(E?4U?TDaAsfg4_kw~Rl{My9DQUEf@zMQ*CQ>FvS%zYKK@*D(~ z|D+k*pX}5j-*Qm}D?DXmWn%_oqT*Y5AdD?AsTnmMO&(nybsq5xny@-1y`ov65?IL!);3SD=dn%{)Xjm)y?e+?_M!ThvI z>2l1z{3329YfJ5M?Kys24;l~9hmfnP-AO1b08lC9LFa+-jPa!Ma_~^`e9iWs@KH$( zD@TH%*%Is!DKoX}-*85q7c#8v0gqN(XdZ_-$77 zM)eLw+M#n0tbOc9S0iqmYJ`b?#F*!srDS?uTA*qV=(v#E9O)g4bVCz%Od{%Jc~1Nai4GHcKUWyc42Kvba`#DbJ28J_Q$i%r`F=~poosx zj-NYv3Z74QDf#p?-rZ~Csx{Gzq~4_>i(p5!nrHz-p$`-mAWDz~$Qv|=)eY@|n!mZY z9ocV@oV@#b2^W#{ID{AsgeW?>!U5Z3hmePX}3U#n(g z;2N5<@2cBb{_OIA{&pw6>2Z2RF?J_Ml^}|nC`}bFir>NZsC|=c&-(b~27HixPzNn5 z@{vA|>m&spi9u$|^cuPC^TGW1E`kugSLNrId#THLz^B>;5+ezrUwa?I_3967m&h*5 zwz~TBle#EE=sIDe0)`BU3h{+(MQnwa4wv=2JVGvni84yXDn%vGh(4*;Z89#YjxC4+wbaS}-8 zQ06en5XnI1B*{dKC5FwowRExV5=yabDVDMb_*U@L#W27Y#TMQ6KTqmZ?Tc66J#t$! zTRU6+J-WU1@z-(q@wst{ajtQiaf5Nxap?Guamw+marr%STb8}CdN6P{4<2t+79Hzp z9i1*SnpT1-O-~%k0PH8dRvwWLw0U{suhAX3d80(NcGdeef+q?mivWH?$5}9dCIB}8 zK{#FnERr~388Vty`(|0U$h{bNYuuQrVl`RQm0o}w7_-ZexiSC-xwy6 zE|M>tBpfZA)An6B{&>6b;WG8xJrN9B>$y0H^M6RqW1Qcweht zR9@U(V_hS(!`kycC-{K%2HJ-I>{4t{?5=LFZu$9QffMa^b*`9wQT&YjGJNfPT`7Bw zCXJ|#X%YxaQMDrKBD^eqa~gdl^oYRNbf!@ekZYFyh{J$h6zMLh*@NO4ITnH1`^(u0 z*c^gQQe4Ks+1$c*ijbY$EWvnBqTO*qHX=6MfjCQP78!0CjY4~<2hk>_gIZ~X zA0!<#{qm_~)k`rNe$8A~C1!ml* zxLK{Owg>pVTxDewBudvA_RY~bYVs~-2a_tiuVIktbIZlN{8Ab9^U$RFm$_@tc-SJ+ zHJYfCoqf4sjczI1oM8j2OM-W)Zq>vT2+9uoU5^UnLzDUBl;-(h^bT)xs&lU;=}!Ch zB}?v0eoH@>mLrwwiyG=0Xd6ZhL%mbHTfEEpbjRi?=a=fW>e1`*8@3y=3>&;Fy_@-D z+9bzdvQ9>%*(66d6_{c-{5Q?PSwBtJ=cambEU9l?FbMiEw+*)a00a%a3`aQ`aAnu`&+i!`CH%-AI4wBk;rhz(a9jmEETR4_I^-F{v~h9Gh5qV zyU<(9$#zK8A>#x!fEawLaQ?IEShMtZK=;qA!&d{PzgWkN$F#@7$9Bgk$MnZe$6Cku z$4bDp!RVOZ3ATl7B+sR;%;c)O(k@WntmE!Hk}#MRo3!_Xl{rgydTniR4MOP(jLWUv zY}}mo7awjTLHa`^L)LPwR_)=tz$#iuR**<|Pk2tCmRtiwAQu&Wo_Sy{@E@oKLzn$g%}t;=W`V^0IT#wNOEQ5n0<^seQ?%d3^`Dt^lz zzj8mmnS%TsMKbN$P;Ol>86MZ}*PqNDuMxWtISQ*}))RsWUw9u~Z*mTvpp%7FvR(17 z1TS2V4mU;inmt2JmRDB1HC0yYgP_>(Eo3cWEh8;q^^k$4qT9kKbzx1Za4ZoA&vx0Bh7yeC?-tdSg)FymW`p?SW=|mOj2m_yaxLm%%i{w`p9s^bDDE6Pk zP!%s)6BWJb3NKQTBvmEDbb<^omP3!}iDGnxyOc`CRn^uMFE$6)t6b~gE6@&Z0!@NJ z0$tSiu{WT&%+j;JGLdeC4zKF*+Q24I+HuoK$+c>Fm)h}(^KEcfbh@>7JitPz(D%K z?YJPkP_|ecrZ!j00f^j4$SlvTmKP}-6FZV!Y}_oV%!^LKfve-oiQ+9UF!3a9%m_;E zNI$i9v(>9cJXv<;Z;Jq4wRs((L17)4Z3%4=WE;pWPAzgRL(L)0#J&RO+#Cs1BUSq^ zK--;cz^%s&at=A~p&AF?cD?7_A(Kvv0{J^5(!p47!sm!?bRi5O7$M9d2ybjvq+M(w zSoytg6STgm_Z|0LzNrsE4=(pX_Y)5<_sABpQ*`6RM-fQ9mVg^o#xhD|6XW}VnxBWCRWIErWm#s$c*StVfSlcx>5OiTeoj6O zFRxgK9fY9HmHibroo{KJpE`=tAUg&T1-&Vizf7ku?WY%sl(kWdkL;L+( zJH|2fx8zsD^wc}LbBDF-c9g`)D=~^pwMnx)x9J1k$oJucziaHrvmr>XE+vhUWHV<_ z(aV$veNNh{}d|>Kdyfm)`$%aqg;M zbFpZ&Z7k)BJ53_2=B;Vqz~XQQuE)~sFjSa=c$C{i4gGe<);Ha~hCP!L5A z)j)rGlaS|-7xbNw9KK7_N#jj}t}r*PRCp7&Uaum#Mj9Q@0gPwjmHkzd(M^xy&ohX= z*?!_l>z*@p%XRa0L!SM0>z>nE+d)S`hk0i?n@X2lfg_!huN=WEU0hQ*6hzz%rJ}74 z%5@|k9@V`5WX^GQ6&Vd?TCvsSTZs*_7eh+fOH>OWh3uv5g^;r8U&UdQ_`kTzx65I_ zXn(=V-_)Zu7_|cau1F#}@B&4=e>`c(P`)WM2Pbs?nu^m$#Z|xC6tGh$8QByoRrt8k zNI%J9B3k{m%6xCP^ZAY|7b6XxI}8KGin}Px!lszJ@sn)nRVIQhsVAG(kQevMxMgXU zL4Q5xJa_oGvMpv^E|cwu0pOt28Cx1%0)tB26suI$vpNMSR8Ry|1Wg1d7yq3=awkvh zPTr{^K2bcOwlS9R?_&pW?xQ~;w&9n7UQ$F-VY$~~FR80h*YPhuR>NQsutfY3hasAU zaDfS6*lHrcwSu|wZ{_O>v#UJO_t|dDiR=NYe!XkVXZ%39ZRZ$b-OgCI&9bYad!b;2 zt^|%fyG!)@%V+0cRM(%9*2 zYjtyIdSZM?{Uu*a>>$mYtZGfbB=bq*dd0ToXhq(g%H7A^&7I>C&K>&_$6c+)3?mNF zGJk=Y=|?7=?1)4)1@(DxgMJv3H-$6lhUr+snV&_ zspYQgE)LJc{!x9vb%1ohd%%5{X;*O9z$Wjg@+k4BYt>{FVR1u<)XhR zfA{;TQ~p5N@0bk80iwqyYwCEAwtXi*9VGY&gsD&OD26tgBRg(tXl- zQd*X{lYKH=mbsG?mYz4_S0w)ZRB>8FTW|F>+>4{3sy@G-s$soh)eEpaXgg~5Um8>Nrf_uV{(i;i@TL?Ft(&qJy<)OCZb7Q+K^vU;ie zlQbzol(E!rn!av6IufSRxl+|q-O|cZ*V41n(o*))FTgt=9VP_Oa61k=4pR^F4lSXv zg(fn3@$AGVEUl*XO$WBn&_XGhp?Ft93brM!`mO_SsMpvhrJCKA-JiRSyXm{2-Ok+- zn~GVtit5L|xQ+0Q^2_4OAC2sc)QpIYnk(8|zPo(cZob!HG(s`rHBFrO zs0d^Qk^(J*C_wR`Nl-M%2s97M0X=~{K}jH5kRFH|qy<6;5d-toV-O4^2SNd5fW|<7 z5=HMF+qP@ABdl_y4A9bDnPe1erblbP+USjaJli`{_X%qocJU-z%~&B`4H^x|z-Fd0 z6fOQ-*lq{J&6ckAz*M`NU{x?XxDpHj2Y|1^@!&sTConn~1||a=f$P9IU{7$xn$KF( zTGbi{@bC4Z6QCvJ4>R7BJoR@P=XYluT0PbVc0G$dcfDY~3Wadvz;!)^Jm!QGRHN#X zG{3hecBVQZgmINRDJNxKWTJ2ZF*tk`DqIw#dX<9`B7y>wJpXDRsXD;4?v~kx|n|CDMdn-wn5-Vi4U6PdO<#@BHNKOrg8(@fWMnDg0Z;gOoA4I=ni*+AA_3GUAd#_+yp_eJ_8vYCnJHeA{dze~a-l z>GJLx@tOPCF&MuGS+sY(FZw>`f%pOCq3wOp#e~qS!zd}%8MWB`;wd2L_o2$ZVwm0| zMp1?kxOY9Y6b;Z0SPj7Xw+FNa@PQz#Re!($N53iR$MWy@^r9m|zz(RqA9lY3C2QL0 zylJ>;xk3eHdw+-ND$VbzJ-a>0ukR{)&u(|#{x?sIZ4(f}h)0HrXS-w@ zPN+`EP7tdE!Z(=P!0Yg<4b8H_1`bJtvO(Gxr^>5=6k7aB8NYM>#6#JpN)Ahp@xDr~ zdQhlk{E45pIneYXGHC@>8vV37to3s6{{b$)BaOp!4To)Tl3>1<%KEuN%}s)Fj431) z+v5s{X&64X!S9R7AVmeEhLOPJVIN`UFnz5Mm^us&W)FL(Wd^f@6%9TNxaAWBF+J)= z5U+9^SqJOhR3B(T%L`FtlHyGXc?p789}TRV1X$^bR<3%k7OzIGW>ai-4fyr>4Tpd@ z<7>@C{Y0Hgy-I^h-9&9-%|!KSlL{-P&gY-L#+SugUGZa@11oV$7RP@`Y_$Ti zwj#)72KS8M)Zzxo5%6-`Am2OLab6XuIx}I}r;?jIXu#rw;uFv`bn4xyUV*LB>Gu7ww&yymPpYuPf ziMV~P65$YO>pb}sn$JOplW`f-d5_9Vo-6|xwdE# z2i^&q?6;t9)eZG({sqhv>_(Kf@E{2*aVpOLzQd6Nm3Q2G+yk6kB60$JQka;nxw7>5 zRHj>v>hDO$lB04%M;aX!wt_tk-Wf7rof2QqQlA`~9J`H&LI;v3&lULS?zQzxT4rm% zpCeZI&_E%#7;z*ZHR)3$_br#{CrU0bH<-(mi;`3HlNmr}SO?e)W?Z~~0|6*9#ay}< zOIbqErt?OofCMN>s|WQ9207!-1hE)01+rWbvUwxtrl|0 zf7x|eb(w#4ez|^ac4c-!bVmrC4lXzm|)T8kjepnk;tIIx#6>hYC3F(We4>N@k;8d&m*oj?`}|n$dMoLcl23jt*M>EkM`=$5##`IfY^haR2^>}Or7x1@z8XM368G5 z4zwn=YOWgQ88n%eP3au9w~AY_yi!A%zA~6Zs#c~R=^i<^e#$eooAvW5P%SblW0@lT zDwL^WJ^(;ko0KGx+a^bNp0qQ<|aik8`5VuPrWFY!D(BBS$0i9IelF z`g(=z4?|}SRdr7%lmSzw7AU7qr-Tqm#v^N?atM-YN$Q^QDSUNr-p3rt)4di3l6q7r1E{0tS_e9p_xDUHer3aW*MBBgh#{TefI^9=ExWX?D0Y!1|TXulHNO$Kj*alsbgORzf_3Qh*s zfVlwcjK5kWA;UneeLr$%Pj6)NF`tWDb%pQSFD;^$2cwUATQ=5WwuemJO4E z*Xn-XjZlW*gCK^885#<#SYLYxdm4IbxM;0p2hy}&wE1V1kjg24o6pWj-#S8$q;7Z> z+KY`6q7&`_kj-QQe}Y;pL4Sn;f^32d>rtqIjcP@URUW#56-R2sms64 z^bD(ut_!bA^-QTtMD$E)E^Dc%%|C^8WS278UZ>~V?x8dHq{s@^kV@`(adcuv}r-)p={cTkQ|gO#%#GPlENe{xGyi(uOrLKTqrWvd3qf4y{tn*`^D`30)dOxZe&TN_Sn z7xQXqZ=!9QM$a-ZzufuAwbJl!ReHO*>$UQyRupVq3*8~#soc5TVcxObVf%RbDf>A; zR9+c?%fTaH?={^uqBXuXhP5wlN*n{r=AKPW#P2L5? zKZ+ZQTbH}jE0cex7Zlg0x2Ja%$lKi?zi?%~V~5uZ)&9cNjF*6<_icn4QyI<$UTMRE zn(p0yZU51R_l5U`Nrg*=DTQD5bXhX=rwz;vxW+F_MwaUUc%KRF82@PReD91oi`n}A z!&q*-q-i9D;xIEThBs>-s|LFUiw5%s+Xfp4ga47Yv8T;EDBU6M?4GWk5D!X^Gk13P zH4kLUfd75gMc?^u}fv9g~H$I_TWoO)bEpZgy+u?P7k@&pFx0?``3W zs4F%q&g#xO&Kl2Z&eG37XQgL(XYrM$K1#reP1{G!$KX!kPV!FUPW(<9g(QTeHzDFD zWU6;zX<>9>=6-ByWx?Fu0fV?2jkfC9BL4dDQ#X{IJ zo(;qVVg|8;Sk`nu!$kW)ixy9a`wIIq`?vsvfqvfyK$i*byX-UUqwkaM^8%O#t^Ke2 zT>D7-H2Z}6N@c%qR1a6Dhis%)`&MaJq*lV;A8*W803VRz?CA{UEc$GA_s{6zF3TA9 zk8_T7qhKHiX%}h-DjThX!upmM$qr9XDGp8#PtOxCux_y~ZZB`Iyssz$3TVSk!@q{x zm(zglfa8FjfQ^8?fX#rdr=7OFw!?t^w*9u#fU~xZN~-TN53 zZ2vl2_6FXbT1)Ny_&2FH*a}psSoBn?uaJY$qu!(OqhbGH|MXX$7lTJV2qT0H;I8;U z>>wx*Ifyn8(6H}W59|8R3aJk1?VasA26P5gTeQ-5gXp%XLbg7ml@Q(CkDj+NjWPW3 z*fHzzlM3we?1~VjPWcZuh}PjYQr3tzQe?*)O@^duV0ts!s#Fe5c5QZDc6EqWusZXM zV}op7)mrNOcgC@q|6A zq)0SLa47YHxoYJx4UBWaCbIT;xW{rWOs!=9`sYAP8!DJfiKW7 z_2UE2(#x3eoN%x3xG+?BMtJlo$*1_P_%7itqN$@QoMUBvbbZBazvy20{y2#HW#ZZ8 zMFkK+!qyf=YTNAoc((3&^k>k~+F02X*|4O! zk8+HDXpnHx&YAUZ(CJ`xa|1fEPuZ@I7LO8-osaO3rjKWjJ&ziX!H@4=)Ptykiox37 zNgPjHP87(OTnz$bKsOw!>TN;Tobm5CIUh>2Vc0)Sd>UW_ofGZ!}SaHyU?=k_c+Ltp+-H|=4>Ca?-AV) zsSwT)MZ#CZM8d4X$HMA(brWw8U*H3U5R_oVuCS`^yN%@TlJ1P| zd2yI|)rMG4S2%vSXPAbBCcr&b$Js%8==n2qJ+m9@q?=^jq4xHDEjfqP{M|tqLC?37 zw!;0wxK%5d zyA-H>305Z<$BYY~|5c>lroY;}+G5fo(p(-Uv6xfmrr@f?FtVUnnWFALTO77NHY?g7 z_ac9-&u!Kv-lfjLJ))wR+B;*;%pWjL=A7R6j}PpW7=Mn}>R}wevbZ|}Ru-G=8eC_d zVwe)0VxOYHq5So3Bb2BINy0%LHx0$6N0bGI6u7HxRnai&J;UyyU}C9P$uhulwSOP^ zY8+A~J_LtrzxZq8Zq&T=8~raWj~iGbEP*=#zHYsC#Cxf+KTnIDSxgUd;e5&2akz$Y zE^f9jKHuGIUNug%bx%4>l%FH zH`-qqzry3gb|n(MnzjqwIoSAYimv2(TM(SV&t9xaKvHegC@J} zw(2ex@5uw%MX~dfIJ$|q;x7j7@dBATG0Z@6n^0d2%J`v8mJ8q9xT=1Kd*;vZYW;fK zUY}9b2DQE*g8>G%a&BbVHmNTIWKd9mc(QkX<8y8j`WG5-;{L{m&&0&r#ol6c%>)^n z9>$?8?u3F6!wV|j*cZ|Fw9j0CGc!)CFMpfkBIBOrnfDbrB)+R} zeVghc>7MbK8?a)=h4i`Sb{}8(KMMm=%veBpxgBzWOinEsqy8bmUQ#`#RGPa`5E^E$ zQ2)UY-zBC|TDVXISJjJJ2(LIyOc*yWmR(v8Am-*BNZio*<95V~N}GKMJCM6!M8-jk zmAAy<$|RA*ppU}si^c7iw~`?TSI|m)>&QqO!!}%F2{frZ2^X#gg_b zTM}{QWJ->=_j3bMD{T46)L8NI02raq}%~2q6M9@G_C~$YeafA?tnC^1tWPx>KEJ+Y0^!G zQ2?G!9~hAj7Ym0=H-|^qFJvjAq2NsYJ0?+@7qCStJJV1jFyJ82SIZ)W%;Gfk>spcl z4NZv?I&a*zSdo5HORAcD0daCVEZpc=+J22K68Bud{z#{aTNcaRZ?Hw~4sI4Vrenv= zh-K;5*?RAu*DSF@=Zf1DE8K6gMd_aJD-Jjo0d_cJzt$G%Wv;ITAXUVziskP&+M>7w z--`#*iQ?wRa`Xd_S}6X18geuE>#eM7y$#%( z7&4T&NIQo=^MhsVNes0p!OqJbPJe&R@X_c5hc*q+%hx(~U+Q{rNG3$^q_pz30`Z8jjLnIs}25`)-{EQQA5R zF0GoDkVbs}-AJn$VZ}GU9ny1?b)sJt_Ne6acRq(=IqmP4T5+f=-h!^a*1^Z_vxVt-py9C$49fC7>aCZpq9xNdc+=2`a1HmD9fB->5 z@89;J?JA4M`!ws`^L<;+-uquya;u4`Abk7THfK|l$XRTxSri7q->9Ma8h8D*=E2$I zkF3PH=qy_4;qKROIEELEg}PrVyv*&?4%R{6uHPT@On#jv%W7t`pnYGD?P_jJ6g$uJ zrnk-aAx5D zr?sJhdtUkCw%Pyl@;UDQJ6l5EJ0!S1W=jhpx+Qo2qSc2gP^XNKvJZGY`|Gr3XO)XJ z&5MW2-#M|dF6x=hr|tWs5Q-8OezL~R4r`%5&^anJ3Jc00Z%nBwQM}&sf2Dg$EjBBH zRKkyYt97m`xCq7&g#M+I1Bzys-k`Tn;AJ2qHm6>YX1(Kdy{UU|5>cBu`yzh*HXvpH z;&)_h=jO(zz?-vC-!Zn7YW=a_uidIGVi)7pKMnsjHtAn{(e8QVM))-BrvI|`gk=8Z zbfI{CJ*}}I#iGZ>L*>(PosiwrH?P^924uyhE=YTt-rYg$%1ybmqVLd5NM?VK4yC&@ zI)KznI-rJ9S}xVr*WDF~gnDd^N*MYzg~7u)-(g_CZs45Ht~~x+`m$7e+`_hJ-HSAh_Z#&7JXzP_^BU6_~Py3&e(>t z9!R3mpwjfx@w!6{n~9C<_FG8KP14ps3mIk#-up{_XdmD@dZ&&GzrE4)vgE78X*uS{ z602MczkdK!7Yg&hn$oU%wnb*Hz ziyY-_trVs%l^H0G^v1QO2`nor{f4^|qR{#ICZ5u(7ZN<}Vq`vd^cLYltMQ<+kfW(NKN{^%8y;gmKkp@32y!QUVS!uLWXr7hk@_%!_MhqHW(i-w7Sf+!bW+Rtq% z%pJiVM957}`lp$XRI_*h$&&6;=n{t;Ef-S_z6xO>{Mhz^Ph}-v{c+iJ{_`OsMtF3E z0|!broGQfb)vF2oHs+>Jc)orYp0x$PB&{zCjsc+_UNjYn0r6dhb7gwp2tyGo)i@mQ z#3^%Zl{9h7p~Va%T$Hq6ZB(2OJ5TM$%o}!*61dE8bS=aHIKoo+KzU)=M|sTnxVR${ zPdXnpdC+)8+$t`cC1N}Te_QI+t~*SAEKUROuk6!bn<%y9I1G3Q+*>ST3_ZBh@LOrd z7Wf(jL4>7#CQH5+HArAVigH6Y!VY^iHz_aQFlIjndwoU)s-o3VLeCbo^@95+gB<@UBZq`M1K z$QUVPG_`azu!-WFHkolwY+(tti5j&RQZ&^t)yNBp4?uoU!~1D-SnLWJ>zg67|%KFHD;VO-%h+8u_%2 zDx`|8PM+wd3ZMR-32W33eu-AvXtJ}yi%{UAf$4V~Ud=^ky@D4nt`5ar%g9}7uR5=s zTIK|8Vby+)+wk`sVtOS%7FWJ*a%D$Y^V$)v3=;9(O4P@&*9A-p-JV;E_Zfi=sIsz8 z(~i7c{5Cs-(Rux43aX#O4@&3ecv@Rq)d>di!x_gMX02Ker%|)7vG-YF9{2C z9iQb9`zfugEcg8%B8nn5xw!37%MQI_GP#8PS@+ee?^Q;%T9IJL=#=s2UsFXwVFQB- z2|4U$o#OG|Zn}xC7PH#*(LUB6t4zF0T;ykBlc3L--m!1oxk4U1qttFPqRW~f0ucpF zV_}8-W5yQPdEM6HdJT(x{3NP}$Ng>);dz#75<@Nd5-|yz2e1rlOnSq^L^$z5QozPMB_YVqGrZsDggmG%$e1h z4w=6)NiuVQ(43V_Awt6t$B^|nKRmlzxZ}nw+Pl<;SDdBUk$s7Y=M{-3DT{x)QZ_85 zuXUfWUWIaAn^$Ior4b3?qWeF^y!wyzJpR3TSPoTi-zwl+0>$`;Ua{;jeL|tEP-eN^^fG3SdbXmp^_cw zn{+C)qzFYho03+jFj)MCgdaZt&5L^5t8_-m1e6fW%8!+gJsoZ@`?+KdN(tuV$H~Xx z2q#WIqXYA_BblIcL}trrYw;5zj>vj4^dQ8?)<8jVD2);LCGuba`PlRlTNY$%=~^xF zVFqL3Ol&*pJY0%hX;T&q6U3{xk`w4}X*017r0G~l@a6E8L3eitsR%l5PVQ1trr^;x`eNZy;K4BArT1z-;YUFzoYiKiM8-KcRM1 z7{+z;E~u3;-gC2_mV9rO%3Fk^$kRBhr1h14N@>Ty?y9`(apGl?uPXW z6b^PpuMeE>cyuEIJ@-idF+KfeJKQA{8&ntYf1`p1dUqr}EQAp*Q2)lF_9N~nf4~(d zrIu}z+p)Uz0EPoTHF8SKSijAV=jDf7y{|`H9}vXx{!#oxEk@FesqWX^alG{TfFe#% zj656jtKVBCkXoF^9F8lBWFTRO@lxjl**D5$I@RPDn{6XuY;*XrA-xZbYLSM3WKQ>u zylP0rgSSw&4O5s%BQlR0LnD@NTP+vM+mds_e!$t1dMXyV1$QRK+Y+x3Bf$!dJ=(5? z(x4xdu0P-;j58A}-~n&?#@ULhAr_0lIZE9F&n1SVg{X62!~@MGma2uoZ=lkH>@4Po z$}(b*70p?!j4&MPPKO8bH*9mwwyaB(ZXhAqaHs&d2Te>GVMPkjCXIC7Hu=EzEy=cP zNNl_4lJkSmH`Gmx-;sZZP`4u)g5F4C(m+xM$F}z_(e4?7(E+9aGCTNd`_CovJzele zTdpC)?fOfBd(mLTKD4a}_aXo7o+MDg?}5KNsF!m0c+aE&(vJQ#FuOx?sd`WJOb!rF z(OYRZLHCHj1!knMnD6}-JMP@r1RhkzUJ}n#|KMMv!Un$YNO>TxS-p{wP2;XWlaX`OMY2bGZG za3>VKaPiU;;_%Su7>&v3lnCSSwP~Fga3+-amEm=i+f3wRkMIz!<<*q&tQFbgh+1h! zl+mn}DB}n`(_G%^#B`^54M%>!quEuGW(Y@8@#D~e08xDOS>q@b=xcF$^aZKY#&M>Y8fXQ|ik&{Qg_7HzJ9YGRbsfse9vS`wT$H zUQ(gV4Bao~J8>`gFL9=_ob-mN_2UBjqF#t!)@pKZiM=SkL~bZt(Ed$B9hU?0>PQ13 z#1)EZXVXZ=RriThzAFOhbZP$MK|m%Q-a}NdV&7YfiS+NZ!m@9Dl_jpJ9w5*1p|s!A zq?8fYIxuDA=D6F@9(y1Wf(rjdcMyYB+lgT0u92Mz>!nuGLHv}!!6PqLS~SNAHf*PW zQJq8XyVJ^*>dv~OlUKFFDPmc2wag?hEzbPt zCYb;h8ln>#PSmIEiZ@&^ZO0Sfj&VhUoO`_f8 z>*v&u?0qoM)7TT~SmLe0SSAT>3SFh^b5utf=|7_{6#te4&4nC=0_QBQL=?4RN{P~( z&5f(ZJd~NDNElBe|oMV{S zDxsBeRmX*_lQLnjtd*3VIAO>j)kR!!#K4;0g(y3m(Yl^TG&_nh!v%e`U#FEn@ndU? z4?E(I;Z;)9J!|7t^2FFH9{36LRu^_u0;?~%q#2evYB3W$$P=tQL{+2LEx~G$M3&LH z#0yq|Q{iMh1O`!gJQx!uJQN0rS(biN5D^{{gZM0~i%~XCG{%r-%0HIoQ?U;`xEPi) zE*u7sMj(eQYZavdeLYS;Luob2b+pqG7scjHj5Vo2`+jS+z{UyZ%TbZUO7z>rhSN@5L}F<+g%&vb5ntH7Sq=*qLgJb}|cA@qw{l~k&5 zgv+xTSf}gy|N19yTvuMdFkkO%EOXpBaLVrWJ}aWZj5+t zVoTLVy%z2wFGyRE#xZVSOVLIJqZ-$+C26Bri#$`fqkT$41Uidxy+}nOC>4@v$I=L( zqqJAb2oV^aylx`0c!9Z&}M| zMXld5SF%@H60mv*R`x0TQ&_uhEMlr4qgp^X8h>e>8>7+CP z;o|btv?*!KF5jVMG6a1EmyLY8C$XIPt+1C8dhM zR){Sfn!`I%_8}A{r$RjcpTp$8QS!gXh!43aRkXVMC&-MvL+R%^kt0(dYEc@qa87xW z(u6riz-deNmC_9U7UVo*gDUn<(y$Aik53eqt0nIpi2i7eAulYpeMm)ZRCB9S`RKfr% z<)18JN7uqOp(fJ8%hDp#*CJZdq7u*|Fu~~1M)lRkxt)WY__lT`-K>gvq9RXrDSL8=1C^sv3v=T?!`|9hHfagAhK{b(gx1-TG) zlE05^99gzHwYo-eq3=XnPjnsVv|evH2O6%KJ2BRi&Ij(SpITm4;lVi8u`NTZcxNnr zm}1FA{ktt6*x_OF>}X;iiv~4p99llFikykZShB?YcjhuETJg7Ij#|U*aZ?j;<7IG@ z>2ed9U@h<<^6_AN=0Wx5!THk)htc|`C){k9(<-O5H^OYB$!evQVpaW&*pH$o^5@8f zOwj*2>#b5+nSttYvOCHkNbj(@RdcHlkb_BeM-BVGj{2=unpMp+lJ@VdQmYncG{lk2 zLm7LmAJD}ai_tZcss|Q!k1uaNpisKm0$_-2Ho{@#^Um584WY!vQ0{NcvsbLM4RO9kzFI}Kr=P=2c>TWn`AJ~ z4~E|;HmQC?{tgH2^j=ARu=qx^NkbEkGmN?uc|{Aw9*NxDIlVGYo>aB41VWFLZD~@}EV2VDfEy(X-|DB#I3FyVh-<_u`#Cw@%+)z@f2%3?U zov~60$k@)+2ZZ7{<{joM-FwGp%ur&f*iU14lp{QpvDy79g@cZT1ICowlrwt>od33N z+|Y77kqteuRy+}fJTbaFQT;t}{$9c1T)jELxL0__4<-8^VKLIYvvNgoul`J|)|a$3 z@O$^aEGWch+JA4t5~T({?ap5Qy2p5C{D&Tfbx!fj@eeyJC9Gd+_tWLm?~2Sz2KnqYm!7k9zV>bXf30ylKhGnznCw@$=%Qicn2TRBtGxx6#x;+RJ;FAW;T4PsL z&*<+6P~#$pX?MBXmEy{Wd3J?8BjV_HKO)hkDbs1-SH~?3lkKv5CJWud$u zM2#aGRF>(SGknLt+Df!ZuED`#Z0Xy0)}mZMg7gI$9OK!xY;6MVuH&7yVr>#@kTYdJ zIK*-42I4pbz^U9KQIsHT`q+$?;}H7sw0#yYevueT z)nxjy41)2Gz$?is5?u(=ps&v0D=Ai)p>xRa9{;j0?j`vp+*Fy9j$~+`abE{matcjl zfab!q`U!!36ECVS#T(LY3_@uI6C6-C#;&yW395Y!FOn|>8*&$nf76~yC8VhtaMEHY z==Ze&q+2L1Gn#f~i;$pR0zcX;gWB2K=dD=C{tM~b?MIIu8Rr=^GGTg_z_Qk+k88qW5z?#MP5d91arT?BG zHU4Rz>ssg`_F45Gy$wruTJ1j2&>8_!sVvjcb*yRE6J?b^F4+78nN$W^D0Gc$8uSEN z#j+wNRSwF$bOUO>=}EFm>BF5w=+V}3>qoJIh|1%28Eew@-qrCFQRv37s%Di>>Jrt& z>oL~x>POds^vmmX1#0s3IO+uTQDI;8BO|T(YO?j%>I9Zz zoK!o?VY*Z`$$HFnd`r#0^#J!SY;@3Vo~HEtnwIL z`kJ&w7AJmz7;@F5@=;xanvaVNPP_uhu-Zj_CsBdOe3j`kdtL9EFN@+%|6YY8Q}O$P zFlwTKGli!k$^^two~_GPleNg|B+wCKqS{!#tV^+tMp3K2Xzzs4kp)w9t@hIrt2JA6 z%k7JWsh*eL>7v#|F4CTG`$ma^sLGRdnQMeui$Nv$rRrrGI@L7`i)1J4zR9ARw1gll z=q{m58ll1*pC=mdJwXPY`_5zRH_b zHE9{vIxqU3p!jBdRrpy2TwSaUS_}cxXyMcrO`an%|^`>Hmz+-v<8 zgH8}{(;nqRs`|7nYTXz8Pf%|&9u;0_rh8D%EAW3oWgYjz{f2 zqM{N22dnH*#L94ZvAK`?SDc?Y7fOF) z{oo{0spWC1Vxe-!RyQ7jND}GP3Mo}%P@7}Vn-75q?F2xTvuz-{L{_n)X0-#9@7Vap z1^f%@eH?HT42Yts0AW#;164h?yYUJ{?oBsW0PaOf_hg$ZHCGEkDUQ`|>;o}+vo;mo zWBpKjGl1>3>Mu0tIOHbu5iTTEQl6$N1*&vxbL07l)b8mcUL?&tuX3XT@EiG(a-S+^ zU$$;a|M1I}^DFN0%Vh8?Ebz;H<}VS+uSPbhV63q-Db+VA_l1?H!^&J?rDnNjbCOh0 zS}K4TNw{Hr1avq$FoQbi02Xt=aJXtj>a00hN zp0%216_RfHyOB)$Np8D5FSURw1mM&k*0ZmZexFr4s^{RuEs$rT=30fVn^QZs7~2WI zkm@+hZ=cVto@cM-U4^`m?l{tJ594;t^HU3|LTsnX(@=A$!dS>U9`$hu$6U0@^PKu%j{wY=VKw_IZrwb` zDW6>N$h?UuYkNNL+%Hq&_L85&jmO!oiTPA>E2ntvMLr|IvZh$=1wO|Z|7fsT=A+0> znqso&Yk!~HI3;K=_BnEG;>_BQFDSQnO444+J6vR((i)pjsYGIu(k7XYIaipeSj7^E z`8;IsMu#m-ksY#oCyUI!#hkRnoWaGM(88SN#{2;n6PfLRq-e{aXiunU$FJysIr{uM zs-!dEKWptWYGpcV6U<~O%Vf>TO_HZNWp{|~o%LnZG?sb8(v7z(cYTWLkkdQm%dEI1 zHE)XLqs<}OpUi+!aR+m5t~|pj=R>SN*#TqU93;7E@-(L$z~8wo^4zEV4^jVQJd8Zs z|KkqJ3xkffOswv^uopzAPgGg!es)}KcM%no03gS>y*1xwW25f0H5V5@LDYhb>5)VG zKP>@k!7ic1Znm9o-^X!G0jyTr$m*^OS|`K%c#dfRj~ zX4%rYtz#7i1>i~B?dl_-t<$c@xlRdM6|_yS9=c!vflKkO)18n`j`d{MSwBm$wxZP; zfM#L?V9U(lX!4z9P+RZnrVC9c*LuqNEVdRCB~r~KhX*o<#ZyfuTaC5t ztzH2f6deF%Ff*!Kbk`iueEd+vGKxlK?0>a*uLYb1`@#350!YO^N4h7|Y?RZ%u!U_+ z|IEn`t0&uRtSQzHu_p~6sqDL2-mkfy`T3#tWB>rh{%=drTF6=G9b7x=n%tSy-J76H ziBW0?%@$7=@d7wkx`N?iTg}$$HNG=r0NfNS7-fza6*3y7R~nI<#Ml}4d$G@=H;jWC zrdS)$8%IwX2J#z5U=2fG8^#`8`eR&%0qUzQXY~hgsjazfW%U%Gz?gy(dZ#z7ez*NC z>7A9dq-jf89Rt{~cTb5SGkum8ZOyAIXB2lFPst%T=cvG{^6_OV)arZN*6QywoIB>H z)7Pq$7yH+iu(dE3Ol6exNTXDQ3Zz*wA;!;PPaP(DD)O`M1b046x5 z2o+1-T!g9!M@!LMc>4%rOTk>k!-xP&Nh1I*wY*_RQSH}h!DL5e>j$-d4-v~mcEiqQnJ0a(msHPs0oSzMVQcvGaDemf6jQ{hRcYybqYg;nmw@ zAF$2CbGC^-00`-l_#5Ky0n|&pV1!QtB$q_Nk#}N1dr5@Fw$MG|zlgB6F{-1CzpTFy znu0iqa`IJ&29l;K_vXFHx)V*AIQep-e@xo#wRvBTGV2WabD`#B{1`bny!HtA5^NgU z1ZSAaHcWIF@1gL;+SIcNNxYQ7FrIBXYiH8yp!?bsxrxs3WBt^~sNPPU*HZV1DOMAc zVM6`%($0z3ZTF)oBEZYVIZp{dI^V4%I?r@$n|L*LFPl;{ajYaeh-hx!W5^8c_ra=`gZ5h>!thO1{@gGE3$iF1J{j3D3M|&XjY%k>V0s$j$0?LjFw3z`?3DlnqT;)~>q>l&eU1)n$?@-} z8+VqyPP=b6P~7OdKCVx>?sR&scb{)ygZ;gFx_@p^yK!};tj|(yV|&GR54{Qz`$vgQ zQtc&sGj|Jf7OQUKe_^;_@Q)XpF4~##`qlkMi=J}QigE^zazdMOnuqcSeD0K|II{;G zvnOx02Wz#bsDlTSgQwsx56)jQr{3@+UU>eHo^i8XPH)5R`V9eav$s%p!3M{Lpnoio z7QT1kjnf^wL4UymD87>td&P235kV8ZyXM~R-CY}E7ZQIVPvapGcYJ@NpC&{0`n;vO zKW%Vb2>p$H`th=7eQz7=C7G=`FqAY^y{r4j@xDD+R8j)q2gV(C`Tls&|1o}W3HFmj z{gg2~^6T)=Wxzu)(8vjAk;*kpa+o0fK9g&dSAL$Szc9$7g&z4Uzu3=ZjoZ^wF247LGO)J*qLpwqo3W zbnUJGp}J2FX71zLivB(6zt{6e;=VYTt50YP^`tLYs!vKPoMs$n7xjN&3)#p44{QbFO*!W=o9?88o)mkd>WcP_;vN?0r^=r6z@AJ zjPY3q;1voj2AcN`uj(HJo=rljz87!xyYCBK6+8g==%DLr{ekLPBb4NO0bq+h_w?w_xrBrp4S4653^z0QrDmE zXP-&_u>t(X%RJ}Lv`kB-hFuS@4t*)=L>8;GN=vndV-eEXq@`KI#g9vlo)k4IOHf)1wC`ZMVw6@w zL0}Gms761Jx|2mMEr+Tcu>%?;`p>8fSsZW>dT-RGEKO-MRP%@n6Bh+NGHL+fo2NDT z{RI|Y4Ej*i&fpuX3T_Z7MPO{Q`E~K{7#97vM@U(UNZVv)ZQQ(twtOPev~{oBPwI?-A=oQqA*(_!3;)R zI67&2xAdC|X|(qKHw|z|8r#S+xX3E0$O>A>SSDuNNV+XZ?>&$VFOe+XMB&1eyWg4; za-!u#vkmI+;)z4Vvu~d(gm82jzCsE{#6Wi4zs0%|??9s_rbkCNcIB zZ@zJl_8$z|iM-SXtO>+@Z!DtS2mN?K!fC1{wm6>9($LC8h9&WG}@>G!$~jLXEQalRvg)*%36q~*dO z7}NO?;EkCCNq_|n5Eq?WlU5A?4wytNj%q~1+MyMr-E73o+8-d2bk7*?h@av@MnbK_ zz^HMEBQm>|o^ir@luXzpN^$ff+Ph%SL}3F;=429PX)$fU;7(i}r#s@f>*E!AEHOud z$U{hf74bnE@YWMI#~F?|@A_WF0Aw!XX3SkOz}hlzlF-EAj418eTzv$1Sd??`tLS?j zfVCptigO?F-wnEoyw`qa2qgxtXpFe;`h&ybq(&@u-LF#a4WF4ul_x6pbsCU_+A?)O zjFs8*%8r#jI)U#ZGqoof?6TXGjVoPr{NBa>_kijo$3faP=%M0S2fnsMPni|d6|c5N zPmPr`D-{H)teDp!t8LKJVCB+JWd&tbOzIGU>p@EuCpuWQReGv*97|~@pxcT^e3wT( z#M;tDWhZulw0zKX#i0&HZRH}!iK8P820E{}(?P8f0~J-w=#bRbFRGt#-lhhEdMh@$ zzoaZ0o-p6$peQ3&$^iOE9KRkp6IPC*GJU1?JaAjM-KNrW{)1x#zji)@dUlmEknJ?@ z19nj6t2CZ>aZKhn%x9j?Ay&qyRG7DR{MfE%!o-ndAl;*5!q}L-tn6IrJ0A#GW3*um zt}%WI?fNh#*Bn1(u}ZUfH^-EALm2aU4z@CCrQE#L@tby~N}GAl<0wMr5mhvuvP_1e zOpTYYy#>de9)A;2`l2j=FkqCIWmFqvl%-Grsk_L^8)`&`xJC)?v_}XE5Vs zAgFqu&LNV{7Ld+`tiz%(k9=I_qw{Uz7bl#@0mQ+1;9fY-|yAOX#r;9M2Hq?;N8n^#u-#L@w|m-?4% z)Aun+MYZ%RS*H`X2Pj^0U(z;=fb}S=U}E}!*h}?G)`p22qVM}JMH}Woe`BWDM9~4K zmm$CwQZfBa4VvuT-}IvS(!8O0!G)8GIvKe?aE%*KBd$ixnG)_-Ar7MENJ$%;+}ppp zMhYksS1HCkCk&_)S1;xSSj5TC`)k*f0ZrnX#avveB$EmIBiH!goXH>i2iNEUl>ke~ z(VVt2dAffKbxReREZCpECJw0oroPGfJJo-(XaDClbwKks%}p+v@Vk;=Wl46Lw3NxQ z{k>~65sl;=f)e%2jQx!3cMt8sijr)=>hdElaWXgYN0i!RrkdQ3@div=jYB&bVmp;= zI|YN%C0jE=Tis6E_kOm9ceWPT`&!9BsieX~dN3J`?OOjKKiI5~7Fbp$x(>vy%^o&i z)j#!eNu|Sqilpgd?i>>$i5FGSo$N>MT0({ll zb*xL7C(varC)SQk7>KH}Nk_A`nO}>XH7RoxL{M2fujbg)9^P3w4{~e-z9H80%sUWj zW%<0yF{Ud?W&OPRanp@fAZu^tCWxl8d0z9l8B+^|H8OKx5*HlHI+VFH`Npn-7ev;W zs6EQMmw5%%&|+fE$efrYw5#J)&uf~}vSW=bt= z*4WG;KwqixQWL?>&}8uheM>K4U{wJaU7$`=q`Xjn=G`wMc^M+Lfl@|7ol-&*D?$T! z^yRNpw&Ld=5<;T5hZW zaBAGpzF_^E`80`mP*f|%sQL-YZBw2@){HXK&OMoYmI>BU@b}3PnolmBnS1^ z=dTo>G*P#De^25ZR9~wCZ-Dkc*4Io@fxLXvBz@hQcT0LsP6A2jIc@nG>dp3Ae06z? zQ%=MJ_4(@4O{1gxTHbYE7B`%z1)B3Ur<;kjFzTWg2c7UbYE0BPnzF+?D*%$WF$W z5(aW@?9^VbJ72tm0z`0K(c+8~Nk=_Q{k-W;E2yq_anp&WqZy`o-i#gYS0buR)qt%X zTQ{`012~2&0D>6noYc2LRD-HnLyNgCV{zhy(6>%hy{KtM%c1V`;@Sx%_*dPZ#Rq`< zE&Zx&*1)NqQ}<)>fYk-lxU@;nu(p0l;KanY=&Sk95;r}e+JYsH69eCZuVz2tZ#8^# zzP|riexd)j_Gt<6LvH4kqd;|;p!&qgIye)J1AQ4HeU&VI1$}+>C4D&oebo+qC0~6U6AP?Gt)xYa6NTIK zK;zyrbNyzSAhX`mO+EM8t|hS(v)kf8i;xmYJ(}8-CFT>|+q_3g7|Dt1ZPuenNO_yc?sJb(||ZVkTVMJ59tIdzWQSYkcQLoz2>tOoSSHmgP=sZ|4J@0ePwZ zcHz+(u^j??>)IkHPf>@p5F;lhOHrFNujp*k-U<_T{U#_=P@_K20H^&)cfc>8UUHOheVCBbJvbrCPkkw0myC7FO-fR&4u((kpn zDoB82e%Jq9csfPAfjqtq;Z~z5!&!tSBI%5QA081&yW48o> zh1AW=M<1a~$IQ37kB%>ip$1abpH}dwmUzIPMNpNZdB>tTW2&RVnbQc)lXTA0_@)!` z_OEV7Rc^dCJFiK2X`wRTYb@ruP7QDB0YTwwsNDD3t$FuT|C^pii5JO5 zoSWE3`j=L~r&A}j@adH6Cg+hY_t^xH8J4z=f8XLfD!pX{Jvh@0}Ys0{ifa zQka#TJNfW^rI1K0R^%%0nj1TEzTtb66YD1hWAdU<$R(DJa@%zC43at~@+wl;B({zU z+kE4JhkYDnuxaBN$#qiWtD@jb%o}C5>4Yy}`bFxU6fhcW18IdC*|G~}ld2}!je6Nc zx6T{cH3%+C_bvnGR3X49l%zgtZG|Fky)j9?^CHd|sP!l5o`(KOa zu&@&)Uor)ANfO^~5)%EKGOq@Cb>hM(*Hv*@5w^m+=pG()qU0eit3i79?4(%~MSFTOExOVca=bumA z*`tER@{6Ws>`6Y?uT7u1-Ejxy_fBm>?|7c_U#9*Y!g-ef0*?zePi+3s)Xw1>?+TGg zO4nqFUxUaDrMm_@uB{quUJB@WHK zKYiH(1Rj2zyx3{_%cyeT_vj87Oyt{}M&g@Oyw2m?rsKRmvfNU#Jd&w|L&iUC0VCg> z%=wz-f`-01Zt}Vp_)qm5O8n`2=nn=rizs%~8)x|1pHdkk>-&tp*-{@rETOXspP-nN)X>D_2gD~fC z0VugGR%eV6kY%{+;f&Ny4=lxC=R|>Ja)+cYCL@AIm1SFSwUKV4lfKE2eWnU>@<4c=(_CZ z9NVz~vpes+GYV=9Sq?n~gr!C~Kp%_qT@e4XsH29VU=USF!Thy*$T;0gGY^jGm;D&F&|rU@ZIzd8x0Y@5CEMY_z%tsv z)~tooB&XqrmPKom$x6fNGS+F8?~kvpKU*(M{#ss#oI-A)fwmHz#YUQq4$I!B(ZGIU z*V_qX*EISs2Z5!GXc{$_9ZnN&mmcjyx`0vAXaNQ4K#js0!weFOrZn8fVDHW{{aD31 zibge@t3NNSleu)KovZoTizO5-&DcA1d9R9`oBFv?xY>#|7tPMNleA#KqR$3_D1{oc zDNeVX7FAf~*}NYBoL~oM*M7)7Wo8piE{3i3u%$BqIJG##I?iB#dA!MNw#i+ng#wmz zHtI*vQ~Ptu&8-UnPCqBzT)SG=VdrOefLvGpbK(L3PCfNMr!U+9*$&oww&_RH)BJPx z!X2jt6&86ma0dV<*wEPypyE|XOj5h1w2r~{&aMPq$kkeyVHsx=fE~R~V!GIEw#5PV z`D_hP^qM4Qi`}`x1510y&0V-!b6`Kt4(`x_#bweQD`REV`P}y|FetKjZqwGivupMJ zx$B)@P;BqQrrqz(ztTM`n-0Iba8^;z_*=WB{YG-eE)jy^t4Qj)ppa|Gc$MbCv>VhM!+X{yBw39&eq~+-W}LysZDTdF^;z>TX>GSh~i$>UQ1Hcc+=&lVU`L@fwWPyzTmhbs7TIUv-CSj~Bh1 z#C!|CYDiS~E%ZAc@q3Yrsh7B(@O$TraTI22uvK>~j5?mSd&A_`2ab9 zs(TiOj*kIPhFC~ppN3TRcRs+BH}lq^g>RVb1k*c4jJ_~!hQ*;Bkz#L5*rv#H=7U27 z-(23lnqQT$Zjs}Rk3$UKLf*lY-=Va`O5U$2e_~;bB83@ihmW5ZjStylC)f(JW>_6M zK92%{ir&j&6opAMOb(wvkF1@zcz244mHa$D^YRl5D(sz+bolPwFLFfbg)J8}EOJ8W zoh-&&D9pU6;(=ep@TEw;oIfgoup&ib~?6`PRF)wvtx8@+qP||)3Ke3I<~Fz{NI_g=AAjS z&evM?rD|2(*Zo|3@89O~%l4Ct0tC2=;SL&|w)hPdJ1frU%q7{w5;xX1oDCT}Gb|2z z6UWAmRnVCoB4=sl_~iM4<88+?=*{kHYo7K9{TZfzN165n{Y8p{bVo60&JL%wN_&d_ za(Gz9fvzJNG-iju;h5Pm2|BQYYb{je~keC1~*i*R8s9O83&vfwLnMG>de=Agz4?#HgkwzA0fHtDt^ z>G!QBiO#6;j=p`JO$?pcWSv!2oyA3+4R)RR=DZf&zrS>+?>G7oHb%O)^;{VH_r@iyDtF9W=AV%{es}J#%sF!Qow;&$I92q_lpk)zm8te)&(^|shUf>*sBEb!nnCVgIfJ?DAcbw>yq z(Gz1#OkExSXL{e@vD%HVC&!qYx<04Lvz2?Q4;AjJ-Bx;2}3HFw)?S3R%Vz~$M~y0}?=I;Xu~{jlV2-TiCR(;mDDuUmH0%svu$ zggdZ(bam(L*4?zTcy#yb_Sy8k{OvZwyGH=%1mfMsn~s-3SciYSVDw0vBsV25lib#L zceC%OJP!GXMEK7>hfP3ad~=0-YsP#_;Dm?QIoshmd!sr3%5xx_FK}{>HFM6nb51>S zF2CtPCz4$TxXpI%=|0rBt9M&({<;itoA2D;c(`zP>-O3NTzT$D-Qt_Zm*I~KUI+Y- zdhU$ffGh6-__*C}KsjgNdW}sK43O41_aylT7TE--YNY{`zy|u z%(ux8Oux$B$t}clM88r%z&*dbetda-dj|r)d43~;XGGVrFMr>5KVU3&-`oZJNvp+Wht@uvxIrp9ML;W-JlVFYLL;f@MbNzGo^ZxUhS-64N z0~xQcWD#9>j94{}M*^(~0gyfd;f05ZmE*WaP)!gTzO4r0f7KZkt|4}dqXL3ba5qrj z0s@5d^Bj=zl*y@a(cvPXC;}3M%kx|mD5>$1;KraZ0wRQq^PCjEtyKs&=XolSmEkPF zT0#8^=n(GC6KFyR2oWyKbDSZ!zy(56Q1k&Q!j*ZyW+*N2n&8%;2=dOcf%H9;Za|H2 zYo6B(*%8hitf$C26%gKmdw~KE@bAwva9|?G#)XFqfg%ft?=LfOVS-$%?{72kW+F+$ zmVu>&QVuBZZ!&oK+3y0m3WLr~hMH$bpFq9Un0U z$n$bx;v>mHI0}2mA(KN&_K$9(H zxqy5Oc@=G5au@IdEm{^M#jI+K!f@_J|;|L$e)3KhT(N48noXDQeehI_6KeZ0aIQ` z^1zs3a-9_*y%R1$TZc3c0H!>c(~$dt7sJ3h!xd^E(+ZOrGC6Qy7+Gh!LTf_+nDT5_ z7;K1Kp?O2H2c`^D>#SGk&k${6>&#c^fang)YsmY+$IfpD11@TOd_j)A zDI|1Y5K!tZ+`sb?=0NWbJTZ|3$>N0@D!H=&(mmpIkolnV&NDL1EHd169Q0@$tYukx z9D?vjus3y(5p}RrSrDzv(hq*NAFNG3cwK&Q-u)1SA7F|afZO@=AFRR}-Ol2bmOFnJ z$|gK8MFx3yHm(Sp08YWqAYcIC@|_zY%NY@qf)$14s~5-TrQ01_*jYj)`Lw zL?{-QIRQR-T-C@55pA*xoW%$$@m~cUirr=C%)vIQlIjb$DSU~4Igm1Vyc zD6R0CBiF7RAbhsS!ikL{16MW@2w4`S&sJHuvQcH=O-3Gw!{zB> z(??*6OBWQ+HduH71VS8OpDxl#sfAY^xg?HP5ItLB;oL+4r0*kJ#CZ#{XKO6n0Nh9S zY>$N>fGET!h(Htw4$5@R=YmdizRzwa~gphAT){O!z z=!JB%i$_{6{2eG8QFi@z>i`JR&V{jqh(8R-uowIV>RK)Dz5}`SFg>wapdP0ud{gW* z-ZfX)@^0(%YFR>pF=KP__wlIMT<39eO#rbhjg)GCKtTWjp4AYp>}B_(Ud^2i1+(qE z*L1SUd|P`DYj67J?dvWRG%F+GAwr{ri=iOs#r<@?db+g-^x}ECrM+e6^SDaXI-)IT z|K4%`x|FN!XYXPEHI8Tj@+Op8K|2h#IdDy+2M6bWW67X@`SydKcqOr|A?bY6IL7+%@q7$qG$Ub~FmOi_ z!l6*oJPB%8RG}Z#xTwNLxiS9aap(!cP7+@M@=P46lCYJ&DFQkYg^-p6)G-OTNsx>J zX%Ym5h}j5OF~Fb6m@W}fqXr)fvQfbN4{-*d$Lzn@5GEmE2n8#ksK9gQqn4r529D*! zj(k)7p{l^%G-qy2%&7vmD15H~z5vY*3@5X)Kj!Kp)_Kh{JQn;-U)P|4IIf6xUiA!z z1#c7h8Vn#(02LAzj7>;uNCdwTe}v`@&Y&DoyG)qJicsYx&d?mOxj^#30qF%1th~q> ziX);U7ME`wu)4Rar!xpglrC@q#MnQG(Fcg}Z=TLmvjp@(R@*Dj-CZFF#{`H0~#<{|x&M2k;C;1c^~!VBQ0KMf~!5 zTyZy%}#?6?7U)o)`T4n(y9S`7s2ZFjD(O9MO_NO%ThHUVfm%gaiZ@0bMzAywuZX2z@r1k+E868CRK8D=tpvrA4 zcM2Ww&K<2b#F|jNZLyWqyG2TO3=n*4U*!%va3&LU5dsLcAkO~G9r`OZcf78RQnxdy1{|7Cj_Qc?g)Pn?g9S0!Zpn-$kKlkN~6#%$` z`NH%D=nvX&w_foAhkU=e;6U#7^c5DsXk~mu_(1&pEeY^h;ea#W|8qbOTgaQ0We)OM zoLWLVD56PZjf@~JMuKW+`MUYbmTN65aF>g45$PcNDnUF4ejI-H!;{P>u17+!NRZ_V z&QWKu@Q8s4G-?n88Oex3P{>TYf(iCNBzSQ#VzPL}5epM|7EGMb-y`ni@P@=_ap5E6 zK-%t)c`509-0=v!2_*|$dh~?wKz#cMUv75ncOgvD$hbeiosp&iUNfdjC=D9!zeq7x z$UW0y#PJg7q(VVJH1fxg1U#v5kpP{@UKm)o=s#qNf*%WEkm2H}$n*swcVS zeur61dP&2qp1Y9 zl7CyAR1s{sm>Ma27+(21WBn;WX_@=YMk+f(TZCgNtVU)X*F3@lr1-wBhS~h!c)h~} zqI(FdF=s-qq@8gaBZMZ54b$o#f=*w!!|;C~l8MI^jxg_WIe`I%VL#-^%;OqIxc9oI z^@JEmQ{(*N#z!#rXq^z+V}RV<%NhOuWYmZ_3BZ?3u(ZMfJC8soYPIl&1-(}2QXzr`*;-J|kIY$27xoTF z-N+h|<<~Pv7cv0R6=nC|xCG3pr;pkLb~V7@`X+qKh~#1a695=2ai*-sMdH z7gt6R%qK`dEH_Vn*8Ir%?vJ13mUnp15B);>nN|Sw#sBj4J3F|cU z{x75fc)jq7flb&nq+!1XGzWU2q04u4yby%HVg_XOiYpd2@En+Uq5cBAgm8n{D-b~L z7bY`Gw!g$^zV29n7d$h3a=^^kxz53cfdeTsmc9?uD6;O)3aSlF3%vG4BOMdv@W6jz zV)&wBMGfLL&<{?Z)bi{*srrI6*eC~vG~g-wi_+i|jbZcARW`=mq8~Db`Cqh{ zlrRdz(Vi2tiGX5*at+*+7|nY4?`VyNni?D_fve0=DUtinHUetDfi7_k=7S-rI;ARj zy1%sEOTnr}sv7JqsFnR74SKcEMPmdFvZbKvfsA@go95}7{w1T+y8D&?4khq*egLwt<59hq4V&DBA zWEo6gE&msY)6~nan4iHtES7!(Y#9JJfE^BCWeop|I52Tq3BT>@jt3$t-L`e4-9)sH z1%}GM?5invtS-7ugv*#$GZQ}K|4-r{c-0$O0GlWPYNy{FS^&Lt$Au4_C28ca`$&p+{p=p0mM0Bbfg0_VW6}F4a4Am8(8e0U2nDUN(c6u{@rT` zoyb!Me!ISC0qX&@YjQpu&RtBtZ}NZUuUtS8=G*CQ2-5?N*Z8^3yNG;P(}TCyU|q!KVXR8ubBJC0snEk^_th64)FemZv7?NM)FDN12#q1R8PupI3M_cU4KY_ zr}mojNgLp}5q|#myIYliG6$wE#wXTih~HnoZSoJa&;7>UYr!XdP$W2^pgdk|Z|FbE z(|k{$d)|x3oyU{MgU8F8wV|}KG_w@=+n^mC?;IZ=?;oEZ?_N)iw?Jb41Ye*0k$K+JHR@}I>x%jI?TGnItA`I>@~m#AIoTI5@23no?zZ! z9${W#o?+f$9%5c%o?_l&9zz9UU1ptT-73X$$MnSX!1PLSPw`CgNbyp0Pa{mJWmzA* zcHrkj+Ctk2zx(L{L6}dqMs^d%&rBFDeiHv&1uDE6^8Cjq6+2e=V8M5t0};Dq{)@2t z?>4iiOwLdF1gcfz2Ms=&92NNtstx0N6L%J$rGwEM6E7z|*Vw_t)6v^KFIc`{0qs4S z2QGdJz|oan3R2#2^q}Qe&9R!6l8^p-UVgvuY|{Cdt@*6^PrV6Z zdl8U*f8q_~<{{g{(9XtK$OH2WH9KtTCsqO7Z1j;F1hW56qynnhNC5Ui@`Cyv_A&Iu zh?qGHTLzvaAk2Ui;3dpJ^Pv29XaaKxwsaJkkP#n>7}I}<^8Z(wd=Q#*xW|yU(bxJo zji28sQ;?;@O^2KSj65_G3}!zi7ewkdiZ^LM7HQ87=?0~2Ws_IYn`h+qP&`nR0)H75_sPp3Azz2JLU{JY6@u44yPv^8y$)}M0RGG47s72`Vz_WP#SnPJbmRs+ zXgDK?XQ)_M%C6Y1=`LrH!yw3D8)z8(HOeC0FuowX2ADL$pMc8Zne3bB8|WME8{ZSs zlhG5~ljKir4?Dsug||H`J7pvwVx&N#PH$w0rz3`LGvN=fzw4>qi?c4 z>YM4$hw}f7$xuSm!P6l+L#%;Y3LOrm1X3=IgODNjh&@BlFaqOklhBBpgiUBy`>Q91 zw!8O_N?o?yD)zkgUiMJ-;`UVb=Jr_j>h_%WZUEP1W_@sdetmp>ef{tH^7{1p7H=Q# z4DSf<3hxl!9>PP2d#I3k^zbmiDw;@h{m)wt!j^|<-F<-5hZ)w_kemAj?8wYvqU9wR_#=(VKo z?t6OZ^>7a09Y^25cKxt#Qs2YyGVYS^^8K<#i*ST9L$|HeC-`+4%npM1YtC=pui)Sp zP<-&%=uBM1)WqZl7JYTUcfJ;ai9todVB;|{5PvsN>dX2q`gI%}6XH937%VabH24kJ z4R{0?EqDc(8YCN370i{X^D=rCb{2XTU}9;3D1|76Ed5pr)%wi@*r-Jg)3(I1&_ zoUiuR_DE;fTc^F#e!ZVxKLbBP-;iF3t_4s0CO+FfVLlT-{QGD==ReHfrk`^kd$;{& zKNCI$KT_YzzX;ij0Ny!(15aF_1_>4WaWo$I?gA$2~3=i%g&>EwR{bo?(w+ zo?*{n$YC)t{zCuR5euU#BQ{no>`EMKY-=2KY||(wv2VMSg<*;lPoeeU_38DQ^`Z5t z^|AH2j=vq_9K(PHP$I#&EB9WlaP>Rs$zE})o(d>4K2Pnn4da|I3^PJVwWjyblR z7))W3KPv;1E0ZgWEAs_Q3sVbA3v&zW1*;u1@-X+X=`g<-u|xbULK`#)tOYFJ*RRX4 zXWpjQp?Ceu@+I}v7lmi~dtEZP#88?6qrrazNrn|nztSkb3w$S$!2?3_p*RCkh9z}F zbwzc1OwMT(-zmPcf2aS>KY^Qq;u;A#Yk>Ph#1b2!)Wf3H(#@i}sk6ze>9q-}DU>bX zA?zXTA?P9LA?hLPA>bk5A%e1S)Dl+fJAF(^QMrXxMhK?7be^RpPezVeUiKIF{jVsa248~jk?@e0 zerk(amo(3)%`eR?%`MF?&2!9f%yGxK^Sr5n+Gvb)EBaTYK1Sb{T2!k5&hT-U{b<3)KC}( z-?5=+g)zz?*$w#8zE}wpltCfnp|JUf8=$7a15I=PGrnx`jkQl^2GY!b)d0}~iok#& z4eB89n*oUi1ZJRI9mMx<<9$wbU@rd21{fL$FHXL7kUBtD*>WIWU-UMm18dti05=TY z8pzw14Z!6&+n_*jz#=FRsxNSx_V zmj%Gi!vd;oAZK6ZHa#+!A@Wy6WN^nB@J-0e-__f?SA>8%@kIav<_ZN^mw*X;1G1<6 zSliN97{FZ*yyqK0o9Y+Z1_uDU5WbMTzxDh5`t1$8@^~qJqe>hLA4?vKUKie#0EN}X zcZGMQ@Okh>@CEQC@c9sm0W>5@`RKU8axlg4h47_Oc~M1C1yLnY`BBADg)ZPiWA0Me z!NTc6=@L5%l!}zfB?=`CGO&^Vq+`-XrOfD!63-SvNPKXgIK3i!=|_PDKY+y`$vxD))A{ONV+zhvC!&;{ zilX8y`JrGj=eTdOU~S(?sq-Wste`L^m0(SGI%vzc37bJrJ#qYGgr7zNO#q8ha*iT( zuhbZ;VymK&y;;mms&v6`eoec3X?sGI8&bSrH@dMyY+MK9T9>`Qj^R98HEFp!O|z~2 zfg=@%U8#Ed#y@+m8tI^^`x7XFqwn;!lZ#dIP)zPvrRMcBuJlFEt8 z3AreQ!oi+(UXNP*yG^#&}B<9%eW zrQEdr=`Fob|0LMWo7;}k&~T&a|+RM$QCC#G-=+zuE1j$GYvn)E?Gxs`;8l3!D zB-^!`rF|$rf-YMBBqt>Etaq@i3!2Ny1;4lN#_k$lq`zH@zD9Czy^oee)GwxjPCC{R z__a2#@se{@F*3N9MvEI%iO6;fz>LZ&_%lv3dP8;&4hl-6aS4J!pqY_5M^tWlot`62 zc*$<%W~sUtxQu zU7VlUmGtcy%2b|o5y_tm6LSol(X3k>wW9{+`Xl_hUDbDblUFbGAna9bQM}Z|<{-3* zPBM2=5*6h;gp$S{|J3Yj8u2EjKh{x;X5uW)E7ISPAjnJyKVH=hz1@w2%W7@qW15Wk z(Twa5?PHI=YZ2U%niVCK!!Lc8c282txgk+CB5MTqUvxG57zF!-HT#2+>gV%wuw}Ss z;@brF0mT888toyY8{#F*B~ESD7V8{pGsj6n8Ph?^Uh7*+Kp|h1Z*dRq^pf5}&*Ic# zHA_)CpX7y!-);GVdO6LKjdp0()6fw#2~74 zla~cfB1vgl3Lmn3olYS2R2nD+i}5SdO9WC4SWdE+$5I!SM^#iaT>Z)!->Fz}*W>No zjSJESBI|+RHx;7#VLc_L|*8MJzoX>KI z9l}^h#Q|Llx*F7n*EfA|RlCTv;p3mKlu%-Vsct0pv|SPZMODKQf=u8a`Bjqx>}xq! zL(il?e*I6lT9Gz;SdGfy`vQvX8wItbb5#xKQu1)?P z6HED#l*!i7&K|TAId=rU?38f~$zs-@f!LD^ZsSpte9bvzH;Q-ta=C|CQnH8O5wf*0 z0`ZJsvLb($IDGk#_#do+SweE;RPl+UG~_CR$ys7@ROWH4qndj*PKY>iQxu2shf%kq z-}Y!;HzVX5g7-+3O!Z|LNX#Qs6UImO_h1tw8zeYJN%TeMvvE#@@;alXZzKe8gvAmR z_j2*S(vX{n{2zC@y=^07(|IKi36cMnq|#{8EV-)>Y!4i-h;wMcEY}@5(}ZxOxNqlb$+CAX!}G z*@80=YrVl%e+=UQ^A{qqEVYOsW23?3bJpJ(KcJc@pcYwRGQ_$jye60IaS8aR2sTOF4QI#>lvBV0cjqRcF@Y!PilRKHtdjV(OLmsGI*8}?ms*2T& z(2V{UnO(>6o(1!zTJCy}XH_G)YNe_gwXGJN2FgRRL^$c!w&4YwKc(jgF%GG-7|<@| z70ERbD3ouBY4Hu@yOsjQCK?ng3fR}O45YitH;v|4`1EgzDm$o&;CF5^ND2Eb=^o4` zKlV#KVU7*7+|h0GTvIHC=F$TCC&$}QX;+x1|B2CgS#MzFOkkypL7m|% zI5yr8TeBSMU+8>jhYJfxI|{F6TrG34yz70;6cDgSgan1G9pFtygCZ+b&WY#CTtxqX zv{LaE;8hXXU*`OJ$m>_$7R@F+azSaj#$1#W4S5 z$BLkm5BHQ@NHQwDIhB3;7l34HOE+K@9WAJ?nIS#jFt5JOaHv$#m|2E0AyH!LRY)l1Q~B0Uc>N4v3@g<|gBTNd3x+;J^C zxPd~9e}pjAFLuMnG`lv5jgW`(G`?Eh6S@<@$@&YgyMy<#A$BE*X6c$oUc0rjc)FzJ z^UlMxb0E7VYS-Sh<(I*hcnpfU=NkcBZq4nGb_(uCu4S%-C;z3y7WsBeH#%#G)|ln! zE%qNYo8-n7oYpR$UURYJ72L~J#6;RI>Bp;~jgijwnEbRIY95t0^{-C5#J(xlYDU@5 z<{wKpzb?v3QVz84Rrv?s<~BQBT{0NovDB-Daa7Z<9bpcpQ+6#G=UbL<@nYEpkwql} zqGTUz+eK?!CosBDW*y*_E8?c3qSfEkJP-<_>Prq5Wh5DFdy%?1h<2Y^Eua{x-qFu8sRr`sJ1gU*T8s*) zyc8{5Xw9r_UVPWR$eFLp*Q7nk$BTR8ra*R2o8z{pEA4RqR(jBjG-{!CLR~IgUTR}+ z8?gpHi3R`l8IMc%iNjZYk#@1}33ISKX>38D-TYPyc9-t7qKAV!!nL7-3#lC|n3V$M zrm5|&ExSVdWIO0|ty9Y~fsY2nM{#dwm7BF2)6y<9dX+FYw_}wmmwhK7n%ptdVXE5F zB85c?ueyAQ>Dq`bue5`c~0Z_%Fdo8$Ta?xUxyT zxj%d>(fB)DBP8$I9_3!Ga}F(m8l8T#rb8$9?~P>M?CA(<72qeIUT|u0YLd9e1?OZX z(AEvY)%8|l=_T<@ao3!1I+i<@xEGeSd4nJH771P0o47d}c&nk-hhix8V?Jq%rghG@I9g8M z0`Hs{b~d7~1L@acTbYpv{$wAsS&0t)x^j7$=N40~BXws~H=9+XLz{a%xhjt~v$V%g z53yBY)dIT+LF=|SOq=zLL}Q};l|zk0buFg3)l!o}x`}hEhAQ1)pGfqlxpM8ragvsg1afqH-T;K{LFTU^3KFDagu_@~KKji-+{L z?^xec=P$KGRUsBz?c1hdF{7}&(Qs6xY=3WB)#2n)#x`_~b*nEFY5>)51$c1AZinF> ziv{#^3?~tHF0XB%oagfhxQJ3Unc5Wvq7^o+?18s_Ez&zQKV(1jN@K%GqWQHU#REl6 z|GxDuj$jgowi9V(tOMHvC^Z4z1na$!8(nWwt0V;s0{Vuqn(z#AS{Bjx3Q!T-5hpe! zMX=e#R94bti!*>u{>*UFTzz4V-&VbAJ5ezDpn6t$sV>1!Qu%qxEyX$q8$nzvi`D#ADEpi;Bm5U^<(O-l>ck zm1X8)_GF7Cj_*38o=vie|JE9QYYbW)8A_YiVAWWy3jNOb%6bVEi+fG}&u$OT{|7em zyV#xbPZYm!9E$Q(!~{#DOrU&gYoT|6mknplGh3WW=%k;g0pVmgQw7 z!R8ycF8+SIf*!F$`L-d-I*lVDZM%8}?Yd(9;(h0Z;d{kFG0454l*hlyIChUR!Z;bF zgKkuWzVdrBj;x1evVkpaBke_*T0$E|FSxQagJSRU9di@c%Yk)d&)>CZf7Q+t9u}l} z`-V^lOfj42BQ$RD1$mjUQi-gD#e~KLMwS>rW@nm^$w+kJITnv#@sWqjcrQM(c5G1A zd&zS#sQ&3N@K$=K6cm%BEn*`XQ&dEP*&!hTS?FFvnT z+r>M_mOWT)X!^l*Chac`wL#H<`y0K#{si|RgGI5!LP&g1`lSx9D5*-8FuK=C<6GVl zHIh|?U+mM|Skb_F%giacF21$I!w%krGrCc1@3BkD9ROZn_wUQ~ZW?z4XeGzdSml-N z?=R68-4K$JdrB_m1tmk8);nn!K+zC0g@0FyMNU<_qbiXG9rM+nD(V_Kg_jAZ6#M28{R17{IsdB3oM4Z~SN6#0 zTvORA_nyAF`uN!-##8VCJtc+}-V!b!d5kL9&iLM{i$0DnS`WTUNi(0MjFzUv8sC%?~HM-M(?cvvjXHmW%+1NPh9a_fE(w}hxYby!ZHUdUd)6a>o)FlcX zsyylsYB*)g!?&mr&1m=fck&6JB{uT9@w4+B3xv?{E)%2g8CaRM4moa^YKS!@OXszh zRofUoRSIg&kvN!WL}cu>4c4&CyZYa<_{+J<-IPSNvL*jI=h1*R=2+2Qk$6&j;y)UzTw1I@qL=Q*KdoEkG|WrHO(s=c ztY4_0$XTxVAU8{~S&e~rgSrzH_Ct7d>n8M<-)TwRS(SJdysyHY;Vk^KU9s3bZ@giA z5vz^NE1H+?#nKzz^G7g2_WBqe9qK3?#%}Pb=(Omc2K55Df6hvsQ>h=F0OH4dR8RL5)tR=gK2KxFExENJ!maWisO&>l>7PO6_#+<)yvhF%B%L~p7LR`?|dnB zNo|f38W=ZBCW*6G)A!zt@HBOuI_3_hNO_l(3zj5e>E5G+#)j|A4r5-9#B||;ofY)T zsioU2a{oepqqPkE+4nr3PIIDrmB=30DCpGVApO033%4+qaT}dExXOklv?&oWf45ij z(T9O%aro$F1pHw0_}PT_FWBD&&?*Kq#y69#mmdvb-zhm+viAndTr81PVKk-e8jH+v zq{k#Gq!;Q)oYJ;K9VG626}g{fm4rJaT+i-Sq@2vW^DmNWbo8q~)wkv~LoI%6`Assqiy>gO&iG!IHg$xSmSxOSPkWRMtP zjAW7>RiMg##obf(wX%!8OCtQvu-fjIc`h{GYr_H>4=5UzOLE0qK^htBUrP*5oX?{q z&YNW`A`CT~(hrpz;ulnhEaDAFap&!^?)oa88yLoa_s&#;f0gd~`ep_Ml53%#HYHm~ zBgMZ~ASUu#buL$%xEku3otrWqO#Wkisz!nBSM=B7B7P|^6Lk&hB8^q?Om?i0&9K<$ z`7EhM;*?!SYaeZidI&zvHk3WrN(p!Vb(D!PL!SJle?x3WV;AOn-}cv!8qAQiO=%Z@Lbq~ByVy~(A&9o*p6kRSaV4tt2(P98^|?i% zd~A`jEmeawzD7^cw#^^X<=&d*@;m zxJK3r=V4u7>ZSDOE{l5fYvZfB?dRKdG(!pNb(a@mY4Bs%78xy*m9C2M-Sd%i!A`^K zO>O;iNBIkR;P@BHNx2vn5k#-q0NC_X(sBp56UZv7TGtfG3bneFI-)u>58VQVe0>+F zddUl=XyzaadRD)>?D6A_(y`2JMtXFNdwM%%)SV8kaVr@!wFWS5m@MhNwlI1WwOL5T zk|9cN8cljHYB-3sao&;XzjBJM3ZEhcCu;YmN`$pxf(3Xby+7obbts5%s3_#+dc-0o zcj=cU?ZyypDBA}gmIWw~=qj8yfAu&A>^qOAc9^wS)lej-(jhFiN`##e|Caozoz=(* zMWV=(Rfr*nVN5PJjKfJGIBBVVK=P`hx&WfQjH}+$W#KKYG|H1Srlac;uZf9BrB5K5 z%W*kSId_Ch7kRS3Grp0%U~IlTy;`B_kXrVcGJRI$ZMVXx6vW$R3-1{1zG-!|-DR|( zqnB4|HTla;d*g>Oj7i}3GWTghyQ-!+<~@8i(jhNEOa-S8OO%jn3@ITxXMiItKuVM- zKcXo)osgSAIsR*$^+x^0xxpEcjEeCvJ}~hWK=$WQZ>Vb>d5ZQ>_AdRZ@e}ExpvtT% z(i!bZdFSo)8&y2ODG^*A@)FP4MvLza!ur`=v|J21=ye00ZjhPw8ehdg?d(f>-(23D zJIYAj7iDHzFVWAsuO&jv^ryM=MdF?DK-*v0T^yU?Rq8|fp~;s_v;9yiIqSLWat|qi zyq0yh9i>1SF^N06Gu=<~2%|w%k+hy#twqCkQNf;t9FyFSlc+9B63^5+^L9;uuT}nI z|Lt)~x_B96v?PCVJz_hyQz0{NI6qW`*241lW^DeVNHx3wD}$$c@rk%tsY{lE4tO2;^)3#Hw*hsn_pSEI^9wTo6&TxA&guB3Z&sRXX}xWq4r_v5NU%^ucWy zXc1!)y4N|x&`q3)$*XOtrl(v|HmBmZnDO*4NaGxT!}4AF9XW7_X{BjcCFhOGBSSPv zD@`qDbJVIaXX1M+y;GB8k1I!NOu3GhN2ikNuWH(|3@tp(Q|Zshwia34nKF5zY{v~>womz4q{FwHhA}R{7HW2W(@{*%sR75W&aK^M7|&m< zb-c84>R6k!Q;|!n#4gb-wLAM3erd{vy%;`?Do$z3E-xJ|6D#MJMrcx9zhovbk!8FxaKt z#+#gEoW%u~_?CE zVW`4`pB_cN_2)*>j=M>W$!d$V_X5p7=;qmv#DGsXH=j}@Ui{ctJ!xtDX{5i;wRfbg zaq=dsG$xlq(cV*X*C^L=)2QUUCYpzW+26Jj*G5rcO50t+EFdqve95dMzm&F|CYnN) zB2E*iEUlDV>NbL#bU!Y@(A#2>fkx}2+|x-q(Ok&0lznEWp85A>$cw%Ue?xv?0Rjwb zl8U}|uCnU%>=ITlRgca~eYW7N_(Q}uHiBidHM;Ui&1cp}=tVQf{A{$!7{O5gfIo_9 zxGNTBY1p#1gx%zgA~i{$hO;eYXeuHzF~gidJ-eGF-_#AnuzNc+d7yUdVQo-CW^He# zt0p4(mt}qI;(q+J)QKn}=Wn!PY;(79?rt$0gj4=osdwj1%p&JRl8XUUBR%LEg|z@C zT#`qaLD5xBR;gN5H&)Odn)N{rQLem2t{INN{o=X{{47?nRFqNldXBw5-xA8^(JAnj zQT0Rnc<-$;X5y;&^YUTtHp_SbtsyMH--dDYP!4Tg?Wh6F97m+i`MZ-m@uc=eZuiwVTAMYY;u()lRt>Wr+(AP}5> zOJr5^srC388rShF7tT0BDe_?)apnC#KY45IklT_Qs-JQZgp95kVP{A974O+Tx|)u~ zO*^-=tgn2|?3bxFO(b$ULk0D@VjvW03aM48N#+fY_tBpVH;bh5$M(8L-6pT5tR{ZV z_B7ZUj;r0ZIqMB!UjDB&cGmTRXllyQP#UqK>?fqU8NR&uuZ%H^F zcz#rcWd|S(#Iodosmmyd56QbsI9`?`L0l}yn%%nJlCc!N`NE>x`U=F%S6oz1V+&%7 zOejzIWGSmTJuOJ6E*Mz`W|d>4xu(UeT4liuC_XgTpDUXm*wF984G$4S)}nlqh=Tmg zy?!3&Ch{N)7H%-T0jrjLROIB^6+=8}(`Z?5E{(alRRVb$o8pU(?ztQyg`b=xjVZI) z`fWBlu%g<&>#FoOKiRyF81=C?Gei?mfEcP2U7VwBqT)-bcGz#qf@k%Ovmyu_1$UJe zV}CW?6(&-qQxz4PT{?j1PnE@Yr=rKy809>THkCT+N%O{1KOW=l=no0(J#6?QQFl^A zY4ConzU)i-CA?_BMXD#C6z_}8HLY%{`bPXQ3Z=uO&>eHP^h)j?XfABgAMBqCDl-|i z`<2=SZI0aAO09OIF{hYO$(O;(+S?|!r#E3WemZbEOt<~H_bUD@?KzH%;f0P;zmOa2 zLi64hb( zD@7Bt0EhJ)yXbLo>dDmdq&3$dkm zjosKulQd~;+uE_MHa6PWwrw`H?Z&pvZ{5%He(!sdUyk;{UVF_s#($1^U8XupP1aSO zboL>40e5K^+I79kMp`M?OSNTL0~y;V{SgMXd#;!t6yR#FF6amIx@z0U%1zb|w$)UU zF;qr4cML0C2wyBsOzRXzY4pMzGi$qO$zP4#Oy$&&|3%JIIUZ`fZAa{o91Mwnr--5? zoZf6IC6rSuy|_Dgc=LU77@Z5a=dg%e?nqkkzt?}_eep!nP%ob@@8f`Oa}1$fiR7jr z>b&!9_*~gG|JQ~*4)?(C#Vz9++--xYNUX+Buk;N1+ zhF6Pefd+DCNt|L&BJI*?nV%(ZHuum=>6H&xu$pqU;)&Msq6A2inM&Cf9YxJfGswHz ztY`eedUkHj;6KC62Z~Nd3Ys3=9vWM@%DdYp#-B65?4%NeJ=A~pO)vIyp0lY@c1lNa zF;D2}&@fwFYM*LrbhK`C|Bl08YxK&NPU&j!(lC``jMo|%-!l%#hDg8i`<3DnXH=V) zFJ0-8AGx$SFM;oatBw!9OK%);td6lxXiGJ|K)Z8CpBh+Cyl>-TaVx*iidX=B&^sR& zG<&`vm|2GscduTcE-vv?#d~RrZJcw;_Km_e(RJ+m)Fpl55!$-syRC|jj)#!>;hkEC zd*NGCo+Z3?{J@S(HiL{nYUj{38P^P+eqHOl?!V*1r52^pe9NKPhDF-(5V$6Xd>WBD zc{eWgDz&m-X+AKfJ9f^VI$89c{u|%)Q1Q$tLzDGOpNF-WRv7fiUa27W$M$bkZ`BBP zrj80i#$bXS-HqZ~S@vZIYh>;0RLO?a4)~XNqaI0blKW}ZhSf(q$JFS2T~&HL-{td1 z5@Ir9Txa>oa2VmBIDbqfA2`Lwt&`hAnC^S}2$@7!)UtuxwHESd=Rorc3ai=1rMfdU z;S160-KV43JXl^na*dds)Sf+{WW4*$VdX})6F;jj3(adOGgrq) zYe=e2soewj&!Va9q*oJAG#|~OJ zGqqb^PUjZQE2nfo4V^aL3omW=a;N_me^y@V2sHTEywAV1-piaW zE&A$oHTu}U&qz0Y*t{>i{JmE=-BcGaXvDF7|D5v|xcYpUhI#V+d!_f{`vUv{QGZgx zft3pK8i4J9i8i5mtG-> z{GtS@bJ(Y$j}TlS+aSRONv9!?;O`(jAie!M1qE^hSio@MkRV_nMf^xfapAy2Ainvb z1VQxqZFj>Nd}TqvJum0`f(z^S`4<++p!f4)z{CK71v>>s7S;@m-CwKo#TkGAFtMPf zpfZ4cfe7~-=*BRhtwGX6sQ^m>L%c#h2E*9`_acP|gUSN~CxyxbM<<0b0)r=oHt{1= z1gq_gO7ufegv1AZ!ux%h2KNA=h<8JMg^=p}I_?K8d2Jd8^OWTv2onRp?8iV#uuPmF zc21(Y&-I<=+fmp119KC2;B2W%V2cm*JdYK+E6)8V{{kAuJVlB5^cO2h2TE6Mw5e)m z#pIm)`2|7q6Kw;c8scRz8z@fjbbrQfsS{3vA2pE6@PM%z((|Jkbm6lF=79DciV!9W z46nlr;M+m+waxO~YY>A5%jVrF}cULIaudZ0G-&~Pg8C(gm3!;icl%~sWJ*x_JPk1kQ4*nA=0V-|Io68Jq$vns#op0^-%U3lHm&MS;0GSdP(?+b z)Lt0x;+1-?4I|(&spYcRu&@4#dmrLFk6q|wW_B)gj5qVBt0p9KeVczy8f#u{ZctQs zT~yzE`CRry{hmH)Z|`;KY!>AMC4^>dmNMgc$2OA>D}>e|rT`Z}8kSWuli$2`w&BV5 zH-a>5Bj88~Z4%yb(l;Bu3+v*t^RlDs@nh3-lUHH z=gpz0BvNbG@@tTCYZo$Wt2{olI>qg-JVNUBnE=VkUhisA%wF$d5p|<&r?Onb_wBl= z`KGuqnK3z5t5bMDIZmYYL+Fkx9hqs_;D*3dx>x9xdVB#DSZ1)-q zRYQ%hANejubK#YTA2yMqee*r>XLZtN`cL?c)b20cFuGeT4uszkb)h<8nZO0W+J`c% zi36$+4W2k-Qq#Jx__n}F!2}?q{ot-}pP(gkn!Or?8;ly18=PEBa-yeh?10+Ms%PwJWb&`_$MdK4clS5;C(LenI+z@PZjiKj;(d36!E zT&W}AvALW1h^nykgvFoBRalj0}JI#?XK@Hkpx^FiGdr*<>DPU z)1JHb3r}(!X5f@6hhS4`#^8z+uISUG_s+~8|MD5&UhQ5n%3bx#e;N5rd=-E5w5H1nB@x1O5dZ z(T~fo)WETZK@+tCi4z7kfU)E06YL0%f81~#s)l_!3$y%Ou^j%Z1;0P>E8QN z3;8B%RPoaN4Le!vGpejhY~e~K@5JS@Y(44|9Y%UV$=OoN<*KBxPValX9_dk77CIOP3~KGPNe0+aD8WEO3x z?=(lRBxpfjhVnwP18;)xod|q{_~b=B@IOSCyRK72o(2cWi`MfZ{UH8R@Bh9L$OA?Q zg#upf7wXUZk>CBZ`wI*Dj66iK-&{8y>OS1jBj_r|XQr=BfI3eP+Gi?I=<}Sg0SDp| z-1Hrlx7{8Z6P@vd?86b|K*<4QMfmhdk%v6>+f1aR7^>ZG%*a=wVUt{YM?e3Rj2eCB z;3ZqEVd@R^NtS2(IL~n%F{eVQ5Q>Rzn;hC^j?T!z;Yj_f(l^jI-ZwlHbGdKd?Nk5L z&Ond{Vf>N#(O7VY|3%(lz@94<^D(6B=JMuptd)}R#{MqUZ{nl!qj~n{)1!NsoM=Pl z$NGo+2lR)XLF|0qXP5=LL9TD?r}HOkpkrBMq6B;+~^_@$oXH)Kw-?j(pJercJol!BCd z3O=L;X1fcR^x;2-{^owZa*6QWPYTKDT;jRhWvL-w9?#!oEr6Ds=fm_cO7I?0=e_oG zO|uRMI0VTby28>TiIbclZ=DtEd*?z9OP;Y(pvPejz_P)e`D7CzzJMY6i**}q-EJzj zAZcFY+EQLo)*xt}8#*)AplG7n3=3^jq578U>t`7JBu^3;)4BjZLWgq08^G`~%55mtfDE z!EvYfQ51SbMZBTV3FZ3R{1NjCE6n{RxDzVSlMnkZ!Z;YCf)FjLr|*Etqz)yoN%kYT z0))~JzVm;(+kar%0@k~WuhCf0M0w{GU=@BndB<`n%7?gZjx7*-Ec?WY=*lO^SZJ*o zE9^nbZ)X`1!$yHg_!~2uGREfT!ZWU)z3Y(#`aPcVEPqpj>iKnYBppwnm+1mtr{Pw$>*R<@59G>34iFlitVn=z{fiviU#9lHKc)dbJ2!_}b)_*D51sIce8pvl;CF0! z>G#RedLFJ@^{&ih?Cbmt>fe`*9{ZhkYFMC)l5G7;R~~%xs^yI)Zp+F2%6%dcoXV;y zjW~JC&s7jUOcbD)Ea=XJ!S6vk2X-y#ZoU;ocZs4L(hU6+v_eS+!DcV%=Jz~yA95`1 z4xzr1~on|pt3$w=zkpWV7mvqoBeB+-3%j~$iL>V%5qLwm(!n4Du9 zp|Dr3t|)+VyfvY8_mWGCGq5&l#?6>Fau_3H4CSS;HG*A5Qt+5u6ns?@44wIXe#+7| zx7`0gt(ml}H$?5$3{U)X^O>d=)8vkC*967iQ{nzT3*l{I2P%B?7j5`;m)0Az%HE3s zszNNiU!;%9UatYqcLs@A%*^;8^2a-@R`TU1E-@yEBNCa0y7xlsOzhbz^+kgTl{muLD-Us(L zRNg;@=paA)T67N!b*VlMZo0z84C0tavJ>_eKK%=HrCQ@}zV6G79;&^gq21BFecFI_ z1eS1)GE^BVWt5i+?4&Ngx+ANC*a8O|MU zj_r$m1Bd&L!HxgSqPFv=0xYj<3#1e>BQv3uT1AacH_NgR3N*hyeGhx>cD*? zvM0S~wWq!3YsIp(Z_Jz7;PTMLfhyf* z28a$|PmLOtpY`$%Kd->2p}n-ITfU|o#UbB2-70U5@$^9Vh*ASTLz*kjr#f6hC``RJ zGJ`zKw+ck0!5^QYKf2F5FW;wrbW?nuqd0UV8^yoqWPgage0>((bQ6rmjXk8kH``m0 z^8T*;?fzNn-Tb5V!`%l)b4ww^3ZeVZ2VQdrbOJi~eB5lX5&L+n+VA-A{+PBe&MW!M z?)dq&*>?PM$w>i*&IM5LH2bQnY+*vch`Do+Imz0>l4JpW(|N)hWZC8yY^>E;P_yK0J5r z)o*VuG>!=OZ!Smfpyz?PT(+&-x!gnV{lj9B-zsJOq8rVEV{aXG2&VhlanNthZ7(0A ziv^!zRWBc?O7~qHDxcqNlLQZcp*F%lbbjI#p}cvno`Kk0-w!S8&DsAPTbk^ArCGoE zb?>!mLmiXCDf8xqzX0OqV|7nRbz9ht++lqmuw-A@y{OHg%@TY|`%iGnn4-Pf_%kR?$T$Ds6U_?7Z%T=s=#7ZO|L(8^4~}1A0_lpm1pE>Fxkn)X z02}!K_XW6i(FGWO0jF#uZv^%;q?MCDz9QHgyA^`}l#&XjR|x(>7l~vJ)xWtwpgudz z@X3?7AG$pNKJNIFfMe?LF5473wUl`Z;ltzhC>XOWhxrJV3OYW}-=NCi!XV3F!=TgP z!@%EwMU&-8x<;|ap+@p*!C=Oq*5G=}x(A~tu1C3NDX=h*wuh}}-awm$Pm@!VDFuBT zDG5~_P8~@dK^;XMUL9E-Q5|&=ZV_n_VG*Shy#lj>paQ3Y#0JdvixMPhGnHE$q#bKyJw{K#j_7}2 zLb1vE4LkD`7ds$${n!P&boLIIy8aFJq&29;k`SxRz)eZ1F-k8eovKS43_mvHK*f%cFc`0zT^f_JZ;l8vuk-F#0*l2Mw*4C7gYzx`#<@++_kp8Y0RGtoLosy{o%%-{-pk-!K5LdY-ZH`EoW03H5)k_JsS}l zV;g51YnvsKt5&`y_NE_A)J@DV12N0_H0Wa_PZazl;-G$N%vWx@esU#Bv;MQ?@Fy4J zmD=}Odm~sQSmRKmSe&b8+cSqVi!;qL(KFRE*)!cU!!soYjPL_590jAUL8gADL8hUq z{;C1Herag^kSU#w?Dv^h*B|OsSLFPcgFb)O!`Gwv!jR!Iz?=#{u(N;bEP`E~W!;Zm z!GlfNgQ%}kzgVmn*=po?M*oCGCg$<#59MaPoErc!=r#GM7?1=R1QZbRcyms_HO}O( zcES4H8tKLVeZ~Bo1-(B|XWsd~oo!6a7Ix2?j`^9of9URi*w z{tfOjX*fW0sdE3wZ~IBe{M9S2#e12QI_@(TJ7F_9ey0C3{r{FMiKiU z2*FInb;S(C|YDc_Co4JUPWMq zVMRiPH$zZDqk^JBIuVIbGm$b8GEp+&Gm$e9Gg0;6^bqt=^x*Z7*WuO?)=}2s*HPaI z{{-dbf`p?*6ohLPd7*^)hfyg-T65MEiD{Sf10q? zbh;vY3HLmN6>ZAtlBjMUNxJQzj*1%V9AQ;@lHnnf5s%0Dy34JWxdboq+)OEf*8e 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

%$w?AWMkNnaZ}DDoe1tz`yM7oX){Jr< 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

t2aH=>I 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

rZ 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�K?PzO0@n2BmI z-OJZz#OH>mosdrb#01M{$SY-h^U84C29abq7nVU;@TRO$m76K3MSk?xg3^${@=Jdi zmK@@)wjXgcD4+pY-ucKNHnb?YSY=D?MXIVBst`v+T(wYWZ3X_w6~^dj0mJVDu~7@g z3Jj4^UQ!06jZ&fw$p-hC$MJ{}^PeB|*LE(xk&_A#<>d72O8h3zK#?a$qZdYS5oqzS zSNIWmr>xNYW)c$_;;N8ZGG7yNT)!f2_WJ3CNEOk7FB&<_OSVfc#vhkX(@`4EsS6fX zMopz~1o@u4=U84mtUw~9rrhC;eCk*pQ}ma!d(B6RoF|QEW$C*#`L4~1n8_;;;>LJ{ z6O??Hrv0~|_${>e>7`ohMVfi@Ij=@dN1InXFpW=9`RBh+YC|kZ7#ebKpIk$?KT_Pp zU*;vBzP_(4CYDK!_cd9YdE0+Wd@1)P`YnJm93SrpphtO?tbGS}i3Qt+YSdrc3JLK) zIq}7;ly--Z=6q4jLwkerjI5c=;3;DG{%_`LB(|bOFui&PFRGrp-4fe14|g~ju)-o^ z?lZp~Dr6Tp|4|V0A&9&ubvJtVZ;c$seA?>%q<-FI+Nu?ygoTJ(h>{3t6YE#G{=j>y z_4pT9LeW;7cLLzEC2(@F1AH@=%CJsXYC;UbX57gz$NO++3%1H*(O1O_vvJj3C3E(y*)isd) zB5Vh5EM!xVStRY#J_Pu65bDGGcZN#D4M>+hCeQCySRd67>jqp!f2?oMnTBq@JNvwq z>z4DgRv~76H{iH57a1qpIiV9y|X4ic$#e?4No|XALlO?lKJ&&(a%g2+81^iDJ z5193vO$Xd>e>H!B{gk*QlIq6il5rYhRwCX!Q&z`o-08aBZ++Ah@syD8?s;&v!kkyU za@Zfr921)AVSpByF}zk|3q|}DMq#u;>gZ4Ll;!Z{6eYo}v>+izFKF}lB|4JQx;+OL zEV=UuNGJdU`GETl91z=7un=Jm%0A2!?7ss8#Oi`GL1==~4Ig8Xgz{n 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

VY+! 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 *aIi>1-GmVIkT!9-1|h(7*qB;sFw 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 z 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�!Tq$N+VIrN`8zeXG1B_chGzs$Q)}r29_mT} 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

hjZA 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 KK+~{@ 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

Ix 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 P`foSurDcRoH52|#<8b7qB5^?@?h2D=b9N2 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�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¥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

!mMA09c?r+G8_4se89Ywc+>Xkgo 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

sxs_l6{-dlOp9mv1}{9ORGN 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≺(j5E3vj?=a-bQG5|VdY2S$OT1}vj25N` zrZyN4z=ewd>7?g!R0S0LxqbnLLlZCzmf8d_;)Iz1Dm`I1irdT6+FeBh`NC6w_^pY@M#g`uN;=-WE5rDVj z#N>kSbJ31>lSKn=@h&i?I;m+_1TdIHEHP00bTMg7K%S};0kcRAsA!yNMJTu*h|{|@ zt2;mcY{<7HHgW3eoV z5|K%M%nWc?F^3yKg6RR3=cF7%V<`Z*oWBRE<$FT@KJYLnT)C9y%WEp2qAOs&2lBrL z1iFSyc=uY{6t;|`-$WdWD8Awhg@HYw^<2notM*V}K7+y!gBci#905m>Ge{W81yte0 zWV7%Z#C#Z*c*UCdhYBMvFe~f?lL!d2z+Q9iDSUl#bA)WgA5#Lf^7{#4ywY^|NU6BI z5#R=XaK1B(U#A4D5FxPzODGPQf=eKBho6 z68aT8%%~FK6_wW#A-l?_%lmI;93NW0!m?2J-MFFTO{4KHn(P)r;azNOC|N9PKi{n# z(QvbTGH>0Fl8!R$r;GWm3>C&5i+LmgVgF<|2UyFR7=nDvNVKy==m}|1bFP-mjep^jb(0#guAc}6=~x4WeLdQ zs^xSZ1^>!23=+It;K)WK?KaYl6MzQ};X?mV!259J@QYqtX)Dqm(zaUgZ?Q#aWmyjL zfnHcR3O$DO%|Z{tZ=G6M`ap)(mhFLtlczI8`*6kZz^}OFOJ8%3!+RiL1vkx&f&_FF za{4Q75p+ngvMd6Lg{)a28`97|$ms#xDadUR*?>kT!1q2UhmoUvqtH0ek^dm>9Ih#a zxs!-)QEG&KUnYjIt#WuX4*Nm`SC$_`fLof3W9`78VULkj*E|HgV$<@Bi*dRG*P_y5 z?+$%B;1PwEfUqqWyo(4kLm?B;bI9L0Xjo+n_PQe}YWJ{_XbWVfD=pDO)bChyWuon} zG2~!F{v1T4gvuPm-GeNyTkcvjBGb{@$mynpFb||}HoDK6DYG9Z4o?%bTIPoYuUM|= z4T*zl6RnpiAZ%;PLXd8@;f_)Gd>?KOek>Oz+NZFlOnQ199RHjz9dz)t{DF=YxXh5k z1ud!8+HwFSGOw?k9K?d0UKb;EUgP+!O-k?TdKVPpD!lJWI<&fsf-ny)H+JG|A$oTA z4#h!pg4PA;=pN+nSLn8Wrp!*<8+hP=!j%aH5LbfhG(3h-+lgXx(C5hCx#+7+Vc}dL z49?$|ts(xo{T)Ma)33Ova0*n?CJ#v46^hIcLnD3j&~gli72lWHAY_7Ti%8=k91W0n zg$XjjOH@NNdKk48082_kKfP`;NN{7%6?=J`!n7YZ3>T}iS$2dht`zhXQ|$HN{=jL? zx;u2?GQ$dM?⪚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

=hyBke;gXS%*kz+ebu;ED6hWV|s+V6MtAy6lTo zv?QqF_2IH9V{cL9if9RCBHCWXdagHU_qp+geLiY;q)g3=C%+K2J5r{87`1zLWeBMA z!%n(Td#roAAHv)T)};^f#QDI4^5ur^AO+j^#IYw|(=IHBaYX>Q?; zW)0MqC1u`^oomAm34=YgZtB9G$hJKcb$?kcEMfJ+xHgGd!D}=?M-!4%DXmrsY0c_04Pba=ViMIfph1RZlayNajF({$fXYkHBwh>5}F_m)(*(R(I zWj-3iHM@2qftW%1l6mgwwoP7${a$mg(js4} z$7Ec#9XMVW%dqQrMARr4V~`Muh)V|g5Lp!8^Nyn&+FGhJ2aRQY+V*-vPXXcu8OUEj7y(;^ISsgKxM`ks5Q#`_PGa(-L+o*O0SPPkL9nhDs*U)LhX;4?Z*_tS_x@`(xZI+Of1 z@Xa3Yu$Ks%P12jg^&JSoV&5iP&}wcbfjDM(5;@OP0Q6FUB=~l_IWyY)&c{-12-}_D z{_OPMb*~YxroBe0SZuG6^!h!KUY}{#dyU;6SG3Eey}u`DjC_SirC?-fq4*RkU{w~? zOg1795$Vuy(njn_UI}j|y5{hMQbFEc9r9=?1CedM5v?uXA%Atv7a`3ZwhRHOwli37 zbdWg8@^^Fjiv!x&#w6E|bk@HjrTOOt%?)nB);3>%9M`u-*O%k^w&?m?Tz@*e9zF53 z&=5#g>E~$IVwy&fknV%qq5QHN!)EYVK2x?Sl%w{t86sJc61;ufBzKVVHIZ;R-xVM4 z>I3l?(OUjFOyV_>{R9FNeUoVT%eBbTSm!Be+!0Z!Nc-ceW}if<$8~7_baE90@WR?% zZ9jQYz&2#{D33=`483F+bdj5_us6_7wNB4;J;QAgmqSGANcDXM^3jjv0<-o?_?55w zkujW=MDZq3huY7nH(u3l{|>ibN#5?#56V&?!spV%2p$Cz`!<%{WUYT0)mpDuF7e%O zjTwHw6g|YrM~CypChY%jQNRC2>vx_!Phrj>IOAt9cz;cU`M9{eugo;cI%R21cCf7T z;!z)eGn=D6Y6Sxjfim>2MD)yJvWVgHW2;lKr~N(b`W&Nu3miPZP4oqynJH&$2h4*^ z9Gh#uuPNLT8^jACl!vqqPzs(upw>?9E%S7tx_xY{VSk-$Sj@xvvnu)LiDZ*jmD(>7 z1EYOBo>GA&X>4?MF%iD@+mUnl)ITbM*1rE58pgrX7-j3&`07hUqp&cqz497DJG9n)LvYm0MqBH?Db8isv31|V zIW57~IZxpH8Bvhvb9wdb%80MMLi~OwAz!enA7-Utl*>$`P?XSl!Q$l3Fy;TT=!`Mq zhNV~+2JAL1@;OsnL$RmA0c+Bhk-0H=j!bk-OE4#wp@R;i>(FNPO7Z($)Q^BP7Q=x# zxOhMaq@pp7w2VgMNGEu!1$7%`XpXz>yjYuZm3*V@rLS$L93wLTR>+>-H(fnApY|?0 ze%qJb_GO|B#BUDXkCRlxFQ$Uaaq2q0OC^gNSBe|0m!0-i;vyGa-S`_gy`ten1O834!1}!? zBD8VNGCYBkJt*T|RKPiV(@)?-r7Vg=rhyU1E0cNr`aSvCph&X4I4P}U0keXhyJwXk zv0PI7@8VTnbDMPa(vx}&bAH9U5wup;559QwTlRuVBNco>G;8n#7J?r@?U80a`>oM-~ihV zwjfW7y7ZdCAFqKikiBjV;)^@>y4B)0WA&Qn9D$+nZ?Z2EJ-Cs|o!>sep^ zTefSOuc6M;tcf5p*BC7=iLvb2T#eF&S>rCL^`MmWABfswz3J6_&Lzb%Z?AM zIZ)nZE4jv8*Sq#K%=NsJPOtlSuUP#LZa+L*^iHEJI;whb&T|EA{Grpf=P2EgO>^c4 z#D6}e9PX=?;9C9)}C{IS+y8?EA0 zn!)o*)e_CKB}pR7s+Ex#tvP zD{jle=Pyt{HG;{)cQ78ltLQ8isPaKSiP1|5qq8-tT;Kn7g>Jsn3!<*q^{0_YAVfLMv8*|{KhMQt#SF;zeddRkO>n(CL zH-Z1=2~Ybyb%^4(-dgNApQu>B=UUBxqDKA5BJzVvys_c|vhh3}A^gBOY~#PQ7C*lHV~qRRN6^VfVx2Qs$@{V{Xukx$ zIjdsrEfvn$!JVbX7Pi);1G(Dr7#b?BehPja!cPo?CvWX^Y63AI*vPFfD`M1+c#fzyKNiox6?jTiA5f5%fF0jqp1>l`7s*!315y8i72) zZ~ba9I>qR?5IVcj0hfM9%*+`~syCXzCGlqVX0o@;@wNV_6=)(;!u;`U`pNXLmlIZ! zJt0kTm66KyM91fLCC+6LviGeEE0M5<9#-o3EXL-SQ{A4=5-@=%f0`5mu5M3W;$8}+ zMgri6FJHh|OkROtjI-Ak^BbGd(P(%wQOwzt)EU9`zTxK zJ{Tr%W8Mt$=I6+*#3c3#Vpe4!GoHOZ3xbjvG1DtqN4DafVyGFNX8yiqc)L(g zGZ*=jT7U^f{!D<$SAZ;&#iOW0ANma5G!Qn^ozzz=&CS5|q3dL-9ris>Fz<)81)gpbu-l$V zPOl4LQ>w7fRCQ>Yyi4 z7*BZz^*Z8QTg7L{0G}aIcB)O)bLq)@gASLFv`ei|+-=E9DCl{T+oVuPY5{s}izzKI)?EQ)S*fEj?cb<2LB z)r_zT8C#__bn*2I*q8WxvRS`LgCEJ@8{BaK5VnYT$Jr;NGsP#+Twd!_2S1k6?sQQDWbjWi_(m5sK(wg!E}(`! z2{tJodHSRRviSFX9`A-={WKGXqk<9St>gFj)-hKle9z(JSl2Y=yZ{IG>Y7Sjp)jua zuFQIQ2f3c5OI_#P5`G`Hgr66dBD9O2f6kGCz`o;S=N=WustxXuhg%E`C65*rZ<4&C zqNkcaRl7Eh#jJm#r5Cww=caIhwB!4f=Uk_~5##oU zuoJ>Q-J`kg{*&n|4A}Rjs=hW`UiQ$a`mGOuk1}5KMjb~gdsA}pB`nvU68IngGvLdF z;PU7t6}}NB82UiN7nb@N*I*cqV$bvn_RGy&anc|>r>A<=Opmhp z5aQoQ1oBt+bN+ph&A(B9F)5J0rl0fg{cQf7h$hv{aAosMz7R^olKMavt$vS+>XI0( zRgWpLUO?~NLB;aZT24}_{W^gsfW_{N(OZlBRPody_X?C~()K}hsIRWqZiAq21e0w) zEwNsPTRq@99*$Z%R`Mu{n9=YX^M|4S#O}P-+bE&@7HkX0uyEc}W8U=;-GQVOAT&&mFN3I*Lp#VjI;R+_%PPX=N zjDjG9fCd@`8D66x8N0L8cnQZk)my^1Y>R7uCdwp#lR4t8F2e-K;NNBNZ7#$7JC{j5 zEG_GNAt(Hiix(h+|CGT$cJcm`a@>j^h5rGK6$lppIa(`3|7eC``uCj1ZRUN8!VSQcC-pQNr!cTI&eVJzBU$a z6wB6%AwTAa4T}yzDgE3*6^=~66$y;-S^@W}`Q6l~hA9F|?&AE}((hYcg&*bn>~W?nOYLqFt8>tg7Ge=nB1NF@PF2#~80V3|L34%%(`^@yMBwp5SZ*431l?r4EI`+uv;`02zgz7NG9n}gSKO=r;H zH$hKwcsTX{)64h&nxV9pY#h|d9sNaj8~|jnUIzcn9S8M%9Q@rG2a0bqdw$`bSqO?v zx`N+MVA3Ir%mUlzhaoKOfGBbS5;ojgX>T!wk6}uq_o{JMXGJ=Dyd&K*yJ%xRX7^9V zRHNwokM~xL@F%``3@0KXeUne}6~_;9e4db$B_(9Am|RmYyA=tL!3G)pid&Hlydpny zWiYtd=AU4n<+Eb2O9Ko8_760|!@gl{01o@n9R`K)PZQ z5?uO5$HL&&LAq0cu5lo$ZURR+fs{lf-(0S(;&oV6Tg`8Stgeq3^>{$6E+~~GL?sDJ zC5Z$hfk-G4&L06KAz5g&Z}cIh*KXtF&iIzwR{=6;$>6u$zG@|l)@~j>+J17{Ke(s? zGMJRXe{@j;ge{)`L3%XBcaTl5+bSwrbq51x^AhplNVqo0KO$i=+SROKAcc=2O(!&%hE)+^PpBp9CyQ|a znk>MI(Za$^H$)8EbUI@01OpN4e_=^u)K)|cLdJ;ccS;fQ$GTw(pi<9mAO$C8PeqlsGBe8l9A8uI z=jQBaHclG1bWmkA0BKVd(aa$X5!}ydJqg0rSR->l1ccL`M2d~Q2ItD1onvB=z)nkt zLrtlAxE+*Yje~t0KZLSRZf4$%X7xh3Y)ft7!2owcu&w%i*4PK>RSM0GP?cLcV_dx zlj*c==^-C5(H{*)(Ry@Ziy!IHV?Fs3ST5M2>B?x#Z3A5U18$gy)EejPTG8pZDz<9a z!B!vjg)v|~E&6li7pel(dbtNj14V+q|1mJO8b{V8-o6zq+tF};%Hz-%(GWo$06TYr z;TeGtRbZGE$hONjv9>B%$Zjbl&{GFDstN2_Q3npkrf`vNUFn=R@bi#hvvT>NkD>ghAsHH#4Kn424np?1 z2PQkx@dCJ^e76*0_EeeyUNYOv7e~Yv>sIE-i7#gbC-` zoIA}AX8cO8an3OR3rq!absk59pnQNcq!HU0$PexP*%0Zv!h+7LhVK(KaQm=I#T48l z1lT%lhI>TSF=xq&vL1+w`0+`Xb8_)}OK7;Wxit^Rcrrz&Hrr1&(jg_ns`B6D7Tm|0 zbewn356y5Ud8Hx9zCp~s!Oos_JT?j~tH~GiqM7+?_uQK={~r|eKptCe%VY6i;bb@k z)dj`3KbGJbH|xqptZ3S{L*T2hJe!UudKm*2djhQQu-uZx{ue^jk67~7*Io9G*!hw~>Q zKT;X^YYYr6AM8RJ5!j+6zWmbXTM1YWg#(^ry1XnDipwy z{^iS++u)UlsPUTB{TM(9CNKo`E`lUSfb}`Z>T)>h^PG&?8rsJ?>4dZ%PfV!Mo3ed+ zye8YtzOsu`i}m=-?0h}3ou$jprkL5Osj2LZ_4^5pI&NozJv&@D4)*L2PHtG(+>Kfe zAJ=k#FiZ-8xr#c^$^urxGhbz>KtKr>i3oX~}f zryhJ1mu5VarjC_nHI(LPD9ySYoEn4z_3{F3h9h zVGDQ|O>C;zzYBNA$Ai>(%_2Opzr?{8iz!=|xG3PYk|ojurq$ksd+>BWc(`I;>8SOM z*)wbulQ4MnO`t807Vd1sLq~vbl7p`d9Ri9a#VD|DJ_aA7HT-@yCbvTrCK|$rA3s9s zz>y#&#F?4pE-wcK@aK-A6E9m#$SNMV1 z8(26jVegaK5ANRq>6gi2=t*Fm#zGv>QWb^S))^b(Z1O{<=)!K^WSk+uvRIT_vZg z($cNMB-Ak8RID_pO)JeR4R1|_^MRmJV{OTT+iNn|=$X zT26MIr?S{rvzHz0`I+kTT>#NP!x$4FdI$ANxQ-WYE||nJ*vg(e*z**YEW(E&pg2x@jDhK9t;T{g-qbeS( zB3vqN8*sb=5#%eOD46HbVbfMev>j3!M}6twilIhp5Q*~%+%n;8d#6A1eDjG#z{uK%`)=sNaesc)LQTvpipCT{& z3i)ld(?%%2*@R;0SE#tDHVQC>Nws*1I)V@{B*Y8$sUX8C@*kxQ{ zS(_5Z^3MRH=xCp&CJt-nX+&Wu)*VZn2$wQm3(}dj$jvjFe;!sg3o#Sx>s@f8fsNFG zD3lo34^T20a$i${H(ZYecD0d{G}h*BW0SFvQma|#;4EN02O5yWQorF8J=}$tnQw*F zjP=Jwc)@r=)p!m({9PVir8$gmf?c#Eq0F3bq=&I=YW>!^kg39Et(#cP)C8e!bt?&) zzEJ{4wNelg5+bp>S_Bp&dW2QgHh7Kb2{>Lhp}x2_Qqy?KJ75j^n?_JwszQ(%F|0QY zCS#{rHdKEIj2O6#GcwgQGskPJBQoH0mOk0KHz7DQ3GB3PSY-RG13i&+4Aw7*f9 zOrTiJP^oNLfxd?nJs%haS3P_^RAn9kzA6t?riZW&BTjo`LW$Y7JY--u6{_@*wz z-=pz;)B%Poq#}G8&Xou5357*pabdYJ8QJsju?GokUN9 zy0yx%o`9!rSdT+j9jOd}3c$#(Hc|O25SjXco(9|`7u7S7BU~ewDH@JeM(ea_ouA7` zOj=rmod9rheR7>1tuvx^X0$F4t@DsMp?#j%9xUXvEUSy|_8JOq$Ug?n5Kgrk@znr1 zuzk3aI1-K-9N<(Vk5p*}`loyX8W7MO*9OgiHASv!*kg##&+6>|@vwDV1zX2({_{|w z)Ui6ln`8+l*(@fRVrr616RXp6|4^NvA(Q@0^(Ng18mC<0O=aZHQJum@qf}VVrMkr4 z(%L>pWWdrWA5&M24Hv2226DHG8>Yll6aQu{Zr#c{HF6qzfFaH?AttKzi%kc&)3c5| zk^P@CAr-6Bq<$rKeTiU@2(YjGl8vBDl|6=mc|_$5v0~<6#jKSo1`MprWflW#IWLkF zBFRWSprI_eQla@s9m57#mI;1~6|sg0MSKF`NL6{7M(Fqve?;q_0#T}QEx#n^{K>=TBF9iiBruu^pf$rrATUgj9k7e5gDNq=mSaA`*$jBXqC`4i&*B6L_IZ z%~6#|$eIBNKwpqM3Yr*#rb7^D3Uae~kVv>S6TqM^$c{8QyG|#Ds$ND*l}zdTOu5Uqy8}3CYVo}^lnV5tJh-NLR-|L>_e#_I4YRr$d!K=}I~ve* zpGM_fU3lmW-|z0ib0GMBFMAK`mAVOW4gE4uWW{H-Eo1*zwOQ={mgyZZg8jBG>P^ot zH=4l9rq|L7*FN3Fe!KbeF0N+Eec{6>6WS)Q|5K*_mOeXr=CH*Qx*0F^%RPzF(kHX1 z0Ybi%|E}l1rGzNaGpB~Vg@vCTGt9YKcprYLE~;x7Wjbux^3{lj5~3~nfK^%kITU_$ zlzJk%Exh*OaMlA*r?B|QUAyPYFX=4n?QBrgd*olmn$?9ncO|C}wpw{lniE2*5#6I; zCebjqG|JB6jKfxCtPy8MK%Lka0exZ(D}03O4L^iRy&PH#bcUbPOK&H7Xkn{@&UZk= zy_te1wk6pADbqvr+1VLJMDeMe0f==31t%uO*#AK1r~I=Ml;^oN`Wl^G!Tww1tLOF# z`t9-2&wjU`;LkAkPi)SPzd@T>XR`uLc^?>dY};a}SXNZFQ2rX0Ggk*rqDfqxauP1@ zVZ=qJgGM{o@2vN61>Lc*f?pd*u{z*tYIOiAa>^ukaXw`~kD9=0V*@gN+Dy13G8WD~ z<060yrE~vszd!Z4SpMkqC>y5FeAx-2#fB1}Y8{Br>G;fLaZ?shWvW@7oiQ;G;S2Z0 zcEK*DRyt!kdeYIYpThEM3wt?#IGbV9Y@9T}0^hI~_y+Q^+^f3*v(vwFPqS|p7nK2~ z9oHnTE_FnP8Ayu|PwBiE@I*8s_Y4>5{at8hN;Li$>Xie2>IxqK4769Nw0g%elWJ0J zp#<1nlp^7d`eGW!U6cR`G*!EF$!|VmX-CH?t!Hjde-2VF%@M&xUSSp)rbRS@{!QEi8u?;f4 zNzIdj9zF}c*~mTvpS{@ulMU)k02zlN6WT_ZY)Jpg2Opit4oo(n--gcY#~6u8!%Q}u ze~yqu=d%F$7(YgLK8R0?HV-c6zeoA+a^abK0D7pFsTGROgcNj;iib+acv%)m+&W3z z_PvxCvA~DESUIpZtW{axJr8OI`tB)EWq)u+P{(#>wDIb^#1oJ@LsYL-NuZ66%#UM12cQc;go2;rw%}K zbbzBarIB<66KPaiWAK!u^;f8wdO;DO>WDDa%U<9+wV2F6_>KNn%UTn!ag+}i@-g3Nyn6E zuT~UmG5hdaM?l;D)?j_0!65&+O!f%DRbyzmrpAMiV3K9n@(SFL05_n{7T%3`V|E6M zmhDIy@$r+YjCgD3It(A5ox*~qQc}wA>PS?oLMDFa{@HS?0vH$L-XkfC>4*FlT<8Q0~Qa)`+~ z61js(*#QBuU~Uu+Q?N-&#}u}L(P0sns)+fmB|y_2HZqf1re3k;LB|fW8aNEX--B@5 z#_w`zJth)_Vgiq*;R^oS^mZ~-MKsUxQ z;b<(n$&P4kADZ!LS-%p-}`74_ECwFR;3C5uYvvREiqp2L=8Zo!Fp=oXwii!x|Qw7p~>gu&uO(b~`!u+#x;X zWNdOh{YNRA;ZinHtCQuUVm>x*u(vtZlyvGr60x(xI7+D)ugio_7ZC!!EW_7;b$2yv z~VvD4k?ja^%qF|{T%#apB;RPp{UuHRoR(Za<`LFpJoy4r18amHgyl_Qfd za^vEN(`2nVXzs;A+{W(%=lPYZ(J|EPGsCDt+NGVW7n6?9+2Qh@#2Db5!EDNiSK9nU z-0Tn1cAq|YA*_uD&u@@-1qUx^z^yJEZ^H!uTk^lx;0sbCa$92Z5#Px2Pdsz&$TNd6 zQ7j9aHtU83;RIoEI040<#;m~vqpX&SMa2rxO=~jPG^g(7Vgvd;-zD^`*q#bwWm+G+ zNFW_$=RiC;ehy8E!ZMw|-UBj(K6s`p;&!o+!T~7ap6N=Ld%%v9-Ytlc>`-F7`%bmb zg6O_6AeW)NZ47*G9mU|Af1>%6AY)p3KDZvW42&Btb^5xF{^&+PTY+~G9L#A`G3;@7 zpb}N1Q4LXrO+;47&*80a1~bJ#+6)lp7!N<1g}2|Kutbne>bpsjvCm`qjFkHX&9L=0 z=fWAUiWoX+J3?eMnh7gP;T{%e+hVLl`VU*9`Fj`HmZf;5M*cn+Rf>Z}=h0diVQ4X` z7-$j6_u;D8R6EM$o#M__C?=Zkutuz$G%OGgcETc)eRRT=jJezKqcuB|#K4)?`lMy) z6p%~VP!ze(1aST7<#I_rY4x))DUvZ>HPiD&VQwEV;lwyrEK4j58pK?N2@wGryT3JA zt6}Xki9IZI^PKr5svTH+tzfh_Iduc))zPSt^^)aXbWav=FxEm#!PMGJvk`)Jg!S7X zK+#cPOJtkDX+y1I^>*Pk3H7FdW{rx8(YS01Mq=?AJcB0IIT4$q%5AR{YBtl#cmW_r?roe5;-PUxh+^W#rfW_ z??@b@tK1|+5_Z1Fc#TfR&b-&72U5{!hoXP(RU2)cd0tWU*-rFlQMSp!SQ~Qd$Js$q zXu-uM1OVY)3TTqR85Wr4rA`M^IxQnxIjtsMTzZ zl2)uyvMnNuNkm={-J{y_72JE=EX&v-#p**bD?Nc9W>^mM$Z$0sP`DJB6j$I$J2dqm z@$w58&KBY!B^G&n&WDQ|_UBLg9ad^Nwl-^@Dzy%LqjiwPW2g0isYVNN*qK!>0@A-p-S2-yRVjio{%4~b8%ZQK7Rx)$-wl9dEbKO;N$VR$bXPKv6e zIT=F+NnEFrIM6X{Xt4Hkh#Q6O#52!Wmu6 z6YPwG2AM_eS32GdZ@lc@vY|F=W%KD6*vAu9SDY)mRzlE=O~W^$UXgso#?<^nJ2 zsfMDIrX&;a1RFqlc$K4uL!6a?P4m+#zx`-(VAGM#$CSXPZs%iaU{k;IF(a^PgY$7< zYN5L6k?VaMk^bBZFiUKD!ufs(zkhj){r!FX{?z%t8oxhwzAvhPBcM?$2Tt@aIY~ud za4xxciBu@J7PYypGwaGvWT))`ZESjjC=)dc9}z!n!W)w+BmTzKru7sXRNb;UOc+hT zGB2b$N+hd|_=m5K_+zWPP3xIbX~CQ<^AnMx&a4T?mUDQb+&UVD_CXPUt!};8h3CJq zlo4)Y!}qkZRXkXyU{$CK+GyxwjBE;Q`*zj(8W4GE9$%lCboEra&WDbvWt^4;CNvSCjXwQVjEfbC`9Rt?f!QPB98GWq9)}<-y zM#pw=wypPw2eQ)?;I#_yS|y%1z*G`nGAVQNSSIMa<@3S!ZdQepqagTH_znoeX}KC7 z-Ek4c{bkJudkJGb_Je)x3#GB$*FIC?S<~Am*gQ+zI4!|fm3Wo4bCG*6fKSI`C)L9= zu^Og{KA0rBb8q2PJarPAE|S@`FlWrpy@+9bo#2a!CXksAc$QdjlzNE#lS9Fjn3aM~ zc#MbPbq|?Hu9&o^Vnz;?mV|?jW4@HP?A~G$7tYy7v%-uknzPT8=Ir%FbGDfor{jsG zOq{Q}=;m3SA9_jRwPR@|kQ8TkXnQp7*yp)@+@$d^!4G3C*ZDZ=vnxCAhegH${AlU? zE;iRV+(^PBNud6&W$oEn$JO6GxfXouAaU$IADumcy?t0%k969ZcBcM;@+*o4n29uz z40lB3cCR2leda?&lC|YT*Swg9IiL@H9#GT)z2pVC3xT`5pgIS1rQBW9V?|MB(C&aW zatF+=)p24=Cs^T+!2#xS32_Hx8mUk+lekQjDItx^-7$>a(IiZcxMZIf_u3@OgSI0( z%)t3GEiu90@*HIQwpjiJo7W|q6sr@?rL*T$=Y0CU$fw8egM12m`ui@QwoGb-?t6!i zy6>&{Y{_QP6a~6?HE^S2*<1F&+z*K*Wl!XN65LkMMXB+bWD0Pxx8>cgbP>i&&>q_Q z(w!=GYzbj_NojHEtIEbF>_s+)z2yCBJUVWuADz_?9P-jx{al34mhAqyf8*O&8n?iw z;QZGc{C6t?r)F33IlF+I+o`3;ig|PhdxpVTDzBy~-`-2aA(04`vS`SNe9)ymT;I#N zr9^yfJmBHnj{)Z%YP}`%?)+Z+v*z33+eeecr)8PBd`(DPA_F6{WcZcrtCHGcFkpm%RSkf>E4{2u}`j`)7u*pFM z4UFblEKcWp5Yk%V2o>Y9T`-nU&sAgCK<92ux~=nH?xX|yk{p`);AwX3lwj}(2iU2H zf?=C5${DeE{@snK*fG&m#vSUhWbwAW(qwOT5`W)`VqQ$@%14)|8m|mZ0SPRNl zv^Z(=MD}!!STa5}l&XwR52Z}5w79_lT_t$n{TVC$PR0EJlZCkv-eH3X6gXhZ)yuxY z!O?d11ZCC~Pr9Lgr}Mb5L4PBA|6lg|4YtX0GDw6|G8Zr)c%30La&D;z#x9^uJ)nXP zb?1&lRi&$RT#nzartvWRc8(|JI`P{%mzYc8x2t|ceP%pMmOnXBGS0&J5^78_pTR)CRD*vxARtf)|TZ=v*b9a^f891dmtotSEi7 zDDjLFXRZ?*5_Hfsm!=QrhAYVoTFAMByG{$BS$xM+6<{Y7u=X>2!72Avprs@DL{KAS z>7xc*9e`)FqH)f3Pycoj6whzib~bfn;1eN(A8cQv%N}aez|A z%cg1RZa8d7I9BAGugsm}N>|*XuEZoK4@aAk!gzG1KcJ+T`;r1;88B0lbWs9;{)w}mCZ72Zr;{jtFrZ=C@RO2P=+>1>+M(wrmIY~J;?XEl$fOKj&fNS zWG>g|4B3L)Zdz)&CzeL;iKRAG%RR7|E4g&H zCik$E7gLxxWnTLx1`8SL`p<&|i*&{<01kjuFo|U8XO! zSt?|veXXa<441o1%IPvoW$nY<|F$n}E!CI6p1y2fS`2+@0bT|QeF^=nurk?wX<_bG zZ(qv%-|IMvW2dk${bq0<`ppmi8$L4w`b|e_xe=e?bejEB^JQg}%~$NcF#f;o3upZQ z(-&q8)ffH`G7-BksJ`E_2`pV?$B(@rimf^YJTlpNpDxN4<7Zy4c&Z{f^Ag3wVv{qs zI6<~KZ0C9*$hFQRktf7@U5{f9$a2Q5MNUm7%mfT1>*)$f(g}m1ek)q4!FmVOqH`+T zn|Q%MEry43O_u$I7&1Ovn{$u1kY?_7mJgJ4N{v@RI)3JE@9Z&t=0`qH(Z+Ya?kiuk zN+nRLXjHjVz!a+N!KY-qN8{Q4nurO6=y-Gc!Arbf@V77+P+b;DPNOCZpKLjYsp5R zYc1J`tR#^&&>%cDgPZShvsc=1XPuu@-yn64bi`8)6-iF*1DxAEmPDT%Nnep2ZoJo? za~&5QOTc(}GYPCa=vY}A4pYKGvZRWfZn1#D-ggFJ*~=?pDw{jbcdC?n0@-~X>MOEo z4FWaIA~kGgSOTZUH@63sC=;E}7f8_R7YV~bPbS?MxTauZbUd6>pxAyVc9AB&^q_*Q zXM(Q-$)Hb&K%2SsY6sj5>{oQ_LKe6v2gf&~m8lsLDvDdBX3|c?RI}N*`a}cwi8pkg zAZCL0>`iTtn7F+-nPmY6eQp-8h&MIsB0!BYR(X5FrwrD58jU zP}6N{X1p7FbVO@h&ET}1EoNi;2XAb<{8&7YnhqqJ9G|+$PoP z@z&0r*!NdukH{TT0dMQGY+-jiEc#B$o|xO;VYZu2POBU9KY?)-hh=np>S9}x*tFFF zX$YF`g3hr)X&s1i!gn}Hz~i}X*YZSpgpu-fm?(is0UZBD-yn4K414Mi^ag+1S|}?U!nCc z*agv9Z+C>1o2=CA`$9CmCplJ$w^$d$uw`$fowu3J+ko@7jovWNOffGDatr7NHEpW8 zRb;{XYH}HsvE3eRAXxFcb77q`5&03=Lqzk_&=>F}$SmruOFiT2S#Hj!Ti*uECcIq^ zap*+C1fk+t`w0a$dcyXxXp`^hfh?wF<}22<(1f#X|DB1s&2WEDAaO7}t5c0?;!sD7 zZBi5SoR0`45iW`?Rueg8Y{N7Da~*Y$RDD>i7V*#ve|>_zCdSx@K$DC;Tn5B8NN!Vw z2(ZZ|?P^{jX=$)t!=~1@-P9%~OmLPiVv6{CBL2kKR{5k2RHoKlX~02qUcf*^6Dlz| zf|U`Bm)fz62is*N!)E+1`IBU9S_59IXk_$kT>-MjC%g^)zXvsHAk!pLruArvq)pfF zFLY=3J5kP}50jKkjLnWw2(y9z@!ALLN~fD-LN*T#w7sVCusXsa_#R35T@@bzBO2!L zMkU>gVBr5<_8pZm-%IcMDt$hhm%%1re|MgJ911};V2VcFnmW0zwzcZHengcPa6 z8g5HSY$&Xl)C-1}=>_0=1A7z`CCqqB`&c)t`xS`^=n1PR3+y)Ez%z&7B4?6Y2I!2z zXgIZ>KNF*R5~wONTsLFgVN-AWrPu-G8qiehYH0Zri$-{WNfZErTM`y(YOPwUS>J&o z@24129Z6Ru1mLCwjZWGny%EPbV?;$KOstnQQX$~Bfa!4K1=(xa*Kc5~wp{{kIAJ4w z6-n8eORTz=NVbLZY`?(!!xY3sx#INan^xdw;sNa_y6oAu1Qj8JH~P5|B2Cj2 ztYwDrsj*T`9MUXoAh}IZM7u;oLm3*x9I+42@QFSPZ7G$nhn&NlO;Uf!wO5IYPQEAL z_kl}|13c>?dGYj=u=se2`o#n=r)lXNTS10jP57LU-Gb&KtlPjQ{Sx#xz&<)b)th@8 zKUR@vm|5(12>U(Ge@Cz%8vDgh?3oi{FWu~Sk?`x|PdF8MJo~NZ-|&turK2IVxf&J1 zRYy}O2XkKH^~tbr=J;j|o9TqdAD4-q8cp)l2#hd3B9vMb4~J6odUz0STsdPOE`pw4bWg>7q9G~kAmMTu|(^{%AK#zT0!~<87PAfX|4fpd-rE{>FwGb*I6H@3@&Gn091fbLv z5ZtR+iVBObIpE}WIaHiA7hZeeb#NK<;e+A352(9P8GvX05FGOmJAWv?LhSrJDC!Os zxBKJ4iGD4*IGWTbiJCu*K^JR>;!ZT!QB7ntPeY!)+&KX|AKN`M0=j$t@Fu(y&VlOr z1uVol`wQt6+z0M;(jOtFUr6bD-Smqv{aLtIJa~2zE&&W*$(sF0aEGv%{oB6GZUe== zvyduC-L?v9B)V-iJ=VZOMJET_j>c;1f@(SjtL<2*jwSHDmSV35ygyV1;4|HVaQetE zrL&wEZvax~k0Nu^0mv`ep$uS#1CU=g1j7qF*Yf9j{#++TUyso{C^~)iBquBMP2}*s zOSt14?iNugX-`m(wncQpH^EeNENPO+!Q!fv_l{#}^s^<55w-3G5!Z-Ltfz=PPSnVE zL;0uzoLZwgG`1nh(3YTfnvQ*e$OXU*aR0AZv@V7kZbQY)dM85T@`-CH8#{C@d7N42 z7TM~d>qdki%vF&phRBkt&TeKmJG<0vDLYg8=Kk_RQG;hqc^bS)v2Sq90PXIv6Vi7N zUEW63CPlQffe)SPk$-e!8Q|)aWDLfnTWM{zVvX(5=&;0eUfftWHRb}vBJB{=s72Nt zb{v(*VSUAdwVwri)lQ+rEOb2v*Y>f_6|V$~5w;$PB^#1UDasg+X=^lsyr$Y}E0OQ;D-}EAzja+2o+gl{Kji#ZSvi=3c_NS|P zp>>UlYJU}ap-TS0X*M?vo`dYT8rX3k97QUu0DgQdF*jtveDC9Cn=cRBb_P~HXU`|V zhqmn`cvShf-VVJPQ;YI=mMV&{pn@}E?h1A5YDu2LI%DS znB7WX;M>_-YNWDt6JodtFbr-3Xg@$Vv$rZe9V1+s>T1JU1!t;Q`~OmypJD%H2J$yR z7leyJ>JhWP<5;{;YWy%g%HFNjEHP%T=hxuG3K_6vP!)^68JVW_o`YBOEwSq&y6sfr zSEteAbb4%|#{fL)x1CInQ=GDAOl1J-DP6~!7V59Q-mL_fQ%-c|3DtKpd(H&EBtS1k zC+Wv=pWm?D=4Ak6!XmUqn97i;@m5>3GSzCB`7G)3BAWHbE^z2a=cmEgJ8Rf^%K^xC8$<_!etCLK@AZ1-a;G>%RE5;fdIxjpu~lmE8X_E$L0wG=i&PGRGRpd z0jRgOQLrpI4S6%%z&uutrKkhvvQO%0I#oEYTd|v|1Ls35tZZ!c^jtz30)q(%Fuo2E z2R>tUm>I?93v9Ci`VSG?*;4#1$e*|qC+?}_7Q3uHLRncw48w{@wo&!xVZq247hYML zf5?Oj>MEd3f$rp!^i;EB*~mGmOc96-qzlJh1@1exKpSARfxpMFGb^xX`g>q{Zg3Lg z*V*x{-{JBeZhP1BuTHdiq9bErPMHRU#u*W3-3eV0FeVkMF^U%J!HV1Zk64MAB-5;M z`U>QmZw|pwI?ZVca*g{APAl7~^PJYeUE`icT?UZdigEZr+pa$>MW87Xf&q%c+@6xHn^Ng75Jd}GY;jj)bxa(E(W5oS63C4C%Wj!w)t z6?b~+io0tOUX5=30U0_qA7sZC$MnS^QoG2BsJjseM>7uOkZIM)bLPCBagk;(IlAApKS-b#Y=#3+t-2- z{hNvY&Hp9+kS?rj-7HYY=&xY(D<;iy-&Xnb*xsl{sjXw(G)KZ*qUP5(*?0P>z9V^m zNjc*Q@=?2qi18osu`yg6Uut)m5vFzvV{9^AQ>s`W0Z}W&OX0KN#|Uq5P5xP-(U0mB z;`^MZQpVvDyp{8t{Q6rtKz?0^YU-Vq(^xyZG5yuq#x* zTDp*8P(iGfcCXq@C6iKyffqb!N92_5z ze#K6z=c`7*ZRj=ZzpCL?+)i09<@BAttR#I_^%BQcXDq{iozJ<$8Bzo(4Xc(vmr7&c zK2i+sD~Rtii92 zb!}@%cvND@TBuXveW3 zBV)2ER)A%)Pf%%K+lO^Cnm?B1sF?;nRg)s&kplE-@H)SnIDlgm>qnIj7hqPbTNu!9 zSS#=|2CvgS>H*&qEX^F3roWHC>jPA~_sQw=t05VMZGMt5kg%CvW9B!2%Z2487MiVW zqm^dJ4Wxtiid$3b&wVIU~MK{=!Y+ZoHsftw^5$fCBp;Toc6W8s}AWJcxrN}(P zhKkTJoN-|=s&tnsAC04tPCeKWHB?-SQ6ZjlR{<{}6C|pZfQhr4frf;z)N)!A7s<$5 zsLnu_9Td_D16IQe+HDH$eD^V}-3h2H6-e&x(zJQJ<+_rr7Bw2)N#IE|=8se`rouTH1-2+^;fYav zzSy777eWUclL?QNs!G?QR^<{HWUK^8g{8rmxJ6a*;^A12;=JMA#3$dw&}dd4D`dVG ze1h(*uBfiCZlt)vyLB84HLI6Jw2tRz>^0m6`9h|NF@tJGM-1t>8G`wcz4z331EJ8!ANil zTK@_%Em>9~;@$=*E( zB9RC~5Mc;dm7K)#>v((5mtVeNvae0-YgeF7)A3&AI=?^Ns$v#(wJKt-)740A#BZhG zdTOYYnu^p(5w;jvs8VIrN9%^M%BYVF#_SM^>OkV|-1G1LSg_}Pl)!K*f}mpe?P zDSE>AncLi&wuP94D~mfi5FGYV9B(++b0TU-rqMR~ z1pLt8#%=tQm$zT*9cWLvLIbugd9I1*4neG0XxC)9Vw>Uk8!4@#d(0rc(&q_HEpNSj zoDJVj0ROb@C@AOBXVQuqg1NQZil)7VBPNO1B#VYd6k*Z{y^+YCO>UDHlfZr5$Bem# z;9ILh=t{y0N1XC9)j5iwFL z06DP&^PK$~oy4vps(GYVD7Ngp^q~P*Yk*So#x$7*oWYB{weJF@6c}KAym1sELOu{{ zi%v6~ITZ_{n)nVaJ1%OgAj20`8B2=xqsiBg5u#IQPr5m|Y&!SH9$FoIN4U*18TfPj zc+_9iZZZd-gES5HT-+<)E%Tg&Ln)>}xz-9Yn&c1P}a!2ly37 zmH9~kbYj#_-++l7XSOWZ@;8OvB~~{egmP+xdb&o2!kMKk__K3W(fcYBY6%#_1b+F1 z6nHh?Skr1ngd7xhYBG~6*Us9aXwj-h@kF<1GKC4I2BL%|@($2X7MIsh>>p{XlL-xP z888*JYdmIt88ror!Hz~A`!?Y)(ALYAhv?3BfU+0C5WhUDE3ihX8X5R)Hgc!0sAwJ1 z>Ksz6CKK0(Z>0 zHHgNcz$MJ8cky#w)~cG+Jawt()e6)v!%Wm}7{?Tif~oDJbi(3S4e5;;swH88k1o61 z7f6lYP)xq8Y5@XxH)V%skMR)-P}o3qf4ypGJssIo=U1cxv^?l8j|k^BB&W{;JDzO` zJG4#|n%HmJyRj-5ojGnSKsgr#O;-PiUfpJRs& z5d!gpzQHq!`=B=TKZ!kW6&d@wd2fZ;a`P)LGWbfDXU#?R?E~9oQmu#M>#Cuw@@-4K zg^-+z#&+J&_t5e}Qx2Va0c*Ef#MY(pl#1@j!a%r1XsOP8*xUMnMl5Z$)$fb7^ep}8 zzMN2wKjj>q%d2FL^Bf_pN-|EYXattB@c=1DLs$@IMC>^Pal9U_fLvVvl)_%fiyKY1s^@o zhiu2+jH&f2vQ>6~R_y_?*Hr;xBR=(z=S#E_ty4)Ik9hHvvd2S|M|(%;KauVYuGr~8 z_dIH~J$d0cNA8Fgdk$Ld^Wr)&&`T{l3{V6kl##ZlQV=<&@*RWIE4aw+!C~p?8(-o; z%V-#bO+enLM^eH03PCoc25H>|o}KT%V+kKy)BGCV1Y_}{bNyoQaEEeyE!9N~5tYSJ^QRkTjfjwXNNv63n#_k~IftbN|7 zQ9m<{KZ!viF!mxWCtKy`dh48Mbl4>fTPF;!)w?)?-6!mXzK5Nimp}q6#~-Ij3ebB) zOQLJ-W%%P!wIs5CXe^AAZt9ZcVvjA!94_A zLpvcG4AQUy!Z&_86I1AE$d^@(k$p2j@POEeynKBU?MzM z@(^F{t^myIY4D$Vl}P#wcIz&8A5@c$3&Z}`O1;(npJlL&{7S!Vv`rFAoO88zPpSg3 zvk<%pR#oD#*-a_YI&a4FhmO1guZvjE6R`#;g%KQ6h9pdPe0v^U885T+!@?U$r$D?A zr}ZNq0>GTQRZ?N%Btd$1GpOWyAlkF68y6oV0>bMZL+$2iL#S5DlztAZ|FrBM2BS@U zH2CraYv-J(8bl)s)6hZcEn1IxN};WgIAt)x=$-incqnByLc1nc0mR36>>@yeGb7R-e6v-8cAV0CidoJ+j2N(Aw2@piq z=KH=IM%iw$UJ4N@!_D;39FBcAJ!0+Q=%}>g0I!q2>H8~|a<3ccsLK^k}Az!flO=rx$5 zMAy~HW?>a1@rG%c=e*45sCqAz{ElsSPM^gD)e8TaAOQHs1?Oa-8e9*%5u>U`<{`K& zqSbCgw3Rvy0e#cKE@5pNa~X#0y-uJX@Jsg_KK+pVomP`^HjK1HK0VxMclHUY%Z;XO zBeN5B@%+2~Cc?&1+K`0n zghJ0FR?QK@*aQm<*?;ZC>X5%BgcP^b_#~jZ~3<9 z9zA{ALRDND zrS=<18oh?{?V!?8Y=e%lCH!5aGJfD7h&sYRw7HYmZn??$Dtsk3;)kW-08~ z+fm*HF20@d7~-VF0bLQib`75wom|+*lNQ4W&c6<*fvscN_nq;=w{T$x}^%sgVwogR+ucrAg zd%n8?iTdi8;SZqA)Nt|YEh9a{wEDStoXA1Cc=-56j{fD{4h?6uEC7Ph=Z|)*>hQ8| z>(onT!NcpQjdd0f^gyF$Rh1sVPWtdO<$vU zqa;xhz^!2{)8+zs)uDvllIFGJHaD7*4s(<`q#ycpxpG`h-9l8xs-@VEDV@jrbCXLA z^T<=Ps@Iuhr|qu0&(#Js=lVm_lko@t;#8YFM;##L*FYT88tVRhZEe5FIO=znBb0I^ zRiqSkb^dVt<(oPT(QT%m=jvjWhk(Il7yj1}+lyPqf8E~1V`KAQ-{%a|Uku7H_{Vf@ zTd%+lo;&il^`?E+4~s1O8tT?DKmlr-nqf)PtU%y%80&du%@0vfLS2P! zXGT)=Ug&!(re<_>KHUqit91wPv-sv$w41nhl3e`pyEp`9GB^Vq{bckK{3rM;DcqZ4 zzfHPUr7gO2t>0_a>o9>+x?>BM5}tQn26VKod5{ zJ4P{!-sdPH>bX^nomnh8K8YnWw_NyN&Lfneur)Au+nJruQONelPrjv5I?xGBc>ZJa zH2jf41fBuVjVm5cphVSMQ7-pQIhjTqetCX2jzK^uItLLdPLYEvMj%8TAEF_raOV?u zbk0t7dHJ68{YD)Z3nLR3`-iUZ+VinGfPqC2DuZYZ zCgX|V^2X-f*KBV$|2(LKpjl(4TkxCTuIAxeU(*Ve|w(qd%CWb-yrL%gXv+X{w^XCJ>fgi^1q19Xq?0BRo!D-1r53s=Jq>bUmciq<6u~%;0#u@NNd<+kDBbW8?nA{4?y+2oJr{^ zu#9?YdZwJ!X<*B3hfV^)AQ!(IMXFaqK4sHs3Xsq z8?qa+faw`VlStn$)pohyty8NO(NLZS3xTP>qMc0?`y4gH8rqr*wD#x9_f1>0aQ$uF*BlRdO$}?MbIKM+4F*tRm?aJI3LO38eOYKGWJ!kaD<~zjd!#f1h zi&1qGMmb_eztaxLKRc_WQfCsAPoo!?A3KIpD$Q^~?X&eG(x*jvey7LjqAD~l=w`)K zmiw0r<|!bVce#I%$6FipnAw=muG7Nu@2uzcVfAWPFTt5+#!C2~i9P%6 zrC9CMd74h;UKWMssDKA$gyBDAl%)W|O1W+mbCb$X2g$kQOF^@H<`PB5~ygd=(R ztU;KAj+=0cEZ9=tplWBGuz%C)tZ+(8X~_v_9Gz4a+S zJ|eYho{fXji)(hVG!dCuR679LGGpf{q$AZ+STX$ZV|OQQ*SM4+WjSqdeB#dMcc^as zU2o7J2X`-JAy;XkROljYMFL;X=SavC$+YfH`#Bld#y(h%2vhp2Pfl#yG*DOptXzzvZbwO-|#yQ9s58sCa{iPJGp$NavdGIOjKmaIou6(uEM<# zLT`}HKl_!KT-{K1q0>@|V!Ebfo%x41N_CYHC9zHjT@Lte;on2^9E~eXEO)YZGaduR zX|9MnS-wst4+yD1jXJ{><`lc6zxL$cH2(so3EzPGv2D6j;-^h~A*;5KJ153~`sJyv z>g6OKzZ#fhW*SMrZ13L$=QwAl;!f^)gDhNJ%giM9V|m`e%tkQ<-oj-mfR8sckZm~H zyc&DFcMB)n)0BYrxS@yUNrlG3zYS800&u8;*Mt->E(Ah=FyB zO=j;i1ADSF{*q7ajBZPH}#Q#FW9;1@7TR1JE6M7nbgf_nPIuLiFs5ewN0)ZlJgYPDCG3 zIQC3;c^anP0?U_=D7x>LRv4+k6hx1=f0+QTV_$H7-w$Lhm<~@o zc+m=;LrpAcP5gQ%C|Su-?Iic`taI}=l}kb3sEB`y40>|n+-jp=C@+HN--tF2LI>lc z@4?RwJjHN|$Qu45m`PlTdZ+cxYeAXF#J?hIparG*&;a5ob-PaC@wiKxYm9~KdG&)d z&;$A+w%LB`jPPM;P?Pd$L$Cwi@Iu~OI+xDnI^liNT!9NPmwCpg(1VTPl!6X++AIA#u#v(@R`cBxUSF>jd26>_u@IbJ$ZPV%0N8e>6&A~8 zp{?|eF8f9)h4OYw!NF#v%9|ZHZ%EMdzZ-ZsXS2{vd(*9SMEV{)NeO&L@OybWJ5x{IgW6NzQYVg8;-o^fz?B}JYYxWN6{*APN9WSFP|@mUC}Ic6F6-{@dc2KV}O zG9%&Ro#G6JyJgP?jxmCcJ@9P=wi?Mh$HU&}_BY=MjuE*HBz@-K_nM5i2@5Ju5nZXgJ2$Z{dV&;aGZ_+Ic|iIC%nX74{7dyJBmfD8EhUbwf@ znkyeWnp^2LUXTW9!vl<#U_cSZrS~bL*MaE0X(d@ic5lHHRlg&pJ0`~;z)OjHVk#p7 zC6&6lYAMqqs^T^kT8AR^hAI38gE-JsKK*tJkR?@ykY0j$4o`D~Q(H9gu()nb6pw)J zcIgG;r=E_Ohv9yr5C1)fGHV5+FwNQAyriSRN5cak^uHUf9@FEIYF61b=I-iH19H75T^ zOjSI09a$y=?v;d8#?nJpp&#@+R?N-lmBXx9lQq>$}SZS z=X?j@{a0#l+NsCr=u@;`Jao*n1!pfDcWk+H0eX)ntbL#(`L3-;ps#anH@Xu8wA>%K zs}oSxbZ08sY4#z-sjy>@h-jn*UypY3E&)%!*XPqk+l=m$M4$!6M2_tHCCkeBWW_Yx z3l(+<$OV*V8qPat?y+6QK4OI-cNooBHn zOU+JDQ+15?5x2nRULU&aQt)>*Q56j1>ERc$Itou{w2>_`O zRdDLFIu1jiY=j*I3AK#yQ;D2vR2elgEuO5OMhqh|m=qos7EK%#HGu#lh1v)L%5@6P zb*l8mUDIPyZu#M2D*J_B@VZ2(ZR=D?U;nY@jCoUln#?1kTP4GidU9JW1F#X{5IGKu$LwLE9JyHil`H=+=~~vnNa2((8YuDG zDlXbe9R83t<>;rX#4OmM{#wg=XbokuxGLW4L`(vp+N-*$XD;~2LE6hs!nLs((@_k4 zz1-w7J^H?$f$_tm5TkuQf{5KD5ch}vop44WRqTm`t~>OkbJ3WmU`~mF`_&7P{NI;z zJB5Th_u)%58DqTIbOkaCrJjj@c9R7X4oa&TnYK^M4xF6{e_CTD=?m=Wi+NH@n;54T z+qOEa%Q!5=>9lYbQrARf?bT&3(O#S!x5<)w4DjmWW!!}(orUeUQI#!&9qVPYhpB`1 z+4rET?yWQS$=z*BCSd)!yKX}D2--R&qXE_R?{SfnJd7VX#TbIcsJTl1LPb1+g{Zl% z&uU_7H=$<=-G>D7`+6S}Y!u_z^ldJAdN1LZK#2E^rCh0Zb~e$eHnfR|c2ZIq8Wk-{ zw3^FcZcL#VmU5?dKqlR*23ni$CFLM8iQ53|QqQ>vsu9tOG zoEr=FtmMzF3TxF@ejslTKm6*I@sP<6$NfQtD!{YeBz|RJu?MTQ*?2`#doPeMM_?xT z9i5$RB4U@6RJE*$S&=T@IQhznP4r2N%qlLiJga7QE?Zbu{vT>mX){%YTghLe4Eg9O zWnIo`eplk-bG!XrPR7GE(Xr^4YlMO8!RE3HG+;;Ei(kiBPZa;;+x2F08VCCx5ni1J zMTf{3T`$+9qz4^CQ>>(22`Zn}fC8H+AbnNBy-nBr(0D+HX4?gy$wBqAzp;1;o88!2XEc9xkyIy-#Z>-GBEf&vS*UCBvBTbiCMU&EmH&WIzxuIN*jfsVRCA>J_gGpfg%TX*)?{%fM~>qgO|^NsX@oRA(o*`w4Tg1mF#OveJT z_kts4B)JxNm4EO-VbbOK>o)QJ8c`ZlI(oVshJ0%n7!2_sqW}QW((- zS>rcbk()#>T3qQn=Ynh|kvpaWhi?5wCYBZ7(D^z7YRxS@G9q1wn$}_xm`tx!R<~)c z!DudhRv^FPm4MGGz-MJ3Xeu5gd*5sxDc2s{LQooKR>7l?*!m6qSFCW-jV z{3iQ4<&`ab$9I)Yzc zbhT?7ojo?ouri)z;38+#V+U4E?RAt%s?=4Hodw=^5`j84soFLUtt$5mDhLQ}=WZ?Q zYt0Kw&E{&B71rt=G+<1fEnps!o@Cms{q#Fwnc<5NFrGmAxoN==xB6B;o^X5VEjvUJ?)5rpPx@^O=AJoYz9&)#F*ldImTvme<_)=|axHANhr#J~t~?&iY#9cKn4${jAU@rD%($D?9WrxL?Em zyrgpO@!?Nit7mklXJr+c0UJ~95Y=S{zo&fK7H=XWl0eaZr$8;5gyjeP!!VAE5|F~A zL^=#e@;tIR+N3}|Yu~9^R(CAjLLzk6mpON#(qC~YMZQ+HL65WWVPZ$&7snX4jXGqpzEL2QLwJM5%-Nn^f5kl%sb%p zF6iF;M|?bvAoT?<<3JqiIingX6`tW2y4g)s7#cqxfzG~XjpwZLC^3zka$jB~VY7U0 zF(BI~4G?kdly>b@=U4VMyEiuNyM2MCc&3PbiIVgcSXhHAuKJ)_5DRwv)!P1*mpnZe zA!PmA5hs#bgshQZ5c%Fj%AC5YJ|{wx=x8>sT-Akxf40VUE`CRKP9U+vES(_achl%m zvIYX)?3}9oW%%n25{*C1QXREnTdAA>*P@r=i?6z=YQaY+B5v}FpK54)ef<)0D;J$| zY8^Z`8}NO9oA?X(@;uxv1pK_cjt>a<81`3t4*&Q7PK7C-QoINkgKj_@YJUa1BkOPc z|Dylf7jOX+r=5{Pv&&@wn8U{Bodo_P*HAb`(B$UA-HCprn!b7U-OB-`5Y`otHRl`Z zed7-`%;y^?9%S;~n(}|A3rA{j3vfGug;KS=&&V07V*RMEsnI+2ED(J&DXf_$r_3&YJY`30TCS)qik@Sb-B ze{GBU#~N}A*pe*)CZSGQ%14pTD3|1@qS&jbY#?rO0A5-(C1DfTsSntaxmT)Lt|7$A zuUY@XKlA`7h|JaA2y0oKSl-javpB!nlsa+hU4=2;$Qs9Ga^LqDbS(eNJqfVe7?5HW&@7CFpJ)iWVbw+P6MUD@t7viMs_rWr25dha`R~r3qwOf!!<^$nCqHG zHVAmqPVH0rnBM1YhyPJYX?x05pxFCFAad*@DmauR+dxl~5Wj9nn$z&Ct58(WcPndD z&T~cXpFa?OI=%ay&^VM0x7wRWrcToRhVMC7&4wN%7aDv%2KR!CLhE%2~oW zTprl%(69sRF7OE6z(4cAi&a*g{GL6bjtYOfZTwi~g|c+QH(N}QDk%MrLl$C5&DITr zQVBo-{70fuGJ!Zvqs&wpgWYl|Kdc|!@inaiQ%!SeKvYP#Wl-fGhXrS)mfPj<`SF^| zoogNvaG&Q|Lj^}O`>0UtK%@cu&Az4*Vy5nS znrrN!z@N--?JXrjOrZXnz1M0|J_Zn=J&D+Hx!_q_x=jQho!@_p2P>EEOO2S4Fm;a` z6wPh7GOtcUz&cX!CPz5|)U z!o@hx?M)%)6w&jZx?_GBVoZ+U6cn2)yGxY*l7gAfkfS2Ns%e{8x|gK$1=8&|j82_c zzs%*HRsJ24XqT~FeuJHbN4}n{pUiQm2jre(&^b1djuWgo^(W6#G>X@xicHp?QMXN| z?Dv63EmPMfF53kWHv-c1L!OFc+zaM{j{DDe`T*qEWSSw(-5d7w`3RS>Q%I5@XffLx z_631y@zoOcdt%f`w~~62IGH$o<3cso{Zjv_!{H-46tWmktR>+uFFb1DPUZes7{Ia* z&dH&Cbs8RKTYW(3sakV+Uc5YX5jTx%dm3ANe~<&|uu`nbE+#Ni`kED{D{eG?q|Q{O zadzv&BFO3;cIycv{6i?bS*+99oqIL*;82zDusiS$#qppu#c{Atd1i=xYv}A>Bz!NE z1Y~R?l8N1ef$XmubXKG08N6J}`{SI^DjVbbB$Jpy{wv7<7q;W$+@gpjcv^;pF{IlK zs9fZzLK}cWd7v-m2p(Hx{MFX-XMb8~k zl5$esJ$2^wN)oXDEXJwe_#+VZXVYvycRp*t8p~=(4o+AVWb5Jm>t+i3(o_a$LBD@8 z6L~0|Wcm{P(ONGNThAry)Q8yyE;Y7bprq0a@ga?Ak1CRxzj`_DBZ&IIm-wlO@xfV* zW9)Oq(z7`?qve{<9sqW{6<{B>X$lnn0PSD zv_4~l=j+wf-LaTgq7nUk+Og{kzUM2E%ZFg})NTbhrcZsHhGKL#UpgYNq@=k)V?-l9 zb^q8N$z-LPXQw6mvK*Ws63Vou(6i!zPMKKIZ1*F3eI+)_;95rkzXA@*JnGhj8^1Mj zp8F8TX9)rx#j&%5iHVszEiFLushf-2uAXy7c`lY|N~^ICV$!-|{q`v4$U1-dp1hm*?ULJY7q3HB-M%xDiKaPlr<8p5VM& zoV^+JPm3Ty$~*#3RU?sQKxgT5{vW``xGgW6q=#@nxU*n@{wgTY_2ITiyScmM@bmS{ zBTk&?{L>JbsETa4v5# z5JOpag*h&XZV*TV6C>?ixg?q4YRg=BC#ZhL*-!8~?#}DTn!h~zw~liX1-1XLBTM7v zu7>+4T0W0^0N;^Y#zW43^^8o>a{awMC2OlfA$RLLENG#WhpztMc=r+gHo;glRH1m> zukSM`o{(WRQ?lT#Zy%dL%j9B8PkO-se`O$%0idqG znora#g3ID;9Ko<7H7!6B{=y=><`T*c+Xw9UETA^)>HQSlIvew|;OO+|g3px=>?=nuah4KfYp zq)!66@8Zmm6!+b&a<_BP-qHk1LCu+QLl=2KtzVQ7hkJ#GrWBIWSu+Z6Yz9Q`8~x)8V`7o-!w@3Og&87 za-m+CqIvO*qnwwcRs1i{fVQl$PGPGe^F&qzsL>w3>X>Hw%hV9i$fw(;p15wFH5Sfj zSx8xNYXDeMy||6B@DJ+{ZDU1}8;v%tEvz_VIk( zo#Hu+6&5DPfeXndYiMek8D`q2&*54rsSFYtINhqK+sq8Am18;Mrk34WtGzMC@u`gN z1ac!U6XWxaepGsloMP>K+l$rkHV}X9>il3H);rLkM!uEAZfSPPz7F|RQYrIL z%AST{eKISIPr^I16S@d>d20+6mLSLRin}xYbG;nodSP@D&1KEvFo9F~R0ZR?iJ#@p z6x1#eT&FbbLt`k=STdP-3HNRM`TNtZ2Q*_}y{_JP6e=5C^YFo{hJ)>a3)O@R9AHh$ zK{wrHs3XLAVsJST3BrJQc2AvFF_qM~)Q~t-{yPK2m zTJ8t+vRr~A8tz4vBTE?8%JE1z5Am?M03Ctv27)j3>5#j^sP-i<#5IZjX%)I7DW*3U z&x!m`e;vm*I=QV^omFK6O^3@HTXXz8NqI)o!on@oQ6`(E1)_tLU!e`qcZcoHP}La^ zRL53N3Uw}Y`TA4{cJCp?`<;yLooTBO8zP;zVVQbf+xOf|-E#Lt=5$J+3_fcCL}P44 zCp-`CZ9YdBG}7J|WlQXWkEG5I7t2?||C|^_827O&-HpAswZF37@IlHFFuz<(t-~{F zxlRUPsB_pe4XKp!$KfBJP2()z(COx>%(X~f$v^zbjT2`9g5w7b+lN{h>QRhBRqh-G zC%k#HY&t@If$z!5ZiO`=2HOXxFH=B;^lyjAb<-)iNA43dH*MIZpx{LZaq}sx{+A%?rJlH}MjHqDQ6`)tl%y1_N9sollJI$JOD3qDnY`lrSy_hFBW zrys^MpeCaf6z(`Tx%T^mR=jd2E7$8Z=fU%QDWa1wFD8~Zkfu&oa)S3{=1$b|g7;#U zrapsr$5MZ z_OTTiVsPYaGo+>-fZAMqsB%+q#(clM0McX`l_CmZV^RPLe<3C+FW?0F~YFG@$F7w6@F&s?mV`YY?FwX+-!DeqgMNr9NT9gDy&zn)uZ z76W6Qi_CtVBOA$5D?fX-^$9PFAqNp*%lwvTY{(-ESgo=oM`+ z!cGQPkhFh4c>ZdSR9lN@O4D6N#GT&*>u_D^dxrAej#ixl$4;72>)&{Kun09LVh2#Vo-?`zA5n_`;lMAops7(aHP0bN{JFs)ZU63K}>I9 z44Q{^N1L+?Mi-w&ItBJ-ET45Q{I7v?(&Ua{=0}tSm9te{!0m;h&0M1<&!%n5=8K0n7TpeT8zFI&XY+dX4TDLH6A{v*HrwTB74 zHFB9tw3b+1Ijc2wxc=Ss_LiS({Z1{$<*2vt{)YiE(HRj-Lh+8X!%yu~WP794xhd=o ziO{2lm3j&&pBIdjx#e7qB|})A{lDw&fpiq`Q{~-A3_C3xk7?K78LYT&#;g$v6@ex) zvJtW6dTq5thJLB6gsM5Qt)55*sQAhh1I9?5wnn4~+lK&N+J$flS7pgw_4LT#->r;4 z+)!N+t?A_#)LF5DRh(}hX$OiV2Jb=dLVpUYY4TzP!_UGU7My3NB@B7fDll^kpot?KIPF zijlXZ19yVKycf(lYDw*H%C{2kLnm!s?ZZUf*lgz>9dyb4_ zG#Z5A_ibR;6S>z1ogBRXQo(drrgBto*~Y#T(Z2V`@;Cf>aw6Z$Tr6(9qH@~)?Gg4e+41QNduidb zWtAhsI!HH#G0Il_{Xuc}v>5?u3o8WFSMPTY+3LPzw3G>4dz@9L|5_HM8JIO`%b zPdm|4viR5r{3A&vt`W#qaiuJ!?@33ZR#_1z;aqfK4WT1`wk#jDFj3Y1D`MKkN0Y1@ zr2SPypEni@?^p}(8U@dnRYmP$rO(e8LLZ4U@AxO-+u}kWsbyEnI_KB_nt)SCLf;|4 zfKaZbSDKja^Ln5c`)3{dC4HHus;JIo8`*T9Dw27qiGT9uqTwjlO~Eh;JEDzQ(MrMB zn$I-PI@wsPAL3iK96EG0j5=QK?i;pElaz(=$+PR6nR+CLtrxkR=Wp?s3y_yP4BmvH zJ4+I$(U*fJTlH+l4lu@VB{!D)A!jc1WtTP0WWPL6F1CXHD2j{*SUqX_#t#jPUTwRM zP_oQ^^hiAt-F3nX;xjiTm6)O5RdTVwn;==D0 zyTtBeEq@OmZY^pWh^r>nN77-fb6N`a6MKKOf_^ye7R~xn`QIaok4%&Too&nS z@LpE4)PLz^@gu-BM}Pdu1%t|&t+vWS?6Q4=S&N@5Wc}f0FSXz6uFz(-;WFbWIVU~5 zN(@M>$cr`5#d~^)CBXzl!5X2#ljFeNVjv^VX~LD?<#tNoho@iV{(=JwA=u7Iz7j|D z{ne4miudALZJSElRiewcBFgO}@KEq>=y9+%Nc*PtVWSeTXTN!MJwf`E&2LI&T>%T8 zA-AmBpCGrQ*wijkK6?b4h+p)cAm6(lA$?FO-%%*v;pCov$esO=11P-(O+zc3A@%w1 zh^`|0Mt%y9T)+(3ya!b@ehL#y3DsgJBi?~Aq7pU1tiFS1AOwN8In8Kj9M2;w%@PlY zWGc1FYUVLDV@G?9PqF_J4ufHsuzm}HEG-EUS5(Z;VU!f`D|&!2gcacE1MZ+*Ab+nq zG^lFY0K@@zz+m6<dDZVKs}c}Z4It8eiaD?ZV@I%bcGRia5ihzzc)Vy;HdZmskbGR zIfa$|Ehlq5zur?4%%4R}06Ye^0+5YMY%?s|{3htiX(CUrN2r-vBor4YPo=CUo)hyZ z8mdF?uoa`@;+|?@@#@Zo$O2L6elbQ*=ooHd7!S`;-JtpKZNzUCz>^wED+VAX!R1Z3>p|tr_FJ3Y< z=lNLN|6ehTD1Tsr#4r-cUF;bZ1xznt2?eB|r;FxhTVK%N5+U#vd%{1u#hjcfF3eMu zmgHjMe`=hZ;x*3N&Pq~Q+q3K17V;qB`@uu`O%%t?M#X|GBx1HXPOL-4i-0fAi7sWh zZhxj)jVP_2-{G1&E|XA7)RLw^R#~Gvy?*a=$m4&QdJCvFp6`9QNO9NV?pEC0T8dLF zXlW@9#ogVZxLc7HcMmSb-66QU1_ILoo7E3%%cH*=hTTx@Gj}=nzR!p^!u#5QR%!ZP-iii!UoLr z=4{Hv6zfjHz)^#b*v!?-NBt89jLvj{!a2@2dJJo6H4eFxu|(_?ItCJR+0 z!k_$e54%W@yHJmzf&+~H1WzX60-jVWyI!-5)r+)W%7{?=$OTaUTM8n=y$P~@wc-#y zw1CYkw@va@FXd^^(;EDQE6zKo#db>k90oE5O%itg63<`lUci#Zel}n2qDO=i<6?8+ ziW!D@SVnn(Wl7Xt=`U+$$<@w(?)AD{hVpu&K2sCcHyggKPAXu-;_;=_E}Y0M-9E3ODj)ih7oi0x$> za1`(OfeHXWmVcY~`Ikd+(QRG~^UEUPQODNDC)lB87I)1x{f)vLLUKNJ#$Edd4|lPR zbiEzvlEZArd}iH+@{B+U=aIf!HmaA+_wr+LNJR%Q%=My25mmUr8eBzs2Ubn5XcssK zI)%~Dig*v^QG$mO4A9T5Rmvec2Q%mm(eb@q;i^R0YHFE5*PLC019g#;!r{Fy zdAv`+P9k>ePlLjrUuAe30YIJdz1lbp)Cjm10`|fxkcJ3VCOZGCs$6VWQN*JW?fyfQ z1k#<!v4;Dx1SraiPAA%6t&&Q&x-lOB5)I_!kK{AwD|g28f5XS=((e8hYx$#5MqmM zo&lCj*|OkyUi+H&!m`qBVTq83Pu4=g?;&jc-k7BHaU}3na~f%83TcLS&T&NrFs?dp z?UvbxCxy{nY>L}RuE`#_FB2P1YyFHaKW2i*?XP|7n28)zCGw!2dIUx%@nh+$7CU}M zpL0)fh6hTNTlo?W>T#~{iOYHNC0sj6SG&Sxy1a6q z7mS#D5S;6)xogDeO5AGZc~%VrWi6e2G2;p|jlXE#H6c}1A-=`aIzbDndAv4|+jEZ? zxjE71^F)vBewQ!P`kMEh2 z6l67i$oVaQ%r19~A0dsy(;&|$*C4|Or?DEhGp&Ux_da=w0-EgmltPk;^@w~r>uu5U za3pD(x3QXnsCA5eFY$t0uO=Dbbr|8r{PF3QxgZ=^rLSycOzRX$_XEYC*eOY5mkbgA)GaQaXYDY(>a@-~$s%v)+jU6w;l?D+!z*6zFZ5pe-(hwR zz7^fW{TQvyewtxx29m-E4+|z~U(PD?s^urg0k>n$r?{3?7ZKHxI3^aT zKnW=yS9zb5+8s94O&hH36NUao6-MCx%4MTebhSYPxNSa=3+LVcvpRv_S->*~@;>7- zK7;^pl$sI_SR@Z-Hpr_11OAla!D*|#28a;F1RV%Hk_+;S1c2W&ziz*Mebu^)r@w6k<$W5S;_722q0M73J*U4UKj9Gorth@X=I5k))ly?2?BT&hy7)`cinCHD zQc|cVzH-oZlF@eBVzyF=E(k`><8ajgL+IKif@jX2he9ze6(wJ%71k)()2GDMO61O0^^o08}*{A82~=(=iS8r*9)!*gwW^c zh8B2F{MKZTKs<%X>yOm!=i2}OxO3uR=jub_snCPd2+VEVvWX-z`P2vo?En9I8Tx;{P&+KW5FD_K{3f`p%aegwa+0Bp zTw2?nJRufoupI?|SaG%a6}625|A?q9t7!lZk7F@f^R~zTRc@6!=Tp|^tzRYIHXx>R zU$BkTT$I+#jAupBDs|P-=CJ1es%F_?^;I!uyc>ZXa8W!sMdMXF;#sutxmxZ~S93Ry zeizC;0^@Q(H7lQWE%&-+X#6eF-v?hq)f2l?;;x}nfOXwTVarJszoY_BwRb29Dtpq~ zz&`+Wpndi{m|#M+x`bs^tS??Iq)1?ip|{Inw>I+Ckxd5#bvV z;UoN~khM`1vFBu(hgM=gnD5aFHM8H>D_K7PDz#6(s18Xyypejd3uj2H4%9Wam@!02 zyBKikT4YB!hW^dwE>78Y=Oz#~U?{5@toDWwsPieW^|1BwT|ILWaW)ZEu(?4H_{+#>`lDdo}~!a$sV37-~c zO)sd%=58k%lQ&ug?q9We`)*(VXM)-_e$x{jTPi0y{w**)duKVRTa+851Tvw#{p{ga zatJ{$Hy;7|hw6wvST@!#Oh3r}vui%xDSLxpCZhti`03IKyu663SZpVsx#5s8%t|^Y z9A@kb=G)&QGeAYeALBp`^mXS^(Xw=q&NlI33#k_9;RA>nV-*E1dj$s z%+Ta9+RE{H?GRU*E2)A25ycK>^|@9%$0NneRia={Ek7d?W9GgDj9OzZ=hZei;pR@9 z92*pAXI!{(Gei}C#PP@bRy+B?jFJo|`&D+W3A-$d?X@QP68`2+t>|AcIX%Ed`f5;j zfJINuCXvRx(5yuB{DFK3f0IvDn|pY(O-QIPkgC$Rq}Acm5k!;Vt{5rXJAXC;ZPqha zFL%hxS9`KSa1nhYu zvNZTxi-TR!nUu}c_i58b$fuO2l9G3CPd})b%)^ac_jrI*G{+o)Pf<9_QDGu`vef<~;G{+84%s9b|g=5Eh zop=NC9TiKo_ra{B#W8}FE(B0!n~v7uYj4z#k-Zn%&MOb*bHFUiw!V`7!K|KobI>^d z{d&;Qz)gz>39)2j@%RIKG4Q?g;cH(1j!*B7WRT!KBUe3SjL|J``SW&121eFsO(=#z zCeXR;NOY$cJi)l;-$caESR#Pi7)WOq71ux_GP8g9!62Wak=`viB90H?tgNY_NC*V4 zqeXbEXu#&z0C!WQ)fyWLw)DxoEaNUwjO7=%&b}?Hw99M9sGMHe)~V#MuZPUZffxR) zQyC+LEh4@K*-N9yz!yFio>?{}ja_}XvMPvFtBbYkSkst|f^XnI>Rv^3IjR3LN$y#6 zaw8aw96==HhulDqE;Ll!FCnY0`au+bp6!d8tMkc z*mk8?mT6fpmQ3ip?%%?CViYqi5>>fJdG#7nzKD|0Rww?LA#$9-a&!{z`K!_Yk!br@ zT%80N!K+QHVIGGe&7uXmZstk7O{1}8=>qzhQ^jNuPJm<&IsDfYc#QwRF(IUic5n|b zJknvNs<-?G1>g1g@Q#^B_I$l7k0W=)cCWe0arJ^T;qL?T8H*(=u0AZDQ|3NZ#*!5< zZKX!z5LO)md<7kR1wPzTG)j#vqMi|iR9l-22qv8;YE@te7+fqvoY^Iv?*vqwEts9b z4UrO}VEwn!<2sV1@U!|F_fza*db2jw7yjb>C3;ADNq9!yfb3LdVJ4nz{&d0K$H{Yg zJU!&1fZ`&J;=+Ifen*oKjMJii#eEPBJjC@uZXgE1o$>mPiBxV-%^my3_YDQS`S%~K zed4#jT5`_u@6H&umt$nMv+$fxm>)Qu+5a-zU0MIIoKe#Dx5m4h^uT66XkA@$J<`ul z>SedkPiDlhCUa^MUx?TT?;z;Gs_{BOhYeeFKWOTmDbk(e=L~chjuct6V3^>uDi1j? z2&b*gC6!!e%bzf-dhh!~(mIV3_*y+T9X;n5XUR){oA5PJrtVjY5|0rqFWq zU&Y zzx&UNHj4T2mWuh_j)>MGE(wh9xrB&q>27m1vb!X>dM`;Zaq@$ zPf402FF)K=802l%iXr?>;W_1y-R0Np`oYlqOR#sB6+UUkh(Y8Um(fb8OI>zz*XWdZ zqt9>4x87ta|4s_hKxx@kWb%gQjen3ZVxNIhmy|ON#zt>#sjEXEgaXxH4lo`?yT>vIP`1GQ*NON{(}3YtZ41pPw~0h^&^#m1e}A#%1(;e6YFpz~!}y1Ba;A2B?F(~*GTNVJ}Hoy!mh z>!V@RGi@qBY<`cH=>O1X8S4IMy-m3O)wctp7z3*)ptNX+6(>xjIg8=Ebh)sxeyGvy zK4b?e)hBDo+BuM!WuFPD-j=IGn)7zx%5X9Dg+j zLP}vp=0XZ#jB3UQ*K`O@oRVnB(?z%iUvUaT5es&33yN?GRQ|q%(*#Zj>R-S1N$WeI zTPYB2_@`%t&Vno0A$)$}L`_VMHR5~egYk&WK`sR}g@lEuC|iE|_f|eFcqj*cLO{kF z!ET-$WTPUXpEi+&LwNFJaO2M^n+xWzI)+c{C@;=ZX>jMHB*tugwLJY^onxRX=|iLF zDYED(UXRSc6+sx$y2V&GU%%R6slp-RXr*`*UcpVmZ1Gse@Z#v7wAaU)!#FKHq? z?QZJ%2-j-&gU9W|Vu5aYknxt+Et*!Ou3nJw7Ywh^eW5(%Tf1+DzlKH0T8R%QFKl-u zy{<&b9^>PFSkOV|gB}#Mz|~>TxwR+trd(gLCHeT#@9_p9va@p7shij;#1f&cQ6y`n zE;VNiyG*F*g>F_aqs{>6b%!gLzEyc%;`vwd7L0D4=NGL!=F$-eNc+{+ri57 z>GVP*tzo>J;Y`coEX}2q#dq{JAUiqqC8nxmOrY7}(E6I^R5fYKWwzuod#rlmZwXCV z3BJ0WygDIm8GzZj?sMR8gCDAHY!iRoY#LvKbWXTL_PSiSAA2GkSx?Ks* zRUsXPGBU@p$rLLUG z0HKB!T)h;W;1WTDf<{7$y>WnrZo-1(cu8SaFdEuP;q8E7*KOtG1OcBx*yU+q{Bl{m zupE_Ik;Gu3#0o2@q@3xtmg4N2V(PVBn>fJ6Q^kg(TC~Dk0L42_g~WisT<@qXhQrNa zUM75pjL^Xe->W=zOIcp)|MJ^j6-YJ+6p#fAvFvF@JV;zk^RZS~fX8M9!M!9u+N%ob;?9qM^AU}Yad6;<=&u?!nYXmsIv%;x z-A=+8l{~fbbm)iOe2cjA${3v(&^Q?vvd#(5Zw(FDH$og2LLA?_Z?*Le%wTflgb+-a z$7eV%?=-cZ_5tWSi{)ol<67DOceiQBvpDPf8q2-g6+bZ~Xi9c2FU)?F6GoqUwe|Mo zx9O3meMo6LH~3Yj3~e6y0mL9q_dw}d@Me=Sm5?!o3xo+)1YV&8-j4vokl+!x%>Vjg za_#V3u7eH%WQ@T&$F=55rD%WmjLA|kc%F3 zC>9M+DFnt0aA591W$wY+HGt`BVt~>v@E)x9?s9dEFGM#OI2-;RQtTOR%VZgDu#7;! ztA}N#xPe<{HqWPbz8!*@RTn#*gceGz9Mr~Wg&VY_qFLuik}64 z&qbE4tB$lMC^${N6O115nSAHZGD8CD@wX%WD^WRP5I88n0(m5 ze(ZyH+!4Kv&xI=@87y%ncpKT3b-Yon{SXcygANzi|GzWh3au#1+Lv*K+ERh6LF!yu zh(5@14t>Cag=9xx*~-5#I*M|bdk6`LQ#NN!+QmuY_#4mhuW}w>=jTIuPJ=jyo%%iS zeSi*rX=5gMi5nRDU(oN+76M*?Ese5XOT}e-Q7$_9w|x^gFw`Kekk2z?E^YKj=-w#* zzkAX|de?+_&!1wXD~lF7DDz6F{z|Cvirjb&m1BddQCx>Nz2V(|kRXJ?2K#9e_2c4X zw+q&D#1%M_9^B0CVyg#i!O|Olts2D2v6j3qN{j}8m)>AI_j2U-z zc@1K4v8;;kGjy!;LMfK!&7C6Hj?EGwXGW`BgV${#hxvA#l9gIfgXfSfAlf4yWvFm`~(ROCn zP3Uy*mUjtB9K3pwkHGAt||jTHP<>n!n7puDpnlJMYnmeKKhSmPYWjms^LZtmL1Gi1r|jsN2WckYzZA#r7hpX(U6!0I<% z78IJm<4+mC__5HJQ~s^A7)^Vaz(k2 z)0D5a5~T-HsF9$!b4NI?uC6GRIsrxDftt+d^7+(#W?YIQ~G$`0LjZK zf$B%qWd_$BSA+AKWOUq>pw7x{1@!>bm!nHbQM)?*0&rfA!0(EPLw`4x^ktQpS6CQ< z3Kl(li4U(+2Dg7}F$lx=lPMwDj0Z2Oj`wHSyLC zk`sx&UT=MCJMH77^Kw|+@-QC4?=T_izL3bLxcn!3g*$T=U_tN{h~*Y@GT%Yy_Z?;} z0EBaJi3yRKg4ihu7l4u2C*iyp|5slO3}kbU4`J~m zmo*rPT-68fu#t9a6J-xQsN{#d-*G&k)UKuBcs5gCI}HmDs$P@DE?<-HF#W4amp$UH z>TSh_z@AMnu@scvu%?Kx2%QMVbdc*zCii8Z3 zVMX;d4nzFrhM+i`YaVl|l&!Bq8;f92QQ5#y1d*f+$3_%jO#9iv;?YR{wo9@I>Z?;; zAXf?HIJ)eDEdYbhK84%wWQz6Sn@pC_;6CKiZ_FA8~*MPj!&!_ovm%nMHiQO`}p@z3{bRs>6!idm* zof+7U>&eX}SKC>p^ zzxv*p{3#XueXurdAtY)a6t{I660@5TTUs7DoCNo1%yQjvEaY~<1bbRD9gZ3v^?pMl z*dRiRJm!Y=b-msmKD>v#|BFh=Bk9^F?JqdW`_pgt2Y&NAS47UE1C&$e&FT!veZOKl zA)dcI338D8K2HwmSIQ&4LiK!06mOundoTzWece%4*snFGAtp;cP%jrg`8J!%#*6Y= zZz$CSMMzTanl}E^rsKlZUYds?ZG3&)`!4bylwbS?diPkO{O{Nwp)RYr)OHY%JwES| z*8RjDiTA;E1^E{-roIDna1i@n8^N#-*jGQ5ee}bs(|xy0goFK9sVDO#@e?ej@-T;a z4=3O5lH493Tw^?;!wF}2;C7CGIZ+sewiLv5Ou#{+CH+ zk>t!;Xf7LA5|xc&Q-vQ0h>EP?XT;kjs$Wkfkvdug&fW4m;=IykBQv zAQf0)-2K$Jxa2;wB-&eiGkXh&t8UTafamNzDv(<53sM8~K3qUv6u}wF;K%rzo*1Y$ zb82cU+~m^S0#fPpx$r+>5OW6AzisYv0Qb?x9f^*dLgPkGgwhdG7f1HH+%t_ zU|X-I@lZGI4Wgcr02*$aH*o`EK1vT;woU1<&90U9X;dhq)DEX}b$as`IRkUwGx@+t!R#(69{sx3LXq86?Z z;z%yq^DiGZFCYSX80z0U_=tlLoI;HXo~TXp-uk_}tdl8*p+qvpe@FRl12MLi2NWcw za(q6xXp*=(!4}?_Itka%4qlAKQiaW@xpIICVq<36v0mOkR^5KAX%viayU$^2e}Z}a zGPXoMKAI8_fBh1Zxby0V#G}%!yz-gR2<7SpLoDFgy5Kpr5GJnlz^gmbp5oLG$yjXA z6g6RMw2ph=rCQ$Q=Nx+V+o#L=Ma_`?S=Bpn!>>GVuJHf zXQ<)#kF6b5DW6;`4XuTComLprj-m`zS9jrAGJQv=>5h3NOC)ZR0z{gh=dQb&U>~sy zcAdxWlhA8*Y%8-+jjBH5H{y5c#L-G(daRT_b3fgvO}YCh`6$ZHT~n0p)s9H)m50O~ z9BfMLy{+>X{K4W}aI^%Py1)Iqk_-G!z7G3I3;I8>&@{bN$PE@i;N}`~#r7urggep# z?mLk9+Sue8^RCn3gR(J$SV89rGtY^Y1?x`dY$_F zh4z%as6>c2DPCAl4=?zxE=v|@=4M1fR^s9)zx{`dVY@SXz(T9o?n{bC0dL0RuDJ*u z{X>gf3cfw~o@APN*QPh0Do2{Eq@X0)f4$+-P&2_5*OnHqloF2>gm3^ie(=xZUpxz% z9Y9lcM2RgMwT7l2Ws3snoFUmW|9qN3VP`}8%7Jj->dQvjW`_uFA2RjDw_Ww8ja-eo z5AJ9KRYgp{ch;u9w}4mTq8)xY`m^<2z_)Nt4H6%T_b$Q-L!d~QuLg)S?uZ}A9L*gV z;H}_+ip-{SPnzUcvJTk0!?0?9bE87MNf*VzW?EY}x(c158b`{dyJZtl6Z2uUphITr zKz{D5<_?{XeeJ4~GobyCYNv1Y;TiI{*vU|UGxuR>K-;_9`p^_^g7^`?w65lJnqTK# z%`oQE#TocTdi!3H{w>#cA~t0DJb1^b3B_lLh=S8p^RY%5mgAn14Yq zG4zGG>JcfOPS^=yY?^%S&5a(GeSl{+T}NdrE{RB*d&388t3+4YLdWg z#E7sYc`7n!2@2Gm_E|D26d9YZZ>vYvF)SQ(>H#*|-omc-0ApTVio&*n!l^lvs};nQ zbuQmag@-reVqc_tc&J5(^KnqlP+uwJBMrp|jYXrnR)^;3qa9{H>C3=ZJ z5AiYt4J_|mr5#_@3>Br{lGIGB1m2Y*5>1ZD_JlM$F6*E6zRJ}&vc74;lP0tc7x@sg z9%|Y?A;C#jMwaFqw^PS8=D3{JJg(-X1h;h-qGcbgBAmD_|}sUilS|a>5t0 z8cSH3SAI5jKTX08?l3CKt{nVsuPR=b4bJdl(xX(Ey#!7g+X2E=s}R+P;ekgfvnpqa z%L1Zx%*I3e-E{1L%>w;Gl|t!4{)nqGLx>NxA*!56@|*1V#vhdS)gL~}LyIF`KjA}@ zs8`{66Z8b4{_lh`)mVKorq7rL6=Xb;WHmTN2yQM>TCQk-&E>I zR#U@LU2*@fpS`JnL~B2*_Go$r6{8`3B1BD{pws&U1DSz?BQTKJs={o`horGl?u!kS zo{|`c5=zp+ZNOpCJbyjI$TnP4h%uS;g@HsT^$X#w+fYUm8P%Yhqojqkg$DQO3OiMD zy8v6hwys>c1a@T`9>CSS;h44m&*XN9D+l0?kJ~T$fy12tyGEA%WPov6mYwtWF5>;( z@F2a<%)}A|{o9;)ZWFd5@=KoClF6*6VjEOS!IT=yDI_A5jdz0pgD&OTyPpf4C^M>X z7}TUR#54pnxHMQa=rkw|5WviLD69A_T%$78WzZgi5);E;-y?<`YAj}IEIb_Dd5p3N zY!N{bT{_b$N*8;VD(N>lqou?#g*!$=k_*%S(pqkoFYjt~DNh+gn{4R;})A9>a#2GQ1b&PGpfJ0gveBwuT zpkgPn(XLBtiSCU1Psbz`-(9_Zl*}J#g4vIKCC`dj4~gU8YM{BE;f-PK$L*x!wIU~z z<)Bjj9bg>;R67qcqVue~&V%}@ZgXG$?GcaGUmn=r8GBjA@B&k`EOK)`b+%Z6ra#VW z_A+cuM1e!p@%N=ap?2xgw2>n?wjREo}zUlFqa+K@lM#jj=Xd=%Lhn~#o z7-zQX(;zYN&nx+e^jrCFK8Z48!i2dTTB>v<+4ixq_W-}&HufR)($HPEQ`$2yXe+OE z3jLI`Aa>|!XjM-ozPWD&fJoG7w1!;FZ;`Oc2LoC@tEG`-M z^q}+igzH~O+xlF#u^eRFTd>x*Fix^3btVMw!e5GBLf4%JkeSfi4@R(6iSCC7uvM}C ztHx5Ove{2F*d&GYm)LZ3&sjQX|Eqa){o4-k&-Cgt+}M{5Nj`~8ZW_KZej9+qLjX@O zgI|d6gfD}ShrcbOwkW!I=A(9HRTO?=7stJ50DH#l4P0*;gOFVrWn)2fB<4Jmz+AwR zx~!ROYy_r}jP0Q&Y>OicBZE%cr^+cuWO5Zz^}Ez$3Gxug9Y`ff!^XHHjEp ziCe`ywzf~dGD_5xE)SD5s|l0?$lBhmtNXghVoqW5%L&e*tWPl+9w8NfcDXm<{z#Xa6`>p5uMS=6@2iGcp#4a|JE~t=1 zhE40(IUw_c?)2xd@o!6pVI1FRcGu!EwVemoFI)qEm{D&rj8pva z*G@AgP0ddyv>j?ss~(q^5=RbYStM3A?TJl^gNr(0XWu+pF;=r)IvyTAR!(29FlkzAHr;pNNxE6ISY9>qX_smB6NIMAAKR=+ZgycXX%Hu z+|%=Hj3RW5ZPbiyc*>vq&!K+({p99d-vhDm4RG)coE^LN(*S%8i-iTj2$@2J;EH2EjAmcFD z{uFKcX+B%8O|wVSA*i?N8I3^YQ@x;^tAj zj^+KyyIm>F_nSu}24tir&njM4#XAQ5YrKzY<_h35((KfRWwvgC(S^>+Bmt#01m#nrw2^I?AL^PAP;{}%(0fqBv>k+~c5#2hnPSMx@2w8O6 zTc@Z#7};qDSrV>lmoM4J?X>@6_@vx9RlR_#QsU4&gcm!auQ*2?!VJjB%TR39r&=e) zgTWzV`Odg((cn`@30FVm9;5AQY z=(E+2z~{A34Gqw|T0lld+I!lhb{Qi%Oy`~EwkY^Ip)iykjFkQf<30YQpshSYcKAuK zA#vYtlk;BoZNBC~fiYzNY;;}XYwua-tz#KKM=#E`(81?xi)Y;c$ll~~^%Tc;)x3xQ zA^JG&Rx`l+ysGhl@*XmkZR7O@2PZxu7AGbl3MVol90y4x;K67SC0YTS0%^)yxHk>q zCg@v^Xdc2&LwG#$@h1t~eMsOF9!7>(Pm8wk$zQsG#!h>n7|LY=g|VQKQhv4|q?3~@ z^pUI#xv_tuO@yFX5frh{Lf?~MrEQ_$V{a|ih0!2}(IG0}po}S?oJygrm8^9Nj)cJh zW3*Y+*uSEV_wg)X13DiTj$c@Zc!>T(_%nuBuTMwy_|iOo&`t`3AREon+<%boE(&r& z;UYNZ30X{D4l@_qHAf?5>C=c{7;mOgC{$Iz&0$x_IhD&{*BrbkvJ?3zMYo&#s#wYR zWXbQ?*f;whBUn0Cti7}umg>KJ8oXoJF#vsOUUdw50#Ty!q+1?(yNrVnCe29j8 z2w%uvQRrMjh_f-?2<QGxv6C9(34aKPct&i7a=-Xz?zR zGb(kf{*3I%uT^F=CQi0N-*`SjysgH^ol3%)O2VC5#Fgp_h(^Mu&cCR6)P0RRC2g}$ z82K@qv(rk1;1(~YM`EfW{%8@Hnnl@^w*AF_n$|a;=qQ+65vF1}#X3ztO*#Fp-`irK zFN`g)?7}vdZn%>IKqVUbRCW?P!LsmqyR<}KsD6DFcVY5%-peb=Yl6ZzY?y_o!#GUK z+;ZV!0HiAIVH|&%9d((lu<7~cqR@d7lQ+h zm*Uk8jr!0FjD8JgkL&+J;9ou&J$#Z@YLYg!ZQr)-^W8F;KZ)5URoLzH0N2^SIL;XN zQb&0OtdaxJ5)g8{ZO$vocSob1g|Ds&~B0auI zk{$R-CAylN1L#BnhW}q;(Wv@m@nkfZ=hTK~WidmLWh8^__F6(^^nr?G(M z0b=a@wGleg_caD8A;Oy->y8%3X7VWmF>i`l5P9;~C(lDmduc^ywnBFa>5J7C?^|5C z3)0neKP2=a^yiJi@Y9D)!33hK(#GdVheCj@-wnRP!zb`g=lmlF0-j$-rn%kRdXF90&~IDxWNQRI=({phCX zuxOoV#_0RPK>HDAQ20R#5$XG>8M}8lj?bbyIL)96-j#a_y_V=59Dn}Ob_BDx6t)%g zRi1>7k`wQsiHq*4M%&94^Wga2lfUoXou9cH zPf)BDq4wTO%ub=cAO2?WNx}qsyb46kTL7t>hUtA;#+|}qdv}?1Gv4278^420o*`m7 zh4&AVO!F=&8aPIYxgsKXNtPb8*P(2?|01b zUW{Lu_q^})xnFzx)~b!h-4n^Ty4oD8-G4%@N3mzA_!avxA0wZJ#%LVv{3>1@opCTs zE`2%GHm-2JB-H$e!X5G_G~%X2MiOz)!Fq6%7;n&=2xSQI2)7C92!aSS325am9_4aZ zDX0cYV>bw_6jvu|`f>r6iJ6^w51O+Eipm!fW?m($(yD$+LR9#nV! z=MZZsw^%i!7?jS_ylUULeHCEgZt(E2s~#r2@+~sft=Y9}-Oi3@UB_{92NbMl>@sN4zqb}88$)RW63&zrI7MFIWIL`pQo{GfzgDtEdvh^iB+Q9 z*t!SM_a_1_oAs<|fu?*rTlv)`1=}Lxl|ku-Scv1q%vFlvy|?ZU44(;8v zOr*E~+$9+~uynF!-$zjm$@U1pk$gW&`4?M_Tj$OxH5uTXni;G#=tzETeBvg5T1LGF zna`@(0*xefM2?YX8bMYwe(gSjgo_B@YOeG51VuHWr*)DmWGeV5Fv%OfR)e-BGFU2EW>)FVSyrhPr}K>qurYV0hmdSU&kcKiKvs?zd-d5Utp?02 zvECG7Uwg!@eww%?%hPZi8ImL(kra-@gpHpaBbQAsoqei)zo3RM^gD&?VPSD1O;^s) zw3kljgoDwtb3krr<4HW<$@2fB>Mf(eXwNb$9JuyY_w_epb^ni0Y=8V_JLrHI;K!44pPu zM^3wc?N+j;N5WG?IbgKQ&mh57` z{qA&WcKPBGcj$4kx^c(_i>V@=S5)1edDbYJB);~(o zKU#pqfboGLhDsHneD;v`we}w$*k?!%-)U3(cjgzf^}$;hG3ESLH@5$o7)m$Ac42@& zPCAA?LaWoc{CBN$FGAO(_i`c{Zc|cfjxD(Ff1_M7>0qJN;$&JP5UBuEptLOkK@^7prGNF6S*x=F+MZx z1xOQe9!l~CH5YMY4GCyQR@$I*?71nu;f@)(uqPCz=%b}Zo=ju=-d1YJ9^ar3y5ggd zPGx7=S~YvBQcQ2ku>-ek>dMNHQWMC@Fny5e8)A+|*;~yW^1rg4-Vtkkd-^V4-6c$z z2&s`n-g|=7T*2RM0*|G9((=u<=fCr9S}Na)e+7DSFiDq+5Gx-gKu)6 zSraVvgz>!BSCOaq*88^h)pf?}#-D;x0a9FIzJB8b5%M4elQ(`miog!QN1=ji#mK`5 z!?4HDz!1auit!QS@!eK_4itFOiRz`Sa)lB!|o?D-7i6d{yWwHo;W-_ zyi^a7I1eO}ws7IM7Ou3qQbv%&Q;#dn{*xL-u^20VL%`h24CC+m0hF>{^9iWvlYa$0!_fyZquNbh~ z{Ft?_U8?&Euidx3+gT`d%;_-f4GM;FARp6aJwd;gyaE4MoSGUvRAS~NY+cs}<7YlW ze-J*#D?w}GsTtF4(O#inAkY$ZsK~?_LUr|Cp_CA4iaNB$;1yag z0Zq9sv5cvG>zXKo#=P!8ps6))BBN?hvh}1lV7wCpI{b|G2W@$+Sk37_AO6T|#HvrL zeMq^5Qe+)N-_K$}pyD1?P~FSX*9t%@aDwW-1~vp@VTZ02i8Js`+;a+wgltA|tXr=Z9{rs=$3(|L2F()y5F&i;UF*7k^F#|DOF|7q?iBmb0M@FC$ zDpz*{Z0!CAr5-3!gyQdwy*}%-Lc6K%$yE1qkfEVhOAgSwm^I)w)qT#>@T)0opo0=; zi?HGW?6n~eem2yqi)65Q{#;B9aGO zQ4lA_EaiHQqwL{u)8*8QJx0DCCE}*DT+a2HMA^gOrqlJn9L-ym6u6=zP86s--w#iU zq0l<3`&y79UN}}sGHPN>k*(eKlOQ$MSkGy!JCG3(rx{bG-&!v}*)Od1y-c35UU;G3 z^7>O#h!+Rq#n&q?&Y?%5^u1~hzoJn;05QylY5(cVc9dS^X1HG1W{6(!W}sfcrk|c~ zuCQii(t=L+`6@sY(BA30(;_)SBS)#deXZ%P>+U?V2++RzU9@`e(##G%c$t()@j5S% z_PLm$7I`|1&$04$t2yO47i-Rs0DpZch}lz}Qh#e7gd4qLC}DnEDU0ZeOTX46^r02E z`rJ}bM?K_nlcl)zM%RE&Sp~Hv@fm2lwp_>p*Pgv3J0G}K3UrySKO#aV$uwNwc4xAn zyIEsH>aH7m4^e#(3c(FX%sE6cvmHrgM@QLW_0QXbnQ~?!5o*Eq7j1R5Pl{2fdsvU_ z-$;X*oC)HNSygf#`=oQ>Qex6Oi4$m3_8au_`Tg;cX-W0dKv{)Pl2nO!FvKXdN?)DavOAp#s1U!y zb6A?AA@SPFf2_8kKw4R_P#4_`ijAiKB~4mXTonE9pAD(=9&cGXz?9TEMqEN0bqjsn zr$Jv(K>WXyC!lND%_sQ9q|Z(4!7{f%CsPc+AV_70daOts*|_pbMV=Z2fT6SjR&p4z zC*)#YWLEq{e>mZM$HB$f{nYp=@RPE^>&Un1Vozo4x-tmn zF{wziHf%Gqk4i1EK|)EBs;y385P|6Ts|(rL&D>_hD6!KCna8GOZhR#9>&KjM4DYCnPJo*tZc15gtKK9ueH05q=cztVl-S1|v);QmHaS%Kwwq}prkh6SXr4jcy zN2*~Pw9G@T$>B)LF=2;}IomuLWlTER@Gme<{Z4sQe8JQW&q;H&N&opROTR57J&Uzz zHti{q`9xFh%!$z}!_o{at0~sRr9>!zUEwGE{jHj@)d0(btUAWvkLt+&pM}_k=z%qNCD7EDD3_j11Ao z{3mXVs0UVy@8%Pu-bvdUAgRlfj;T*!sdKI~_A{10bu=1g(;p9vaTRq$j7Pep6=qKy z4TR4OOnUpq*^@Pg&J{7u&bD8Cu*)^aoGT?Xx@EM2(Fv0^K-k$`sschlQd74t1OQ`z zTR)AIvf$W-TmS9pco_nj^TgF^+VAwe8OwsS7@hmedBKARi)_d1XdN8*QeeJgq<>U; zmPAcwYbrD`qLXmDNlhZf^EFcVWCAVQ#Q^0cVtr)5Bbk&}g}F}{3%q>rJm;`4M}`f| z-loc#VgtSzUYhch9&q;L=ui9uScO|HXD$v#6|&e)Uhhpjx~t}89|ZDy#G=i7Q#AI&-AR(~kbUDvN@4)>PJ0sgU5(N0Y23>bK1A8)wE>Zhp|I%;(!3DU za1Pm7RjFmXza74!8TZ3aLzMfwPigw@>3n(IF|M<4&pZBr(%XCDYyf0(AK%gX3pvbE z7uArawSQUG^iJk@yrX{A+n0=uL7SUt!sfoQ`e9FL--CHJprgA?im;d|XHsHHmEHCq zU<1=|qocpWeRR(?huV!J;MR)cc|8fF=ulRZsFhrzZ%#Ky2%&3>pmu3<4qP({yYJ<` zIXZDByc#&*d9ImIcE8-1+Ht>;Yfmw%AiW#YnPSJ|bnTqH$yixlpPfXh0G6(VBUjy0 zGa6N~+@|oBH+xl{y3p2Dx-VK%B@HkM>Tq)lDhK}O70$q?z{Wvd#N zB5!-QRu-(9VNKm~%FK_KrI37Z%ePk?U5di}4~Uc`A4 z=mErjKDdXum53%Q{%Pl9fPP{Nm4m0Uf1NCK+lxcjf^qrr60S>Y?6FeuEX%$36~d~e zv3g4L-I3Qz;-7u9tdIg4$D7alhYie{Zq*&q8P;2ARv6EZSBLbvfLFdLynpJY91EmN z%$jB;nmjtL));E5PbH;)m(=|nG)Twr$A5SDo4X-7>hS~JOE#!7mz~}K#^NiT63eNR z-~ubDgPbyg#7Pkr9^NdVj!ozU*wyOQk>aS6vNh&KgnvU#Xy+A7OnZ3uJ2QO4j{eC{ zu@_>Tnxr3qNo@Rn3BxkSBUXllv5zA8m0q5?{zSYI=XrWrWAFrXMuET1tZ*-Ez|Xw3 zKszT{U}d>+ZN}!;80qQHX71ls)+lvNgyU`Ip%OgSr4seKv^Zyj3IZo|El&|wmR(7x|26Z#sMcPFGe_PcFDoQPMC?i#5xLAIW z@@^b(=FfoDzUrJ-;6k^T4w#$0-OJ#3D3E`V(>%S~emDBA{$2Vz|92Me6yNdJ|LLqu zyD#SPBCbq7eeu=1Sk#Co$OgGdWacR@Q1ktX=&$~;5(oX?9Dz5hEoA+(|Ci(@CD?wesJp%S;) zYJsffRXT>$O|B<8pV=+6QmG%<4D!2vfvhQ1I!ZK5lJ@btI>tW4m(0ve5R5v}oUe$xh;&izo9PfEW9P7nM2qR=#B(bbLpo z>-?sY>bKqy?&tE>@;P≫u_&{8hLv<;y>NBH1|B+?cYwfXu9n= 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 z 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¬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%0D_&+mN@FIb0jz@z@;E=;Wx*0lA&>WxbN=E{V| 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

23j#0+AwIN9Bsby@H|8a`!lF%nwM5;U> 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�+@}LpH$@v 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�T7+Gj&vGn5H>BI(}4GC41*= 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�YPKu<2CwKqATePsJkbwzZNW?*pKl7s&)II}Lm0QJB z)0;YbEA$pGYa;V&b)rW5^Xo=I`)`D&SF+t_`*#tA3a#$P0!!=x$EBHIp*h@UPuOCD z@RxDJp0)1lOi9N3CaUnR1;(Q$c8-O8hDz;Etk9?oqA3W`fATCM4hqiREsHDoar@DQSPzvYr{p zPJOMnQ0acY?rx|g;hDa)>QIu95ox$GGIT%+P?laZP*fY(;3L?#e`*&Cq5q|hd@p(1QPut$wd#Z$~t63|wdY%-)+^^8lD_7+|+_hLepauuEu1V!+WK8a>NJ1Id~P>55(mw`ZPr zx3>ZI5*a+iVVD-lS8=R4uyi;{ITRSCZv%%%iCk*P79Kf_X1BQt{Cq{^d&ywfxv zzpjB5zd5lv9(vxQ8S;w@eoS;MA)9upxv}1H7i;l^nF}-E_A1~w>x^^}Μo+-{Ks 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

*wwB@}?AW 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

#Cr%$+^J`Aj3u-6T05o6 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 z

G6hvJP)5~H;LO&cN2 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