mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
Update
This commit is contained in:
@@ -2,12 +2,6 @@
|
|||||||
{
|
{
|
||||||
public abstract class CSPacketBase : PacketBase
|
public abstract class CSPacketBase : PacketBase
|
||||||
{
|
{
|
||||||
public override PacketType PacketType
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return PacketType.ClientToServer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -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)
|
||||||
{
|
{
|
||||||
|
@@ -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()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 2c6c67efd23a0ea49b469cde0c44f234
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@@ -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);
|
||||||
|
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,20 +0,0 @@
|
|||||||
namespace TEngine
|
|
||||||
{
|
|
||||||
public enum PacketType : byte
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 未定义。
|
|
||||||
/// </summary>
|
|
||||||
Undefined = 0,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 客户端发往服务器的包。
|
|
||||||
/// </summary>
|
|
||||||
ClientToServer,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 服务器发往客户端的包。
|
|
||||||
/// </summary>
|
|
||||||
ServerToClient,
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 71e37d0b444a9f646984e673744d2bcf
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@@ -1,13 +0,0 @@
|
|||||||
namespace TEngine.Runtime
|
|
||||||
{
|
|
||||||
public abstract class SCPacketBase : PacketBase
|
|
||||||
{
|
|
||||||
public override PacketType PacketType
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return PacketType.ServerToClient;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 9bf44767ac4b0ff43b0c6b86d8d255ec
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@@ -1,13 +0,0 @@
|
|||||||
namespace TEngine.Runtime
|
|
||||||
{
|
|
||||||
public sealed class SCPacketHeader : PacketHeaderBase
|
|
||||||
{
|
|
||||||
public override PacketType PacketType
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return PacketType.ServerToClient;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 2855018a5b9e3d641a4275143aed88f0
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@@ -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>
|
||||||
|
Reference in New Issue
Block a user