// // Created by WolverinDEV on 12/05/2020. // #include #include #include "FileServerHandler.h" using namespace ts::server::file; bool FileServerHandler::initialize(std::string &error) { /* * FIXME: Ports etc! * auto bindings_string = this->properties()[property::SERVERINSTANCE_FILETRANSFER_HOST].as(); auto port = this->properties()[property::SERVERINSTANCE_FILETRANSFER_PORT].as(); */ /* TODO: Callback handler */ if(!file::initialize(error)) return false; auto server = file::server(); assert(server); auto& transfer = server->file_transfer(); transfer.callback_transfer_registered = std::bind(&FileServerHandler::callback_transfer_registered, this, std::placeholders::_1); transfer.callback_transfer_started = std::bind(&FileServerHandler::callback_transfer_started, this, std::placeholders::_1); transfer.callback_transfer_finished = std::bind(&FileServerHandler::callback_transfer_finished, this, std::placeholders::_1); transfer.callback_transfer_aborted = std::bind(&FileServerHandler::callback_transfer_aborted, this, std::placeholders::_1, std::placeholders::_2); transfer.callback_transfer_statistics = std::bind(&FileServerHandler::callback_transfer_statistics, this, std::placeholders::_1, std::placeholders::_2); } void FileServerHandler::callback_transfer_registered(const std::shared_ptr &transfer) { auto server = this->instance_->getVoiceServerManager()->findServerById(transfer->server->server_id()); if(!server) return; /* well that's bad */ if(transfer->direction == transfer::Transfer::DIRECTION_UPLOAD) { server->properties()[property::VIRTUALSERVER_TOTAL_BYTES_UPLOADED] += transfer->expected_file_size - transfer->file_offset; server->properties()[property::VIRTUALSERVER_MONTH_BYTES_UPLOADED] += transfer->expected_file_size - transfer->file_offset; } else { server->properties()[property::VIRTUALSERVER_TOTAL_BYTES_DOWNLOADED] += transfer->expected_file_size - transfer->file_offset; server->properties()[property::VIRTUALSERVER_MONTH_BYTES_DOWNLOADED] += transfer->expected_file_size - transfer->file_offset; } } void FileServerHandler::callback_transfer_aborted(const std::shared_ptr &transfer, const ts::server::file::transfer::TransferError &error) { /* TODO: Remove not used quota from server & client */ }