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 override PacketType PacketType
|
||||
{
|
||||
get
|
||||
{
|
||||
return PacketType.ClientToServer;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@@ -6,12 +6,6 @@ namespace TEngine.Runtime
|
||||
[Serializable, ProtoContract(Name = @"CSPacketHeader")]
|
||||
public sealed class CSPacketHeader : PacketHeaderBase
|
||||
{
|
||||
public override PacketType PacketType
|
||||
{
|
||||
get
|
||||
{
|
||||
return PacketType.ClientToServer;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@@ -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)
|
||||
{
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
public abstract PacketType PacketType
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
IExtension IExtensible.GetExtensionObject(bool createIfMissing)
|
||||
{
|
||||
return Extensible.GetExtensionObject(ref m_ExtensionObject, createIfMissing);
|
||||
|
@@ -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());
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,8 @@
|
||||
namespace TEngine.Runtime
|
||||
{
|
||||
/// <summary>
|
||||
/// PacketHandler处理,TEngine.Runtime程序集内无需手动注册,实现即可
|
||||
/// </summary>
|
||||
public abstract class PacketHandlerBase : IPacketHandler
|
||||
{
|
||||
public abstract int Id
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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>
|
||||
{
|
||||
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>
|
||||
|
Reference in New Issue
Block a user