52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#pragma once
 | 
						|
 | 
						|
#include <files/FileServer.h>
 | 
						|
#include <deque>
 | 
						|
#include <utility>
 | 
						|
#include <thread>
 | 
						|
#include <shared_mutex>
 | 
						|
#include <sys/socket.h>
 | 
						|
#include <pipes/ws.h>
 | 
						|
#include <pipes/ssl.h>
 | 
						|
#include <misc/net.h>
 | 
						|
#include <misc/spin_mutex.h>
 | 
						|
#include <random>
 | 
						|
#include <misc/memtracker.h>
 | 
						|
#include "./NetTools.h"
 | 
						|
 | 
						|
namespace ts::server::file {
 | 
						|
    namespace filesystem { class LocalFileSystem; }
 | 
						|
    namespace transfer { class LocalFileTransfer; }
 | 
						|
 | 
						|
    class LocalVirtualFileServer : public VirtualFileServer {
 | 
						|
        public:
 | 
						|
            explicit LocalVirtualFileServer(ServerId server_id, std::string unique_id) : VirtualFileServer{server_id, std::move(unique_id)} {}
 | 
						|
 | 
						|
            void max_networking_upload_bandwidth(int64_t value) override;
 | 
						|
            void max_networking_download_bandwidth(int64_t value) override;
 | 
						|
 | 
						|
            networking::NetworkThrottle upload_throttle{};
 | 
						|
            networking::NetworkThrottle download_throttle{};
 | 
						|
    };
 | 
						|
 | 
						|
    class LocalFileProvider : public AbstractFileServer {
 | 
						|
        public:
 | 
						|
            LocalFileProvider();
 | 
						|
            virtual ~LocalFileProvider();
 | 
						|
 | 
						|
            [[nodiscard]] bool initialize(std::string& /* error */);
 | 
						|
            void finalize();
 | 
						|
 | 
						|
            [[nodiscard]] std::string file_base_path() const override;
 | 
						|
 | 
						|
            filesystem::AbstractProvider &file_system() override;
 | 
						|
            transfer::AbstractProvider &file_transfer() override;
 | 
						|
 | 
						|
 | 
						|
            std::shared_ptr<VirtualFileServer> register_server(ServerId /* server id */) override;
 | 
						|
            void unregister_server(ServerId /* server id */) override;
 | 
						|
        private:
 | 
						|
            filesystem::LocalFileSystem* file_system_;
 | 
						|
            transfer::LocalFileTransfer* file_transfer_;
 | 
						|
    };
 | 
						|
} |