#include #include #include #include #include #include /// @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& 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& 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; }