This commit is contained in:
ALEXTANG
2022-08-31 10:15:15 +08:00
parent 6765125f25
commit 13c2e53693
16 changed files with 31 additions and 161 deletions

View File

@@ -2,12 +2,6 @@
{
public abstract class CSPacketBase : PacketBase
{
public override PacketType PacketType
{
get
{
return PacketType.ClientToServer;
}
}
}
}

View File

@@ -6,12 +6,6 @@ namespace TEngine.Runtime
[Serializable, ProtoContract(Name = @"CSPacketHeader")]
public sealed class CSPacketHeader : PacketHeaderBase
{
public override PacketType PacketType
{
get
{
return PacketType.ClientToServer;
}
}
}
}

View File

@@ -27,7 +27,7 @@ namespace TEngine.Runtime
m_NetworkChannel = networkChannel;
// 反射注册包和包处理函数。
Type packetBaseType = typeof(SCPacketBase);
Type packetBaseType = typeof(CSPacketBase);
Type packetHandlerBaseType = typeof(PacketHandlerBase);
Assembly assembly = Assembly.GetExecutingAssembly();
Type[] types = assembly.GetTypes();
@@ -99,12 +99,6 @@ namespace TEngine.Runtime
return false;
}
if (packetImpl.PacketType != PacketType.ClientToServer)
{
Log.Warning("Send packet invalid.");
return false;
}
m_CachedStream.SetLength(m_CachedStream.Capacity); // 此行防止 Array.Copy 的数据无法写入
m_CachedStream.Position = 0L;
@@ -131,24 +125,24 @@ namespace TEngine.Runtime
// 注意:此函数并不在主线程调用!
customErrorData = null;
SCPacketHeader scPacketHeader = packetHeader as SCPacketHeader;
if (scPacketHeader == null)
CSPacketHeader csPacketHeader = packetHeader as CSPacketHeader;
if (csPacketHeader == null)
{
Log.Warning("Packet header is invalid.");
return null;
}
Packet packet = null;
if (scPacketHeader.IsValid)
if (csPacketHeader.IsValid)
{
Type packetType = GetServerToClientPacketType(scPacketHeader.Id);
Type packetType = GetServerToClientPacketType(csPacketHeader.Id);
if (packetType != null)
{
packet = (Packet)RuntimeTypeModel.Default.DeserializeWithLengthPrefix(source, MemoryPool.Acquire(packetType), packetType, PrefixStyle.Fixed32, 0);
}
else
{
Log.Warning("Can not deserialize packet for packet id '{0}'.", scPacketHeader.Id.ToString());
Log.Warning("Can not deserialize packet for packet id '{0}'.", csPacketHeader.Id.ToString());
}
}
else
@@ -156,7 +150,7 @@ namespace TEngine.Runtime
Log.Warning("Packet header is invalid.");
}
MemoryPool.Release(scPacketHeader);
MemoryPool.Release(csPacketHeader);
return packet;
}
@@ -164,7 +158,7 @@ namespace TEngine.Runtime
{
// 注意:此函数并不在主线程调用!
customErrorData = null;
return (IPacketHeader)RuntimeTypeModel.Default.Deserialize(source, MemoryPool.Acquire<SCPacketHeader>(), typeof(SCPacketHeader));
return (IPacketHeader)RuntimeTypeModel.Default.Deserialize(source, MemoryPool.Acquire<CSPacketHeader>(), typeof(CSPacketHeader));
}
private Type GetServerToClientPacketType(int id)
@@ -225,7 +219,7 @@ namespace TEngine.Runtime
return;
}
Log.Info("Network channel '{0}' miss heart beat '{1}' times.", ne.NetworkChannel.Name, ne.MissCount.ToString());
Log.Warning("Network channel '{0}' miss heart beat '{1}' times.", ne.NetworkChannel.Name, ne.MissCount.ToString());
if (ne.MissCount < 2)
{

View File

@@ -1,20 +0,0 @@
using ProtoBuf;
using System;
namespace TEngine.Runtime
{
[Serializable, ProtoContract(Name = @"SCHeartBeat")]
public class SCHeartBeat : SCPacketBase
{
public SCHeartBeat()
{
}
public override int Id => 2;
public override void Clear()
{
}
}
}

View File

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

View File

@@ -11,11 +11,6 @@ namespace TEngine.Runtime
m_ExtensionObject = null;
}
public abstract PacketType PacketType
{
get;
}
IExtension IExtensible.GetExtensionObject(bool createIfMissing)
{
return Extensible.GetExtensionObject(ref m_ExtensionObject, createIfMissing);

View File

@@ -1,6 +1,9 @@
namespace TEngine.Runtime
{
public class SCHeartBeatHandler : PacketHandlerBase
/// <summary>
/// 心跳Handler
/// </summary>
public class CSHeartBeatHandler : PacketHandlerBase
{
public override int Id
{
@@ -12,7 +15,12 @@
public override void Handle(object sender, Packet packet)
{
SCHeartBeat packetImpl = (SCHeartBeat)packet;
CSHeartBeat packetImpl = (CSHeartBeat)packet;
if (packetImpl == null)
{
Log.Fatal("Receive CSHeartBeat Failed !!!");
return;
}
Log.Info("Receive packet '{0}'.", packetImpl.Id.ToString());
}
}

View File

@@ -1,5 +1,8 @@
namespace TEngine.Runtime
{
/// <summary>
/// PacketHandler处理TEngine.Runtime程序集内无需手动注册实现即可
/// </summary>
public abstract class PacketHandlerBase : IPacketHandler
{
public abstract int Id

View File

@@ -2,11 +2,6 @@
{
public abstract class PacketHeaderBase : IPacketHeader, IMemory
{
public abstract PacketType PacketType
{
get;
}
public int Id
{
get;
@@ -23,7 +18,7 @@
{
get
{
return PacketType != PacketType.Undefined && Id > 0 && PacketLength >= 0;
return Id > 0 && PacketLength >= 0;
}
}

View File

@@ -1,20 +0,0 @@
namespace TEngine
{
public enum PacketType : byte
{
/// <summary>
/// 未定义。
/// </summary>
Undefined = 0,
/// <summary>
/// 客户端发往服务器的包。
/// </summary>
ClientToServer,
/// <summary>
/// 服务器发往客户端的包。
/// </summary>
ServerToClient,
}
}

View File

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

View File

@@ -1,13 +0,0 @@
namespace TEngine.Runtime
{
public abstract class SCPacketBase : PacketBase
{
public override PacketType PacketType
{
get
{
return PacketType.ServerToClient;
}
}
}
}

View File

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

View File

@@ -1,13 +0,0 @@
namespace TEngine.Runtime
{
public sealed class SCPacketHeader : PacketHeaderBase
{
public override PacketType PacketType
{
get
{
return PacketType.ServerToClient;
}
}
}
}

View File

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

View File

@@ -12,7 +12,12 @@ namespace TEngine.Runtime
public class Network : UnitySingleton<Network>
{
private INetworkManager m_NetworkManager = null;
public NetworkManager NetworkManager;
public NetworkManager NetworkManager
{
private set;
get;
}
/// <summary>
/// 获取网络频道数量。
@@ -32,9 +37,6 @@ namespace TEngine.Runtime
protected override void OnLoad()
{
base.OnLoad();
GameEventMgr.Instance.AddEventListener(TEngineEvent.OnStartGame,OnStartGame);
m_NetworkManager = new NetworkManager();
NetworkManager = m_NetworkManager as NetworkManager;
if (m_NetworkManager == null)
@@ -73,11 +75,6 @@ namespace TEngine.Runtime
}
}
private void OnStartGame()
{
}
/// <summary>
/// 检查是否存在网络频道。
/// </summary>