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