Files
CPP/sstp/sstp.cpp
2025-12-18 09:27:37 -05:00

53 lines
1.8 KiB
C++

#include <iostream>
#include <sstp/sstp.hpp>
#include <common/profiler.hpp>
#include <common/utility.hpp>
#include <sstp/socketserver.hpp>
#include <sstp/clientsocketsender.hpp>
/// @brief [0]=program [1]=SERVERMODE [2]={port}
/// @Note Currently this method will never return. The application is terminated with CTRL-C. Ideally, we would exit in some cleaner fashion
/// perhaps by implementing a CTRL-C hook and then destroying the SocketServer properly by calling it's destructor. See SocketServer::~SocketServer()
/// @param commands
void SSTP::handleServer(Block<String>& commands)
{
Profiler profiler;
if(commands.size()!=3)
{
std::cout << "Missing required parameters" << std::endl;
return;
}
int port = commands[2].toInt();
std::cout << commands[1] << ":" << commands[2] << std::endl;
mSocketServer = ::new SocketServer(commands[2].toInt());
mSocketServer.disposition(PointerDisposition::Delete);
mSocketServer->listen();
std::cout << "Done, total took " << Utility::formatNumber(profiler.end()) << "(ms)" << std::endl;
}
/// @brief [0]=program, [1]=CLIENTMODE, [2]=serveripaddress, [3]=serverport, [4]=pathfilename
/// @param commands
void SSTP::handleClient(Block<String>& arguments)
{
Profiler profiler;
if(arguments.size()!=5)
{
std::cout << "Missing required parameters" << std::endl;
return;
}
mClientSocketSender.destroy();
mClientSocketSender = new ClientSocketSender(arguments[2],arguments[3].toInt());
mClientSocketSender.disposition(PointerDisposition::Delete);
bool returnCode = mClientSocketSender->sendFile(arguments[4]);
if(!returnCode)
{
std::cout << "The transfer failed." << std::endl;
}
else
{
std::cout << "Transfer complete" << std::endl;
}
std::cout << "Done, total took " << Utility::formatNumber(profiler.end()) << "(ms)" << std::endl;
}