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 Dispose() = 0;
virtual void Listen() = 0;
virtual void SendMessage(const NetworkMessage* message, void* targets) = 0; // TODO
virtual bool Listen() = 0;
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()
{
// TODO
return false;
ASSERT(NetworkDriver != nullptr);
return NetworkDriver->Listen();
}
void NetworkManager::Connect()
{
// TODO
ASSERT(NetworkDriver != nullptr);
// TODO: Assert address/endpoint
NetworkDriver->Connect();
}
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()
{
ASSERT(NetworkDriver != nullptr);
return CreateMessage();
}
void NetworkManager::AbortSendMessage(const NetworkMessage& message)
{
ASSERT(NetworkDriver != nullptr);
ASSERT(message.IsValid());
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());
// TODO: Send message
NetworkDriver->SendMessage(channelType, message, targets);
RecycleMessage(message);
return false;

View File

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