-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
优化了数据复制的性能 加入了数据同步器的源生成器实现 修复了数据转发的bug 完成了广播包的实现 完成了无负载数据包的分发处理逻辑 加入了广播包的测试(WIP) 更新 Nuget 优化了部分 Socket 的发送逻辑 其它问题修复
- Loading branch information
1 parent
ee12d16
commit dae233e
Showing
67 changed files
with
1,699 additions
and
170 deletions.
There are no files selected for viewing
70 changes: 70 additions & 0 deletions
70
BenchmarksAndTests/Hive.DataSynchronizer.SourceGenerator.Tests/Class1.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
using System; | ||
using System.Buffers; | ||
using System.Text; | ||
using Hive.DataSynchronizer.Shared.Attributes; | ||
using Hive.DataSynchronizer.Shared.UpdateInfo; | ||
using Hive.Framework.Codec.Abstractions; | ||
using Hive.Framework.Shared; | ||
using Hive.Framework.Shared.Helpers; | ||
|
||
namespace Hive.DataSynchronizer.SourceGenerator.Tests | ||
{ | ||
public class GuidUpdateInfo : AbstractUpdateInfoBase<Guid> | ||
{ | ||
public GuidUpdateInfo(ushort objectSyncId, string propertyName, Guid newValue) : base(objectSyncId, propertyName, newValue) | ||
{ | ||
} | ||
|
||
public override ReadOnlyMemory<byte> Serialize<TId>(IPacketCodec<TId> codec) | ||
{ | ||
// [LENGTH (2) | PACKET_FLAGS (4) | TYPE (2) | CONTENT] | ||
var packetIdMemory = codec.PacketIdMapper.GetPacketIdMemory(typeof(UInt32UpdateInfo)); | ||
var packetFlags = PacketFlags.Broadcast | PacketFlags.S2CPacket; | ||
var propertyNameMemory = Encoding.UTF8.GetBytes(PropertyName).AsSpan(); | ||
|
||
var totalLength = sizeof(ushort) + sizeof(uint) + packetIdMemory.Length + sizeof(ushort) + sizeof(uint) + propertyNameMemory.Length; | ||
var result = new Memory<byte>(new byte[totalLength]); | ||
|
||
var index = 0; | ||
|
||
BitConverter.TryWriteBytes( | ||
result.Span.SliceAndIncrement(ref index, sizeof(ushort)), | ||
(ushort)totalLength); | ||
BitConverter.TryWriteBytes( | ||
result.Span.SliceAndIncrement(ref index, sizeof(uint)), | ||
(uint)packetFlags); | ||
packetIdMemory.Span | ||
.CopyTo(result.Span.SliceAndIncrement(ref index, packetIdMemory.Length)); | ||
BitConverter.TryWriteBytes( | ||
result.Span.SliceAndIncrement(ref index, sizeof(ushort)), | ||
ObjectSyncId); | ||
NewValue.ToByteArray().AsSpan() | ||
.CopyTo(result.Span.SliceAndIncrement(ref index, 16)); | ||
propertyNameMemory | ||
.CopyTo(result.Span.SliceAndIncrement(ref index, propertyNameMemory.Length)); | ||
|
||
return result; | ||
} | ||
|
||
public override AbstractUpdateInfoBase Deserialize(ReadOnlyMemory<byte> memory) | ||
{ | ||
var index = 0; | ||
var objectSyncId = BitConverter.ToUInt16(memory.Span.SliceAndIncrement(ref index, sizeof(ushort))); | ||
var newValue = new Guid(memory.Span.SliceAndIncrement(ref index, 16)); | ||
var propertyName = Encoding.UTF8.GetString(memory.Span[index..]); | ||
|
||
return new GuidUpdateInfo(objectSyncId, propertyName, newValue); | ||
} | ||
} | ||
|
||
[DataSynchronizationObject(1)] | ||
public partial class Class1 | ||
{ | ||
[DataSynchronizationProperty] | ||
private int _in; | ||
|
||
[DataSynchronizationProperty] | ||
[UseCustomUpdateInfoType(typeof(GuidUpdateInfo))] | ||
private Guid _guidTest; | ||
} | ||
} |
13 changes: 13 additions & 0 deletions
13
...DataSynchronizer.SourceGenerator.Tests/Hive.DataSynchronizer.SourceGenerator.Tests.csproj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<TargetFramework>netstandard2.1</TargetFramework> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<ProjectReference Include="..\..\DataSynchronizer\Hive.DataSynchronizer.Abstraction\Hive.DataSynchronizer.Abstraction.csproj" /> | ||
<ProjectReference Include="..\..\DataSynchronizer\Hive.DataSynchronizer.SourceGenerator\Hive.DataSynchronizer.SourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" /> | ||
<ProjectReference Include="..\..\DataSynchronizer\Hive.DataSynchronizer\Hive.DataSynchronizer.csproj" /> | ||
</ItemGroup> | ||
|
||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
12 changes: 12 additions & 0 deletions
12
BenchmarksAndTests/Hive.Networking.Tests/Messages/ServerBroadcastTestMessage.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
using MemoryPack; | ||
using ProtoBuf; | ||
|
||
namespace Hive.Framework.Networking.Tests.Messages; | ||
|
||
[ProtoContract] | ||
[MemoryPackable] | ||
public partial class ServerBroadcastTestMessage | ||
{ | ||
[ProtoMember(1)] | ||
public int Number { get; set; } | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.