Add simple SendMessage with single target
This commit is contained in:
@@ -205,13 +205,24 @@ void ENetDriver::SendMessage(const NetworkChannelType channelType, const Network
|
||||
SendPacketToPeer((ENetPeer*)_peer, channelType, message);
|
||||
}
|
||||
|
||||
void ENetDriver::SendMessage(NetworkChannelType channelType, const NetworkMessage& message, NetworkConnection target)
|
||||
{
|
||||
ASSERT(IsServer());
|
||||
|
||||
ENetPeer* peer = *(ENetPeer**)_peerMap.TryGet(target.ConnectionId);
|
||||
ASSERT(peer != nullptr);
|
||||
ASSERT(peer->state == ENET_PEER_STATE_CONNECTED);
|
||||
|
||||
SendPacketToPeer(peer, channelType, message);
|
||||
}
|
||||
|
||||
void ENetDriver::SendMessage(const NetworkChannelType channelType, const NetworkMessage& message, Array<NetworkConnection, HeapAllocation> targets)
|
||||
{
|
||||
ASSERT(IsServer());
|
||||
|
||||
for(NetworkConnection connection : targets)
|
||||
for(NetworkConnection target : targets)
|
||||
{
|
||||
ENetPeer* peer = *(ENetPeer**)_peerMap.TryGet(connection.ConnectionId);
|
||||
ENetPeer* peer = *(ENetPeer**)_peerMap.TryGet(target.ConnectionId);
|
||||
ASSERT(peer != nullptr);
|
||||
ASSERT(peer->state == ENET_PEER_STATE_CONNECTED);
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ public:
|
||||
bool PopEvent(NetworkEvent* eventPtr) override;
|
||||
|
||||
void SendMessage(NetworkChannelType channelType, const NetworkMessage& message) override;
|
||||
void SendMessage(NetworkChannelType channelType, const NetworkMessage& message, NetworkConnection target) override;
|
||||
void SendMessage(NetworkChannelType channelType, const NetworkMessage& message, Array<NetworkConnection, HeapAllocation> targets) override;
|
||||
|
||||
private:
|
||||
|
||||
@@ -19,6 +19,7 @@ public:
|
||||
virtual bool PopEvent(NetworkEvent* eventPtr) = 0;
|
||||
|
||||
virtual void SendMessage(NetworkChannelType channelType, const NetworkMessage& message) = 0;
|
||||
virtual void SendMessage(NetworkChannelType channelType, const NetworkMessage& message, NetworkConnection target) = 0;
|
||||
virtual void SendMessage(NetworkChannelType channelType, const NetworkMessage& message, Array<NetworkConnection, HeapAllocation> targets) = 0;
|
||||
|
||||
// TODO: Stats API
|
||||
|
||||
@@ -137,6 +137,18 @@ bool NetworkManager::EndSendMessage(const int hostId, const NetworkChannelType c
|
||||
return false;
|
||||
}
|
||||
|
||||
bool NetworkManager::EndSendMessage(const int hostId, const NetworkChannelType channelType, const NetworkMessage& message, const NetworkConnection& target)
|
||||
{
|
||||
ASSERT(Hosts[hostId].IsValid());
|
||||
NetworkHost& host = Hosts[hostId];
|
||||
ASSERT(message.IsValid());
|
||||
|
||||
host.NetworkDriver->SendMessage(channelType, message, target);
|
||||
|
||||
RecycleMessage(hostId, message);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool NetworkManager::EndSendMessage(const int hostId, const NetworkChannelType channelType, const NetworkMessage& message, const Array<NetworkConnection> targets)
|
||||
{
|
||||
ASSERT(Hosts[hostId].IsValid());
|
||||
|
||||
@@ -26,6 +26,7 @@ public:
|
||||
API_FUNCTION() static NetworkMessage BeginSendMessage(int hostId);
|
||||
API_FUNCTION() static void AbortSendMessage(int hostId, const NetworkMessage& message);
|
||||
API_FUNCTION() static bool EndSendMessage(int hostId, NetworkChannelType channelType, const NetworkMessage& message);
|
||||
API_FUNCTION() static bool EndSendMessage(int hostId, NetworkChannelType channelType, const NetworkMessage& message, const NetworkConnection& target);
|
||||
API_FUNCTION() static bool EndSendMessage(int hostId, NetworkChannelType channelType, const NetworkMessage& message, Array<NetworkConnection, HeapAllocation> targets);
|
||||
|
||||
// TODO: Stats API
|
||||
|
||||
Reference in New Issue
Block a user