更新了网络服务接口定义
This commit is contained in:
@@ -39,11 +39,12 @@ namespace BITKit
|
||||
}
|
||||
}
|
||||
|
||||
public static object Read<T>(byte[] buffer)
|
||||
public static object Read<T>(byte[] buffer) => (T)ReadAsValue(buffer);
|
||||
public static object ReadAsValue(byte[] buffer)
|
||||
{
|
||||
using var ms = new MemoryStream(buffer);
|
||||
using var reader = new BinaryReader(ms);
|
||||
return (T)Read(reader);
|
||||
return Read(reader);
|
||||
}
|
||||
public static object Read(BinaryReader reader)
|
||||
{
|
||||
@@ -74,7 +75,7 @@ namespace BITKit
|
||||
public static void Write(BinaryWriter writer, object value)
|
||||
{
|
||||
var typeName = value.GetType().FullName;
|
||||
writer.Write(typeName);
|
||||
writer.Write(typeName!);
|
||||
if (netReaders.TryGetValue(typeName, out var netReader))
|
||||
{
|
||||
netReader.WriteBinaryAsObject(writer,value);
|
||||
@@ -85,9 +86,12 @@ namespace BITKit
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception(string.Format("没有找到{0}而二进制写入方法", value.GetType().Name));
|
||||
throw new Exception($"没有找到{value.GetType().Name}的Binary写入方法");
|
||||
}
|
||||
}
|
||||
public static bool IsSupport(object obj) => IsSupport(obj.GetType().FullName);
|
||||
public static bool IsSupport(Type type) => IsSupport(type.FullName);
|
||||
public static bool IsSupport<T>() => IsSupport(typeof(T).FullName);
|
||||
public static bool IsSupport(string typeName)
|
||||
{
|
||||
if (netReaders.ContainsKey(typeName))
|
||||
@@ -100,6 +104,18 @@ namespace BITKit
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public static bool IsSupport(Type type) => IsSupport(type.FullName);
|
||||
|
||||
|
||||
|
||||
public static bool TryWrite(object obj, out byte[] bytes)
|
||||
{
|
||||
if (IsSupport(obj))
|
||||
{
|
||||
bytes = WriteAsBytes(obj);
|
||||
return true;
|
||||
}
|
||||
bytes = null;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
33
Packages/Core/Binary/IEnumerableSupport.cs
Normal file
33
Packages/Core/Binary/IEnumerableSupport.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
namespace BITKit
|
||||
{
|
||||
public class IEnumerableSupport:NetMessageReader<object[]>
|
||||
{
|
||||
public override object[] ReadBinary(BinaryReader reader)
|
||||
{
|
||||
var length = reader.ReadInt32();
|
||||
var objects = new object[length];
|
||||
for (int i = 0; i < length; i++)
|
||||
{
|
||||
var count = reader.Read();
|
||||
objects[i] = BITBinary.ReadAsValue(reader.ReadBytes(count));
|
||||
}
|
||||
return objects;
|
||||
}
|
||||
|
||||
public override void WriteBinary(BinaryWriter writer, object[] value)
|
||||
{
|
||||
writer.Write(value.Length);
|
||||
foreach (var x in value)
|
||||
{
|
||||
var bytes = BITBinary.WriteAsBytes(x);
|
||||
writer.Write(bytes.Length);
|
||||
writer.Write(bytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
11
Packages/Core/Binary/IEnumerableSupport.cs.meta
Normal file
11
Packages/Core/Binary/IEnumerableSupport.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f98dd998de70fdb42aad67eda57350ce
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
56
Packages/Core/Binary/SystemTypeSupport.cs
Normal file
56
Packages/Core/Binary/SystemTypeSupport.cs
Normal file
@@ -0,0 +1,56 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
namespace BITKit
|
||||
{
|
||||
public class IntSupport : NetMessageReader<int>
|
||||
{
|
||||
public override int ReadBinary(BinaryReader reader)
|
||||
{
|
||||
return reader.ReadInt32();
|
||||
}
|
||||
|
||||
public override void WriteBinary(BinaryWriter writer, int value)
|
||||
{
|
||||
writer.Write(value);
|
||||
}
|
||||
}
|
||||
|
||||
public class FloatSupport : NetMessageReader<float>
|
||||
{
|
||||
public override float ReadBinary(BinaryReader reader)
|
||||
{
|
||||
return reader.ReadSingle().Fix();
|
||||
}
|
||||
|
||||
public override void WriteBinary(BinaryWriter writer, float value)
|
||||
{
|
||||
writer.Write(value);
|
||||
}
|
||||
}
|
||||
public class StringSupport : NetMessageReader<string>
|
||||
{
|
||||
public override string ReadBinary(BinaryReader reader)
|
||||
{
|
||||
return reader.ReadString();
|
||||
}
|
||||
|
||||
public override void WriteBinary(BinaryWriter writer, string value)
|
||||
{
|
||||
writer.Write(value);
|
||||
}
|
||||
}
|
||||
public class BoolSupport: NetMessageReader<bool>
|
||||
{
|
||||
public override bool ReadBinary(BinaryReader reader)
|
||||
{
|
||||
return reader.ReadBoolean();
|
||||
}
|
||||
|
||||
public override void WriteBinary(BinaryWriter writer, bool value)
|
||||
{
|
||||
writer.Write(value);
|
||||
}
|
||||
}
|
||||
}
|
11
Packages/Core/Binary/SystemTypeSupport.cs.meta
Normal file
11
Packages/Core/Binary/SystemTypeSupport.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 22f57f76c9979f647a2e6d69f45e9952
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user