#define MS_CLASS "RTC::TcpServer"
#include "RTC/TcpServer.hpp"
#include "Logger.hpp"
#include "RTC/PortManager.hpp"
#include <string>
namespace RTC
{
TcpServer::TcpServer(Listener* listener, RTC::TcpConnection::Listener* connListener, std::string& ip)
: ::TcpServerHandler::TcpServerHandler(RTC::PortManager::BindTcp(ip)), listener(listener),
connListener(connListener)
{
MS_TRACE();
}
TcpServer::TcpServer(
Listener* listener, RTC::TcpConnection::Listener* connListener, std::string& ip, uint16_t port)
: ::TcpServerHandler::TcpServerHandler(RTC::PortManager::BindTcp(ip, port)), listener(listener),
connListener(connListener), fixedPort(true)
{
MS_TRACE();
}
TcpServer::~TcpServer()
{
MS_TRACE();
if (!fixedPort)
{
RTC::PortManager::UnbindTcp(this->localIp, this->localPort);
}
}
void TcpServer::UserOnTcpConnectionAlloc()
{
MS_TRACE();
auto* connection = new RTC::TcpConnection(this->connListener, 65536);
AcceptTcpConnection(connection);
}
void TcpServer::UserOnTcpConnectionClosed(::TcpConnectionHandler* connection)
{
MS_TRACE();
this->listener->OnRtcTcpConnectionClosed(this, static_cast<RTC::TcpConnection*>(connection));
}
}