Update
This commit is contained in:
ALEXTANG
2022-08-31 17:49:48 +08:00
parent 789341701a
commit f72821443c
3 changed files with 58 additions and 10 deletions

View File

@@ -112,7 +112,15 @@ namespace TEngine.Runtime
/// </summary> /// </summary>
/// <param name="actionId"></param> /// <param name="actionId"></param>
/// <param name="msgDelegate"></param> /// <param name="msgDelegate"></param>
void RegisterHandler(int actionId, CsMsgDelegate msgDelegate); /// <param name="checkRepeat"></param>
void RegisterHandler(int actionId, CsMsgDelegate msgDelegate,bool checkRepeat = true);
/// <summary>
/// 注销网络消息包处理函数。
/// </summary>
/// <param name="actionId"></param>
/// <param name="msgDelegate"></param>
void RmvHandler(int actionId, CsMsgDelegate msgDelegate);
/// <summary> /// <summary>
/// 连接到远程主机。 /// 连接到远程主机。
@@ -139,6 +147,14 @@ namespace TEngine.Runtime
/// </summary> /// </summary>
/// <typeparam name="T">消息包类型。</typeparam> /// <typeparam name="T">消息包类型。</typeparam>
/// <param name="packet">要发送的消息包。</param> /// <param name="packet">要发送的消息包。</param>
void Send<T>(T packet) where T : Packet; bool Send<T>(T packet) where T : Packet;
/// <summary>
/// 向远程主机发送消息包并注册回调
/// </summary>
/// <param name="pack"></param>
/// <param name="resHandler"></param>
/// <returns></returns>
bool SendCsMsg(TEngineProto.MainPack pack, CsMsgDelegate resHandler = null);
} }
} }

View File

@@ -15,7 +15,7 @@ namespace TEngine.Runtime
/// </summary> /// </summary>
private abstract class NetworkChannelBase : INetworkChannel, IDisposable private abstract class NetworkChannelBase : INetworkChannel, IDisposable
{ {
private const float DefaultHeartBeatInterval = 30f; private const float DefaultHeartBeatInterval = 30;
private const int MAX_MSG_HANDLE = 256; private const int MAX_MSG_HANDLE = 256;
private readonly string m_Name; private readonly string m_Name;
@@ -292,8 +292,9 @@ namespace TEngine.Runtime
/// </summary> /// </summary>
/// <param name="actionId"></param> /// <param name="actionId"></param>
/// <param name="msgDelegate"></param> /// <param name="msgDelegate"></param>
/// <param name="checkRepeat"></param>
/// <exception cref="Exception"></exception> /// <exception cref="Exception"></exception>
public void RegisterHandler(int actionId, CsMsgDelegate msgDelegate) public void RegisterHandler(int actionId, CsMsgDelegate msgDelegate,bool checkRepeat = true)
{ {
if (msgDelegate == null) if (msgDelegate == null)
{ {
@@ -315,7 +316,10 @@ namespace TEngine.Runtime
} }
else else
{ {
Log.Warning("-------------repeat RegCmdHandle ActionCode:{0}-----------", (ActionCode)actionId); if (checkRepeat)
{
Log.Warning("-------------repeat RegCmdHandle ActionCode:{0}-----------", (ActionCode)actionId);
}
} }
} }
} }
@@ -435,12 +439,38 @@ namespace TEngine.Runtime
} }
} }
/// <summary>
/// 发送消息包并注册回调
/// </summary>
/// <param name="pack"></param>
/// <param name="resHandler"></param>
/// <param name="needShowWaitUI"></param>
/// <returns></returns>
public bool SendCsMsg(MainPack pack, CsMsgDelegate resHandler = null)
{
var ret = Send(pack);
if (!ret)
{
TLogger.LogError("SendCSMsg Error");
}
else
{
if (resHandler != null)
{
RegTimeOutHandle((uint)pack.actioncode, resHandler);
RegisterHandler((int)pack.actioncode, resHandler, false);
}
}
return ret;
}
/// <summary> /// <summary>
/// 向远程主机发送消息包。 /// 向远程主机发送消息包。
/// </summary> /// </summary>
/// <typeparam name="T">消息包类型。</typeparam> /// <typeparam name="T">消息包类型。</typeparam>
/// <param name="packet">要发送的消息包。</param> /// <param name="packet">要发送的消息包。</param>
public void Send<T>(T packet) where T : Packet public bool Send<T>(T packet) where T : Packet
{ {
if (m_Socket == null) if (m_Socket == null)
{ {
@@ -448,7 +478,7 @@ namespace TEngine.Runtime
if (NetworkChannelError != null) if (NetworkChannelError != null)
{ {
NetworkChannelError(this, NetworkErrorCode.SendError, SocketError.Success, errorMessage); NetworkChannelError(this, NetworkErrorCode.SendError, SocketError.Success, errorMessage);
return; return false;
} }
throw new Exception(errorMessage); throw new Exception(errorMessage);
@@ -460,7 +490,7 @@ namespace TEngine.Runtime
if (NetworkChannelError != null) if (NetworkChannelError != null)
{ {
NetworkChannelError(this, NetworkErrorCode.SendError, SocketError.Success, errorMessage); NetworkChannelError(this, NetworkErrorCode.SendError, SocketError.Success, errorMessage);
return; return false;
} }
throw new Exception(errorMessage); throw new Exception(errorMessage);
@@ -472,7 +502,7 @@ namespace TEngine.Runtime
if (NetworkChannelError != null) if (NetworkChannelError != null)
{ {
NetworkChannelError(this, NetworkErrorCode.SendError, SocketError.Success, errorMessage); NetworkChannelError(this, NetworkErrorCode.SendError, SocketError.Success, errorMessage);
return; return false;
} }
throw new Exception(errorMessage); throw new Exception(errorMessage);
@@ -482,6 +512,8 @@ namespace TEngine.Runtime
{ {
m_SendPacketPool.Enqueue(packet); m_SendPacketPool.Enqueue(packet);
} }
return true;
} }
/// <summary> /// <summary>

View File

@@ -41,7 +41,7 @@ message MainPack
string extstr = 5; string extstr = 5;
repeated RoomPack roompack = 6; //房间包repeated加上为list repeated RoomPack roompack = 6; //房间包repeated加上为list
PlayerPack playerpack = 7; PlayerPack playerpack = 7;
long HeatEchoTime = 8; //心跳包回包时间 float HeatEchoTime = 8; //心跳包回包时间
} }
message LoginPack message LoginPack