更新了网络服务接口定义

This commit is contained in:
CortexCore
2023-06-07 02:02:14 +08:00
parent 08b05f8a74
commit b2444fd909
2727 changed files with 20455 additions and 4448 deletions

View File

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

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

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f98dd998de70fdb42aad67eda57350ce
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

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

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 22f57f76c9979f647a2e6d69f45e9952
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: