Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

kill CNetworkServices global #13785

Merged
merged 2 commits into from Apr 23, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 0 additions & 1 deletion cmake/treedata/android/subdirs.txt
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion xbmc/ServiceBroker.cpp
Expand Up @@ -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();
}
Expand Down
4 changes: 2 additions & 2 deletions xbmc/ServiceBroker.h
Expand Up @@ -52,7 +52,7 @@ class IAE;
class CFavouritesService;
class CInputManager;
class CFileExtensionProvider;
class CNetwork;
class CNetworkBase;
class CWinSystemBase;
class CRenderSystemBase;
class CPowerManager;
Expand Down Expand Up @@ -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();
Expand Down
21 changes: 3 additions & 18 deletions xbmc/ServiceManager.cpp
Expand Up @@ -65,7 +65,7 @@ CServiceManager::~CServiceManager()
bool CServiceManager::InitForTesting()
{
m_settings.reset(new CSettings());
m_network.reset(SetupNetwork());
m_network.reset(new CNetwork(*m_settings));

m_profileManager.reset(new CProfilesManager(*m_settings));

Expand Down Expand Up @@ -117,7 +117,7 @@ bool CServiceManager::InitStageOne()
m_playlistPlayer.reset(new PLAYLIST::CPlayListPlayer());

m_settings.reset(new CSettings());
m_network.reset(SetupNetwork());
m_network.reset(new CNetwork(*m_settings));

init_level = 1;
return true;
Expand Down Expand Up @@ -400,22 +400,7 @@ void CServiceManager::delete_favouritesService::operator()(CFavouritesService *p
delete p;
}

CNetwork* CServiceManager::SetupNetwork() const
{
#if defined(TARGET_ANDROID)
return new CNetworkAndroid();
#elif defined(HAS_LINUX_NETWORK)
return new CNetworkLinux();
#elif defined(HAS_WIN32_NETWORK)
return new CNetworkWin32();
#elif defined(HAS_WIN10_NETWORK)
return new CNetworkWin10();
#else
return new CNetwork();
#endif
}

CNetwork& CServiceManager::GetNetwork()
CNetworkBase& CServiceManager::GetNetwork()
{
return *m_network;
}
Expand Down
9 changes: 3 additions & 6 deletions xbmc/ServiceManager.h
Expand Up @@ -56,7 +56,7 @@ class XBPython;
class CDataCacheCore;
class CSettings;
class CFavouritesService;
class CNetwork;
class CNetworkBase;
class CWinSystemBase;
class CPowerManager;
class CWeatherManager;
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -161,9 +161,6 @@ class CServiceManager
void operator()(CFavouritesService *p) const;
};

//! \brief Initialize appropriate networking instance.
CNetwork* SetupNetwork() const;

std::unique_ptr<ADDON::CAddonMgr> m_addonMgr;
std::unique_ptr<ADDON::CBinaryAddonManager> m_binaryAddonManager;
std::unique_ptr<ADDON::CBinaryAddonCache> m_binaryAddonCache;
Expand All @@ -187,7 +184,7 @@ class CServiceManager
std::unique_ptr<CFavouritesService, delete_favouritesService> m_favouritesService;
std::unique_ptr<CInputManager> m_inputManager;
std::unique_ptr<CFileExtensionProvider> m_fileExtensionProvider;
std::unique_ptr<CNetwork> m_network;
std::unique_ptr<CNetworkBase> m_network;
std::unique_ptr<CPowerManager> m_powerManager;
std::unique_ptr<CWeatherManager> m_weatherManager;
std::unique_ptr<CPlayerCoreFactory> m_playerCoreFactory;
Expand Down
2 changes: 1 addition & 1 deletion xbmc/interfaces/builtins/ProfileBuiltins.cpp
Expand Up @@ -90,7 +90,7 @@ static int LogOff(const std::vector<std::string>& params)
g_application.WakeUpScreenSaverAndDPMS();
CServiceBroker::GetGUI()->GetWindowManager().ActivateWindow(WINDOW_LOGIN_SCREEN, {}, false);

