Add INetworDriver full API

This commit is contained in:
Damian Korczowski
2021-03-08 00:18:13 +01:00
parent 75a02beda0
commit c87feb69c4
3 changed files with 37 additions and 8 deletions

View File

@@ -8,6 +8,16 @@ public:
virtual void Initialize(const NetworkConfig& config) = 0; virtual void Initialize(const NetworkConfig& config) = 0;
virtual void Dispose() = 0; virtual void Dispose() = 0;
virtual void Listen() = 0; virtual bool Listen() = 0;
virtual void SendMessage(const NetworkMessage* message, void* targets) = 0; // TODO virtual void Connect() = 0;
virtual void Disconnect() = 0;
virtual void Disconnect(const NetworkConnection& connection) = 0;
virtual bool PopEvent(NetworkEvent* event);
virtual void SendMessage(NetworkChannelType channelType, const NetworkMessage& message, Array<NetworkConnection, HeapAllocation> targets) = 0;
// TODO: Stats API
// TODO: Simulation API
}; };

View File

@@ -54,36 +54,54 @@ void NetworkManager::Shutdown()
bool NetworkManager::Listen() bool NetworkManager::Listen()
{ {
// TODO ASSERT(NetworkDriver != nullptr);
return false; return NetworkDriver->Listen();
} }
void NetworkManager::Connect() void NetworkManager::Connect()
{ {
// TODO ASSERT(NetworkDriver != nullptr);
// TODO: Assert address/endpoint
NetworkDriver->Connect();
} }
void NetworkManager::Disconnect() void NetworkManager::Disconnect()
{ {
// TODO ASSERT(NetworkDriver != nullptr);
NetworkDriver->Disconnect();
}
void NetworkManager::Disconnect(const NetworkConnection& connection)
{
ASSERT(NetworkDriver != nullptr);
NetworkDriver->Disconnect(connection);
}
bool NetworkManager::PopEvent(NetworkEvent* event)
{
ASSERT(NetworkDriver != nullptr);
return NetworkDriver->PopEvent(event);
} }
NetworkMessage NetworkManager::BeginSendMessage() NetworkMessage NetworkManager::BeginSendMessage()
{ {
ASSERT(NetworkDriver != nullptr);
return CreateMessage(); return CreateMessage();
} }
void NetworkManager::AbortSendMessage(const NetworkMessage& message) void NetworkManager::AbortSendMessage(const NetworkMessage& message)
{ {
ASSERT(NetworkDriver != nullptr);
ASSERT(message.IsValid()); ASSERT(message.IsValid());
RecycleMessage(message); RecycleMessage(message);
} }
bool NetworkManager::EndSendMessage(NetworkChannelType channelType, const NetworkMessage& message, Array<NetworkConnection> targets) bool NetworkManager::EndSendMessage(const NetworkChannelType channelType, const NetworkMessage& message, const Array<NetworkConnection> targets)
{ {
ASSERT(NetworkDriver != nullptr);
ASSERT(message.IsValid()); ASSERT(message.IsValid());
// TODO: Send message NetworkDriver->SendMessage(channelType, message, targets);
RecycleMessage(message); RecycleMessage(message);
return false; return false;

View File

@@ -16,6 +16,7 @@ public:
API_FUNCTION() static bool Listen(); API_FUNCTION() static bool Listen();
API_FUNCTION() static void Connect(); API_FUNCTION() static void Connect();
API_FUNCTION() static void Disconnect(); API_FUNCTION() static void Disconnect();
API_FUNCTION() static void Disconnect(const NetworkConnection& connection);
API_FUNCTION() static bool PopEvent(NetworkEvent* event); API_FUNCTION() static bool PopEvent(NetworkEvent* event);