From 5644b225ea1464cc3249bcaa5dd1f4e6e10ee9e3 Mon Sep 17 00:00:00 2001 From: notspiff Date: Fri, 6 Apr 2018 15:00:00 +0200 Subject: [PATCH] changed: rename CNetwork to CNetworkBase and add typedefs to CNetwork for specific platforms. in preparation for rtti'ing the service --- cmake/treedata/android/subdirs.txt | 1 - xbmc/ServiceBroker.cpp | 2 +- xbmc/ServiceBroker.h | 4 +-- xbmc/ServiceManager.cpp | 16 ++--------- xbmc/ServiceManager.h | 8 +++--- xbmc/network/Network.cpp | 28 +++++++++---------- xbmc/network/Network.h | 8 ++++-- xbmc/platform/android/activity/XBMCApp.cpp | 2 +- .../android/network/NetworkAndroid.cpp | 2 +- .../platform/android/network/NetworkAndroid.h | 4 ++- xbmc/platform/linux/network/NetworkLinux.cpp | 8 +++--- xbmc/platform/linux/network/NetworkLinux.h | 4 ++- xbmc/platform/win10/network/NetworkWin10.cpp | 2 +- xbmc/platform/win10/network/NetworkWin10.h | 6 +++- xbmc/platform/win32/network/NetworkWin32.cpp | 2 +- xbmc/platform/win32/network/NetworkWin32.h | 5 +++- 16 files changed, 52 insertions(+), 50 deletions(-) diff --git a/cmake/treedata/android/subdirs.txt b/cmake/treedata/android/subdirs.txt index 7f7fef53e7285..a3de758fef00e 100644 --- a/cmake/treedata/android/subdirs.txt +++ b/cmake/treedata/android/subdirs.txt @@ -6,7 +6,6 @@ xbmc/platform/posix platform/posix xbmc/platform/posix/filesystem platform/posix/filesystem xbmc/platform/posix/utils platform/posix/utils xbmc/platform/linux platform/linux -xbmc/platform/linux/network platform/linux/network xbmc/platform/linux/peripherals platform/linux/peripherals xbmc/platform/android/activity platform/android/activity xbmc/platform/android/bionic_supplement platform/android/bionicsupplement diff --git a/xbmc/ServiceBroker.cpp b/xbmc/ServiceBroker.cpp index f9a2eef3fd696..6bd615dc44551 100644 --- a/xbmc/ServiceBroker.cpp +++ b/xbmc/ServiceBroker.cpp @@ -126,7 +126,7 @@ CFileExtensionProvider& CServiceBroker::GetFileExtensionProvider() return g_application.m_ServiceManager->GetFileExtensionProvider(); } -CNetwork& CServiceBroker::GetNetwork() +CNetworkBase& CServiceBroker::GetNetwork() { return g_application.m_ServiceManager->GetNetwork(); } diff --git a/xbmc/ServiceBroker.h b/xbmc/ServiceBroker.h index 323d76ec06760..f83f44e97f00f 100644 --- a/xbmc/ServiceBroker.h +++ b/xbmc/ServiceBroker.h @@ -52,7 +52,7 @@ class IAE; class CFavouritesService; class CInputManager; class CFileExtensionProvider; -class CNetwork; +class CNetworkBase; class CWinSystemBase; class CRenderSystemBase; class CPowerManager; @@ -107,7 +107,7 @@ class CServiceBroker static CFileExtensionProvider &GetFileExtensionProvider(); static bool IsBinaryAddonCacheUp(); static bool IsServiceManagerUp(); - static CNetwork& GetNetwork(); + static CNetworkBase& GetNetwork(); static CPowerManager& GetPowerManager(); static CWeatherManager& GetWeatherManager(); static CPlayerCoreFactory &GetPlayerCoreFactory(); diff --git a/xbmc/ServiceManager.cpp b/xbmc/ServiceManager.cpp index 441ed1891dca6..843bbaf7bd39e 100644 --- a/xbmc/ServiceManager.cpp +++ b/xbmc/ServiceManager.cpp @@ -400,22 +400,12 @@ void CServiceManager::delete_favouritesService::operator()(CFavouritesService *p delete p; } -CNetwork* CServiceManager::SetupNetwork() const -{ -#if defined(TARGET_ANDROID) - return new CNetworkAndroid(*m_settings); -#elif defined(HAS_LINUX_NETWORK) - return new CNetworkLinux(*m_settings); -#elif defined(HAS_WIN32_NETWORK) - return new CNetworkWin32(*m_settings); -#elif defined(HAS_WIN10_NETWORK) - return new CNetworkWin10(*m_settings); -#else +CNetworkBase* CServiceManager::SetupNetwork() const +{ return new CNetwork(*m_settings); -#endif } -CNetwork& CServiceManager::GetNetwork() +CNetworkBase& CServiceManager::GetNetwork() { return *m_network; } diff --git a/xbmc/ServiceManager.h b/xbmc/ServiceManager.h index c7ec81b399be8..bff6a4f52e02b 100644 --- a/xbmc/ServiceManager.h +++ b/xbmc/ServiceManager.h @@ -56,7 +56,7 @@ class XBPython; class CDataCacheCore; class CSettings; class CFavouritesService; -class CNetwork; +class CNetworkBase; class CWinSystemBase; class CPowerManager; class CWeatherManager; @@ -110,7 +110,7 @@ class CServiceManager ADDON::CServiceAddonManager& GetServiceAddons(); ADDON::CRepositoryUpdater& GetRepositoryUpdater(); ANNOUNCEMENT::CAnnouncementManager& GetAnnouncementManager(); - CNetwork& GetNetwork(); + CNetworkBase& GetNetwork(); #ifdef HAS_PYTHON XBPython& GetXBPython(); #endif @@ -162,7 +162,7 @@ class CServiceManager }; //! \brief Initialize appropriate networking instance. - CNetwork* SetupNetwork() const; + CNetworkBase* SetupNetwork() const; std::unique_ptr m_addonMgr; std::unique_ptr m_binaryAddonManager; @@ -187,7 +187,7 @@ class CServiceManager std::unique_ptr m_favouritesService; std::unique_ptr m_inputManager; std::unique_ptr m_fileExtensionProvider; - std::unique_ptr m_network; + std::unique_ptr m_network; std::unique_ptr m_powerManager; std::unique_ptr m_weatherManager; std::unique_ptr m_playerCoreFactory; diff --git a/xbmc/network/Network.cpp b/xbmc/network/Network.cpp index 6c0c50108c9c2..2aba990e1c0e0 100644 --- a/xbmc/network/Network.cpp +++ b/xbmc/network/Network.cpp @@ -136,18 +136,18 @@ int NetworkAccessPoint::FreqToChannel(float frequency) return 0; // unknown } -CNetwork::CNetwork(CSettings &settings) : +CNetworkBase::CNetworkBase(CSettings &settings) : m_services(new CNetworkServices(settings)) { CApplicationMessenger::GetInstance().PostMsg(TMSG_NETWORKMESSAGE, SERVICES_UP, 0); } -CNetwork::~CNetwork() +CNetworkBase::~CNetworkBase() { CApplicationMessenger::GetInstance().PostMsg(TMSG_NETWORKMESSAGE, SERVICES_DOWN, 0); } -int CNetwork::ParseHex(char *str, unsigned char *addr) +int CNetworkBase::ParseHex(char *str, unsigned char *addr) { int len = 0; @@ -166,7 +166,7 @@ int CNetwork::ParseHex(char *str, unsigned char *addr) return len; } -bool CNetwork::GetHostName(std::string& hostname) +bool CNetworkBase::GetHostName(std::string& hostname) { char hostName[128]; if (gethostname(hostName, sizeof(hostName))) @@ -182,7 +182,7 @@ bool CNetwork::GetHostName(std::string& hostname) return true; } -bool CNetwork::IsLocalHost(const std::string& hostname) +bool CNetworkBase::IsLocalHost(const std::string& hostname) { if (hostname.empty()) return false; @@ -211,7 +211,7 @@ bool CNetwork::IsLocalHost(const std::string& hostname) return false; } -CNetworkInterface* CNetwork::GetFirstConnectedInterface() +CNetworkInterface* CNetworkBase::GetFirstConnectedInterface() { std::vector& ifaces = GetInterfaceList(); std::vector::const_iterator iter = ifaces.begin(); @@ -226,7 +226,7 @@ CNetworkInterface* CNetwork::GetFirstConnectedInterface() return NULL; } -bool CNetwork::HasInterfaceForIP(unsigned long address) +bool CNetworkBase::HasInterfaceForIP(unsigned long address) { unsigned long subnet; unsigned long local; @@ -248,18 +248,18 @@ bool CNetwork::HasInterfaceForIP(unsigned long address) return false; } -bool CNetwork::IsAvailable(void) +bool CNetworkBase::IsAvailable(void) { std::vector& ifaces = GetInterfaceList(); return (ifaces.size() != 0); } -bool CNetwork::IsConnected() +bool CNetworkBase::IsConnected() { return GetFirstConnectedInterface() != NULL; } -CNetworkInterface* CNetwork::GetInterfaceByName(const std::string& name) +CNetworkInterface* CNetworkBase::GetInterfaceByName(const std::string& name) { std::vector& ifaces = GetInterfaceList(); std::vector::const_iterator iter = ifaces.begin(); @@ -274,7 +274,7 @@ CNetworkInterface* CNetwork::GetInterfaceByName(const std::string& name) return NULL; } -void CNetwork::NetworkMessage(EMESSAGE message, int param) +void CNetworkBase::NetworkMessage(EMESSAGE message, int param) { switch( message ) { @@ -292,7 +292,7 @@ void CNetwork::NetworkMessage(EMESSAGE message, int param) } } -bool CNetwork::WakeOnLan(const char* mac) +bool CNetworkBase::WakeOnLan(const char* mac) { int i, j, packet; unsigned char ethaddr[8]; @@ -427,7 +427,7 @@ static const char* ConnectHostPort(SOCKET soc, const struct sockaddr_in& addr, s return 0; // success } -bool CNetwork::PingHost(unsigned long ipaddr, unsigned short port, unsigned int timeOutMs, bool readability_check) +bool CNetworkBase::PingHost(unsigned long ipaddr, unsigned short port, unsigned int timeOutMs, bool readability_check) { if (port == 0) // use icmp ping return PingHost (ipaddr, timeOutMs); @@ -554,7 +554,7 @@ int CreateTCPServerSocket(const int port, const bool bindLocal, const int backlo return sock; } -void CNetwork::WaitForNet() +void CNetworkBase::WaitForNet() { const int timeout = CServiceBroker::GetSettings().GetInt(CSettings::SETTING_POWERMANAGEMENT_WAITFORNETWORK); if (timeout <= 0) diff --git a/xbmc/network/Network.h b/xbmc/network/Network.h index 306a13ea418cc..03a5c513c57a5 100644 --- a/xbmc/network/Network.h +++ b/xbmc/network/Network.h @@ -98,7 +98,7 @@ class CNetworkInterface class CSettings; class CNetworkServices; -class CNetwork +class CNetworkBase { public: enum EMESSAGE @@ -107,8 +107,8 @@ class CNetwork SERVICES_DOWN }; - CNetwork(CSettings &settings); - virtual ~CNetwork(); + CNetworkBase(CSettings &settings); + virtual ~CNetworkBase(); // Get network services CNetworkServices& GetServices() { return *m_services; } @@ -167,6 +167,8 @@ class CNetwork #include "platform/win32/network/NetworkWin32.h" #elif defined(HAS_WIN10_NETWORK) #include "platform/win10/network/NetworkWin10.h" +#else +using CNetwork = CNetworkBase; #endif //creates, binds and listens a tcp socket on the desired port. Set bindLocal to diff --git a/xbmc/platform/android/activity/XBMCApp.cpp b/xbmc/platform/android/activity/XBMCApp.cpp index 5f820109dede9..70749d262ce6f 100644 --- a/xbmc/platform/android/activity/XBMCApp.cpp +++ b/xbmc/platform/android/activity/XBMCApp.cpp @@ -1022,7 +1022,7 @@ void CXBMCApp::onReceive(CJNIIntent intent) { if (g_application.IsInitialized()) { - CNetwork& net = CServiceBroker::GetNetwork(); + CNetworkBase& net = CServiceBroker::GetNetwork(); CNetworkAndroid* netdroid = static_cast(&net); netdroid->RetrieveInterfaces(); } diff --git a/xbmc/platform/android/network/NetworkAndroid.cpp b/xbmc/platform/android/network/NetworkAndroid.cpp index 64c6785450463..826c5d80709c4 100644 --- a/xbmc/platform/android/network/NetworkAndroid.cpp +++ b/xbmc/platform/android/network/NetworkAndroid.cpp @@ -294,7 +294,7 @@ std::string CNetworkInterfaceAndroid::GetHostName() /*************************/ CNetworkAndroid::CNetworkAndroid(CSettings &settings) - : CNetwork(settings) + : CNetworkBase(settings) { RetrieveInterfaces(); } diff --git a/xbmc/platform/android/network/NetworkAndroid.h b/xbmc/platform/android/network/NetworkAndroid.h index 87c5c9075d71f..8f26153a3b1d9 100644 --- a/xbmc/platform/android/network/NetworkAndroid.h +++ b/xbmc/platform/android/network/NetworkAndroid.h @@ -63,7 +63,7 @@ class CNetworkInterfaceAndroid : public CNetworkInterface }; -class CNetworkAndroid : public CNetwork +class CNetworkAndroid : public CNetworkBase { friend class CXBMCApp; @@ -80,6 +80,7 @@ class CNetworkAndroid : public CNetwork virtual void SetNameServers(const std::vector& nameServers) override; // Ping remote host + using CNetworkBase::PingHost; virtual bool PingHost(unsigned long remote_ip, unsigned int timeout_ms = 2000) override; protected: @@ -89,3 +90,4 @@ class CNetworkAndroid : public CNetwork CCriticalSection m_refreshMutex; }; +using CNetwork = CNetworkAndroid; diff --git a/xbmc/platform/linux/network/NetworkLinux.cpp b/xbmc/platform/linux/network/NetworkLinux.cpp index 6bf6045fb38f2..b541c509cebef 100644 --- a/xbmc/platform/linux/network/NetworkLinux.cpp +++ b/xbmc/platform/linux/network/NetworkLinux.cpp @@ -287,7 +287,7 @@ std::string CNetworkInterfaceLinux::GetCurrentDefaultGateway(void) strcmp(gateway, "00000000") != 0) { unsigned char gatewayAddr[4]; - int len = CNetwork::ParseHex(gateway, gatewayAddr); + int len = CNetworkBase::ParseHex(gateway, gatewayAddr); if (len == 4) { struct in_addr in; @@ -306,7 +306,7 @@ std::string CNetworkInterfaceLinux::GetCurrentDefaultGateway(void) } CNetworkLinux::CNetworkLinux(CSettings &settings) - : CNetwork(settings) + : CNetworkBase(settings) { m_sock = socket(AF_INET, SOCK_DGRAM, 0); queryInterfaceList(); @@ -338,7 +338,7 @@ std::vector& CNetworkLinux::GetInterfaceList(void) //! and the interface comes up during runtime CNetworkInterface* CNetworkLinux::GetFirstConnectedInterface(void) { - CNetworkInterface *pNetIf=CNetwork::GetFirstConnectedInterface(); + CNetworkInterface *pNetIf=CNetworkBase::GetFirstConnectedInterface(); // no connected Interfaces found? - requeryInterfaceList if (!pNetIf) @@ -346,7 +346,7 @@ CNetworkInterface* CNetworkLinux::GetFirstConnectedInterface(void) CLog::Log(LOGDEBUG,"%s no connected interface found - requery list",__FUNCTION__); queryInterfaceList(); //retry finding a connected if - pNetIf = CNetwork::GetFirstConnectedInterface(); + pNetIf = CNetworkBase::GetFirstConnectedInterface(); } return pNetIf; diff --git a/xbmc/platform/linux/network/NetworkLinux.h b/xbmc/platform/linux/network/NetworkLinux.h index a636cd3417a95..90308706d7f16 100644 --- a/xbmc/platform/linux/network/NetworkLinux.h +++ b/xbmc/platform/linux/network/NetworkLinux.h @@ -64,7 +64,7 @@ class CNetworkInterfaceLinux : public CNetworkInterface CNetworkLinux* m_network; }; -class CNetworkLinux : public CNetwork +class CNetworkLinux : public CNetworkBase { public: CNetworkLinux(CSettings &settings); @@ -91,5 +91,7 @@ class CNetworkLinux : public CNetwork int m_sock; }; +using CNetwork = CNetworkLinux; + #endif diff --git a/xbmc/platform/win10/network/NetworkWin10.cpp b/xbmc/platform/win10/network/NetworkWin10.cpp index 2056587fd20bf..e29ad39f9dfed 100644 --- a/xbmc/platform/win10/network/NetworkWin10.cpp +++ b/xbmc/platform/win10/network/NetworkWin10.cpp @@ -184,7 +184,7 @@ std::string CNetworkInterfaceWin10::GetCurrentDefaultGateway(void) } CNetworkWin10::CNetworkWin10(CSettings &settings) - : CNetwork(settings) + : CNetworkBase(settings) { queryInterfaceList(); NetworkInformation::NetworkStatusChanged += ref new NetworkStatusChangedEventHandler([this](Platform::Object^) { diff --git a/xbmc/platform/win10/network/NetworkWin10.h b/xbmc/platform/win10/network/NetworkWin10.h index 3fb034b32cf7c..5c7294a3db663 100644 --- a/xbmc/platform/win10/network/NetworkWin10.h +++ b/xbmc/platform/win10/network/NetworkWin10.h @@ -64,7 +64,7 @@ class CNetworkInterfaceWin10 : public CNetworkInterface }; -class CNetworkWin10 : public CNetwork +class CNetworkWin10 : public CNetworkBase { public: CNetworkWin10(CSettings &settings); @@ -74,6 +74,7 @@ class CNetworkWin10 : public CNetwork virtual std::vector& GetInterfaceList(void); // Ping remote host + using CNetworkBase::PingHost; virtual bool PingHost(unsigned long host, unsigned int timeout_ms = 2000); // Get/set the nameserver(s) @@ -91,3 +92,6 @@ class CNetworkWin10 : public CNetwork CStopWatch m_netrefreshTimer; CCriticalSection m_critSection; }; + +using CNetwork = CNetworkWin10; + diff --git a/xbmc/platform/win32/network/NetworkWin32.cpp b/xbmc/platform/win32/network/NetworkWin32.cpp index 3d1f25ebb397b..a76e4811803a8 100644 --- a/xbmc/platform/win32/network/NetworkWin32.cpp +++ b/xbmc/platform/win32/network/NetworkWin32.cpp @@ -145,7 +145,7 @@ std::string CNetworkInterfaceWin32::GetCurrentDefaultGateway(void) } CNetworkWin32::CNetworkWin32(CSettings &settings) - : CNetwork(settings) + : CNetworkBase(settings) { queryInterfaceList(); } diff --git a/xbmc/platform/win32/network/NetworkWin32.h b/xbmc/platform/win32/network/NetworkWin32.h index 1eacdab3071ef..d40dfa619acff 100644 --- a/xbmc/platform/win32/network/NetworkWin32.h +++ b/xbmc/platform/win32/network/NetworkWin32.h @@ -64,7 +64,7 @@ class CNetworkInterfaceWin32 : public CNetworkInterface std::string m_adaptername; }; -class CNetworkWin32 : public CNetwork +class CNetworkWin32 : public CNetworkBase { public: CNetworkWin32(CSettings &settings); @@ -74,6 +74,7 @@ class CNetworkWin32 : public CNetwork virtual std::vector& GetInterfaceList(void); // Ping remote host + using CNetworkBase::PingHost; virtual bool PingHost(unsigned long host, unsigned int timeout_ms = 2000); // Get/set the nameserver(s) @@ -103,4 +104,6 @@ class CNetworkWin32 : public CNetwork CCriticalSection m_critSection; }; +using CNetwork = CNetworkWin32; + #endif