50 lines
2.5 KiB
C++
50 lines
2.5 KiB
C++
//
|
|
// Created by WolverinDEV on 12/05/2020.
|
|
//
|
|
|
|
#include <files/FileServer.h>
|
|
#include <log/LogUtils.h>
|
|
#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<string>();
|
|
auto port = this->properties()[property::SERVERINSTANCE_FILETRANSFER_PORT].as<uint16_t>();
|
|
*/
|
|
/* 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::Transfer> &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::Transfer> &transfer,
|
|
const ts::server::file::transfer::TransferError &error) {
|
|
/* TODO: Remove not used quota from server & client */
|
|
} |