您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
117 行
6.2 KiB
117 行
6.2 KiB
using System;
|
|
|
|
namespace Unity.Netcode
|
|
{
|
|
/// <summary>
|
|
/// Used to react to different events in the messaging system. Primary use case is for
|
|
/// collecting profiling data and metrics data. Additionally, it provides OnVerifyCanSend and OnVerifyCanReceive
|
|
/// to allow for networking implementations to put limits on when certain messages can or can't be sent or received.
|
|
/// </summary>
|
|
internal interface INetworkHooks
|
|
{
|
|
/// <summary>
|
|
/// Called before an individual message is sent.
|
|
/// </summary>
|
|
/// <param name="clientId">The destination clientId</param>
|
|
/// <param name="message">The message being sent</param>
|
|
/// <param name="delivery"></param>
|
|
void OnBeforeSendMessage<T>(ulong clientId, ref T message, NetworkDelivery delivery) where T : INetworkMessage;
|
|
|
|
/// <summary>
|
|
/// Called after an individual message is sent.
|
|
/// </summary>
|
|
/// <param name="clientId">The destination clientId</param>
|
|
/// <param name="message">The message being sent</param>
|
|
/// <param name="delivery"></param>
|
|
/// <param name="messageSizeBytes">Number of bytes in the message, not including the message header</param>
|
|
void OnAfterSendMessage<T>(ulong clientId, ref T message, NetworkDelivery delivery, int messageSizeBytes) where T : INetworkMessage;
|
|
|
|
/// <summary>
|
|
/// Called before an individual message is received.
|
|
/// </summary>
|
|
/// <param name="senderId">The source clientId</param>
|
|
/// <param name="messageType">The type of the message being sent</param>
|
|
/// <param name="messageSizeBytes">Number of bytes in the message, not including the message header</param>
|
|
void OnBeforeReceiveMessage(ulong senderId, Type messageType, int messageSizeBytes);
|
|
|
|
/// <summary>
|
|
/// Called after an individual message is received.
|
|
/// </summary>
|
|
/// <param name="senderId">The source clientId</param>
|
|
/// <param name="messageType">The type of the message being sent</param>
|
|
/// <param name="messageSizeBytes">Number of bytes in the message, not including the message header</param>
|
|
void OnAfterReceiveMessage(ulong senderId, Type messageType, int messageSizeBytes);
|
|
|
|
/// <summary>
|
|
/// Called before a batch of messages is sent
|
|
/// </summary>
|
|
/// <param name="clientId">The destination clientId</param>
|
|
/// <param name="messageCount">Number of messages in the batch</param>
|
|
/// <param name="batchSizeInBytes">Number of bytes in the batch, including the batch header</param>
|
|
/// <param name="delivery"></param>
|
|
void OnBeforeSendBatch(ulong clientId, int messageCount, int batchSizeInBytes, NetworkDelivery delivery);
|
|
|
|
/// <summary>
|
|
/// Called after a batch of messages is sent
|
|
/// </summary>
|
|
/// <param name="clientId">The destination clientId</param>
|
|
/// <param name="messageCount">Number of messages in the batch</param>
|
|
/// <param name="batchSizeInBytes">Number of bytes in the batch, including the batch header</param>
|
|
/// <param name="delivery"></param>
|
|
void OnAfterSendBatch(ulong clientId, int messageCount, int batchSizeInBytes, NetworkDelivery delivery);
|
|
|
|
/// <summary>
|
|
/// Called before a batch of messages is received
|
|
/// </summary>
|
|
/// <param name="senderId">The source clientId</param>
|
|
/// <param name="messageCount">Number of messages in the batch</param>
|
|
/// <param name="batchSizeInBytes">Number of bytes in the batch, including the batch header</param>
|
|
void OnBeforeReceiveBatch(ulong senderId, int messageCount, int batchSizeInBytes);
|
|
|
|
/// <summary>
|
|
/// Called after a batch of messages is received
|
|
/// </summary>
|
|
/// <param name="senderId">The source clientId</param>
|
|
/// <param name="messageCount">Number of messages in the batch</param>
|
|
/// <param name="batchSizeInBytes">Number of bytes in the batch, including the batch header</param>
|
|
void OnAfterReceiveBatch(ulong senderId, int messageCount, int batchSizeInBytes);
|
|
|
|
|
|
/// <summary>
|
|
/// Called before a message is sent. If this returns false, the message will be discarded.
|
|
/// </summary>
|
|
/// <param name="destinationId">The destination clientId</param>
|
|
/// <param name="messageType">The type of the message</param>
|
|
/// <param name="delivery"></param>
|
|
/// <returns></returns>
|
|
bool OnVerifyCanSend(ulong destinationId, Type messageType, NetworkDelivery delivery);
|
|
|
|
/// <summary>
|
|
/// Called before a message is received. If this returns false, the message will be discarded.
|
|
/// </summary>
|
|
/// <param name="senderId">The source clientId</param>
|
|
/// <param name="messageType">The type of the message</param>
|
|
/// <param name="messageContent">The FastBufferReader containing the message</param>
|
|
/// <param name="context">The NetworkContext the message is being processed in</param>
|
|
/// <returns></returns>
|
|
bool OnVerifyCanReceive(ulong senderId, Type messageType, FastBufferReader messageContent, ref NetworkContext context);
|
|
|
|
/// <summary>
|
|
/// Called after a message is serialized, but before it's handled.
|
|
/// Differs from OnBeforeReceiveMessage in that the actual message object is passed and can be inspected.
|
|
/// </summary>
|
|
/// <param name="message">The message object</param>
|
|
/// <param name="context">The network context the message is being ahandled in</param>
|
|
/// <typeparam name="T"></typeparam>
|
|
void OnBeforeHandleMessage<T>(ref T message, ref NetworkContext context) where T : INetworkMessage;
|
|
|
|
/// <summary>
|
|
/// Called after a message is serialized and handled.
|
|
/// Differs from OnAfterReceiveMessage in that the actual message object is passed and can be inspected.
|
|
/// </summary>
|
|
/// <param name="message">The message object</param>
|
|
/// <param name="context">The network context the message is being ahandled in</param>
|
|
/// <typeparam name="T"></typeparam>
|
|
void OnAfterHandleMessage<T>(ref T message, ref NetworkContext context) where T : INetworkMessage;
|
|
}
|
|
}
|