if (!CNetworkServices::GetInstance().StartEventServer()) // event server could be needed in some situations
if (!CServiceBroker::GetNetwork().GetServices().StartEventServer()) // event server could be needed in some situations
CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Warning, g_localizeStrings.Get(33102), g_localizeStrings.Get(33100));

return 0;
Expand Down
36 changes: 18 additions & 18 deletions xbmc/network/Network.cpp
Expand Up @@ -136,18 +136,18 @@ int NetworkAccessPoint::FreqToChannel(float frequency)
return 0; // unknown
}


CNetwork::CNetwork()
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;

Expand All @@ -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)))
Expand All @@ -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;
Expand Down Expand Up @@ -211,7 +211,7 @@ bool CNetwork::IsLocalHost(const std::string& hostname)
return false;
}

CNetworkInterface* CNetwork::GetFirstConnectedInterface()
CNetworkInterface* CNetworkBase::GetFirstConnectedInterface()
{
std::vector<CNetworkInterface*>& ifaces = GetInterfaceList();
std::vector<CNetworkInterface*>::const_iterator iter = ifaces.begin();
Expand All @@ -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;
Expand All @@ -248,18 +248,18 @@ bool CNetwork::HasInterfaceForIP(unsigned long address)
return false;
}

bool CNetwork::IsAvailable(void)
bool CNetworkBase::IsAvailable(void)
{
std::vector<CNetworkInterface*>& 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<CNetworkInterface*>& ifaces = GetInterfaceList();
std::vector<CNetworkInterface*>::const_iterator iter = ifaces.begin();
Expand All @@ -274,25 +274,25 @@ 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 )
{
case SERVICES_UP:
CLog::Log(LOGDEBUG, "%s - Starting network services",__FUNCTION__);
CNetworkServices::GetInstance().Start();
m_services->Start();
break;

case SERVICES_DOWN:
CLog::Log(LOGDEBUG, "%s - Signaling network services to stop",__FUNCTION__);
CNetworkServices::GetInstance().Stop(false); // tell network services to stop, but don't wait for them yet
m_services->Stop(false); // tell network services to stop, but don't wait for them yet
CLog::Log(LOGDEBUG, "%s - Waiting for network services to stop",__FUNCTION__);
CNetworkServices::GetInstance().Stop(true); // wait for network services to stop
m_services->Stop(true); // wait for network services to stop
break;
}
}

bool CNetwork::WakeOnLan(const char* mac)
bool CNetworkBase::WakeOnLan(const char* mac)
{
int i, j, packet;
unsigned char ethaddr[8];
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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)
Expand Down
15 changes: 12 additions & 3 deletions xbmc/network/Network.h
Expand Up @@ -95,7 +95,10 @@ class CNetworkInterface
virtual void SetSettings(NetworkAssignment& assignment, std::string& ipAddress, std::string& networkMask, std::string& defaultGateway, std::string& essId, std::string& key, EncMode& encryptionMode) = 0;
};

class CNetwork
class CSettings;
class CNetworkServices;

class CNetworkBase
{
public:
enum EMESSAGE
Expand All @@ -104,8 +107,11 @@ class CNetwork
SERVICES_DOWN
};

CNetwork();
virtual ~CNetwork();
CNetworkBase(CSettings &settings);
virtual ~CNetworkBase();

// Get network services
CNetworkServices& GetServices() { return *m_services; }

// Return our hostname
virtual bool GetHostName(std::string& hostname);
Expand Down Expand Up @@ -150,6 +156,7 @@ class CNetwork

// Waits for the first network interface to become available
void WaitForNet();
std::unique_ptr<CNetworkServices> m_services;
};

#if defined(TARGET_ANDROID)
Expand All @@ -160,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;

This comment was marked as spam.

This comment was marked as spam.

This comment was marked as spam.

This comment was marked as spam.

This comment was marked as spam.

This comment was marked as spam.

#endif

//creates, binds and listens a tcp socket on the desired port. Set bindLocal to
Expand Down