File indexing completed on 2025-01-05 04:37:24

0001 /*
0002     SPDX-FileCopyrightText: 2005 Joris Guisson <joris.guisson@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 #ifndef BTGLOBALS_H
0007 #define BTGLOBALS_H
0008 
0009 #include <ktorrent_export.h>
0010 #include <util/constants.h>
0011 
0012 namespace utp
0013 {
0014 class UTPServer;
0015 }
0016 
0017 namespace net
0018 {
0019 class PortList;
0020 }
0021 
0022 namespace dht
0023 {
0024 class DHTBase;
0025 }
0026 
0027 namespace bt
0028 {
0029 class Server;
0030 
0031 class KTORRENT_EXPORT Globals
0032 {
0033 public:
0034     virtual ~Globals();
0035 
0036     bool initTCPServer(Uint16 port);
0037     void shutdownTCPServer();
0038 
0039     bool initUTPServer(Uint16 port);
0040     void shutdownUTPServer();
0041 
0042     bool isUTPEnabled() const
0043     {
0044         return utp_server != nullptr;
0045     }
0046     bool isTCPEnabled() const
0047     {
0048         return tcp_server != nullptr;
0049     }
0050 
0051     Server &getTCPServer()
0052     {
0053         return *tcp_server;
0054     }
0055     dht::DHTBase &getDHT()
0056     {
0057         return *dh_table;
0058     }
0059     net::PortList &getPortList()
0060     {
0061         return *plist;
0062     }
0063     utp::UTPServer &getUTPServer()
0064     {
0065         return *utp_server;
0066     }
0067 
0068     static Globals &instance();
0069     static void cleanup();
0070 
0071 private:
0072     Globals();
0073 
0074     Server *tcp_server;
0075     dht::DHTBase *dh_table;
0076     net::PortList *plist;
0077     utp::UTPServer *utp_server;
0078 
0079     static Globals *inst;
0080 };
0081 }
0082 
0083 #endif