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 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")] [Serializable, ProtoContract(Name = @"CSPacketHeader")]
public sealed class CSPacketHeader : PacketHeaderBase 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; m_NetworkChannel = networkChannel;
// 反射注册包和包处理函数。 // 反射注册包和包处理函数。
Type packetBaseType = typeof(SCPacketBase); Type packetBaseType = typeof(CSPacketBase);
Type packetHandlerBaseType = typeof(PacketHandlerBase); Type packetHandlerBaseType = typeof(PacketHandlerBase);
Assembly assembly = Assembly.GetExecutingAssembly(); Assembly assembly = Assembly.GetExecutingAssembly();
Type[] types = assembly.GetTypes(); Type[] types = assembly.GetTypes();
@@ -99,12 +99,6 @@ namespace TEngine.Runtime
return false; return false;
} }
if (packetImpl.PacketType != PacketType.ClientToServer)
{
Log.Warning("Send packet invalid.");
return false;
}
m_CachedStream.SetLength(m_CachedStream.Capacity); // 此行防止 Array.Copy 的数据无法写入 m_CachedStream.SetLength(m_CachedStream.Capacity); // 此行防止 Array.Copy 的数据无法写入
m_CachedStream.Position = 0L; m_CachedStream.Position = 0L;
@@ -131,24 +125,24 @@ namespace TEngine.Runtime
// 注意:此函数并不在主线程调用! // 注意:此函数并不在主线程调用!
customErrorData = null; customErrorData = null;
SCPacketHeader scPacketHeader = packetHeader as SCPacketHeader; CSPacketHeader csPacketHeader = packetHeader as CSPacketHeader;
if (scPacketHeader == null) if (csPacketHeader == null)
{ {
Log.Warning("Packet header is invalid."); Log.Warning("Packet header is invalid.");
return null; return null;
} }
Packet packet = null; Packet packet = null;
if (scPacketHeader.IsValid) if (csPacketHeader.IsValid)
{ {
Type packetType = GetServerToClientPacketType(scPacketHeader.Id); Type packetType = GetServerToClientPacketType(csPacketHeader.Id);
if (packetType != null) if (packetType != null)
{ {
packet = (Packet)RuntimeTypeModel.Default.DeserializeWithLengthPrefix(source, MemoryPool.Acquire(packetType), packetType, PrefixStyle.Fixed32, 0); packet = (Packet)RuntimeTypeModel.Default.DeserializeWithLengthPrefix(source, MemoryPool.Acquire(packetType), packetType, PrefixStyle.Fixed32, 0);
} }
else 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 else
@@ -156,7 +150,7 @@ namespace TEngine.Runtime
Log.Warning("Packet header is invalid."); Log.Warning("Packet header is invalid.");
} }
MemoryPool.Release(scPacketHeader); MemoryPool.Release(csPacketHeader);
return packet; return packet;
} }
@@ -164,7 +158,7 @@ namespace TEngine.Runtime
{ {
// 注意:此函数并不在主线程调用! // 注意:此函数并不在主线程调用!
customErrorData = null; 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) private Type GetServerToClientPacketType(int id)
@@ -225,7 +219,7 @@ namespace TEngine.Runtime
return; 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) 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; m_ExtensionObject = null;
} }
public abstract PacketType PacketType
{
get;
}
IExtension IExtensible.GetExtensionObject(bool createIfMissing) IExtension IExtensible.GetExtensionObject(bool createIfMissing)
{ {
return Extensible.GetExtensionObject(ref m_ExtensionObject, createIfMissing); return Extensible.GetExtensionObject(ref m_ExtensionObject, createIfMissing);

View File

@@ -1,6 +1,9 @@
namespace TEngine.Runtime namespace TEngine.Runtime
{ {
public class SCHeartBeatHandler : PacketHandlerBase /// <summary>
/// 心跳Handler
/// </summary>
public class CSHeartBeatHandler : PacketHandlerBase
{ {
public override int Id public override int Id
{ {
@@ -12,7 +15,12 @@
public override void Handle(object sender, Packet packet) 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()); Log.Info("Receive packet '{0}'.", packetImpl.Id.ToString());
} }
} }

View File

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

View File

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