53 lines
1.8 KiB
C++
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;
|
|
}
|