Skip to content

Commit

Permalink
[network] move CNetworkServices to CNetwork as a class member.
Browse files Browse the repository at this point in the history
  • Loading branch information
afedchin committed Apr 18, 2018
1 parent b3a4aed commit 03a51ad
Show file tree
Hide file tree
Showing 15 changed files with 72 additions and 59 deletions.
10 changes: 5 additions & 5 deletions xbmc/ServiceManager.cpp
Expand Up @@ -403,15 +403,15 @@ void CServiceManager::delete_favouritesService::operator()(CFavouritesService *p
CNetwork* CServiceManager::SetupNetwork() const
{
#if defined(TARGET_ANDROID)
return new CNetworkAndroid();
return new CNetworkAndroid(*m_settings);
#elif defined(HAS_LINUX_NETWORK)
return new CNetworkLinux();
return new CNetworkLinux(*m_settings);
#elif defined(HAS_WIN32_NETWORK)
return new CNetworkWin32();
return new CNetworkWin32(*m_settings);
#elif defined(HAS_WIN10_NETWORK)
return new CNetworkWin10();
return new CNetworkWin10(*m_settings);
#else
return new CNetwork();
return new CNetwork(*m_settings);
#endif
}

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
11 changes: 8 additions & 3 deletions xbmc/network/Network.cpp
Expand Up @@ -142,6 +142,11 @@ CNetwork::CNetwork()
CApplicationMessenger::GetInstance().PostMsg(TMSG_NETWORKMESSAGE, SERVICES_UP, 0);
}

CNetwork::CNetwork(CSettings &settings) :
m_services(new CNetworkServices(settings))
{
}

CNetwork::~CNetwork()
{
CApplicationMessenger::GetInstance().PostMsg(TMSG_NETWORKMESSAGE, SERVICES_DOWN, 0);
Expand Down Expand Up @@ -280,14 +285,14 @@ void CNetwork::NetworkMessage(EMESSAGE message, int param)
{
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;
}
}
Expand Down
6 changes: 5 additions & 1 deletion xbmc/network/Network.h
Expand Up @@ -104,9 +104,12 @@ class CNetwork
SERVICES_DOWN
};

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

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

// Return our hostname
virtual bool GetHostName(std::string& hostname);

Expand Down Expand Up @@ -150,6 +153,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 Down
40 changes: 32 additions & 8 deletions xbmc/network/NetworkServices.cpp
Expand Up @@ -34,6 +34,7 @@
#include "network/TCPServer.h"
#include "settings/AdvancedSettings.h"
#include "settings/lib/Setting.h"
#include "settings/lib/SettingsManager.h"
#include "settings/Settings.h"
#include "utils/log.h"
#include "utils/RssManager.h"
Expand Down Expand Up @@ -87,9 +88,10 @@ using namespace UPNP;

using KODI::MESSAGING::HELPERS::DialogResponse;

CNetworkServices::CNetworkServices()
CNetworkServices::CNetworkServices(CSettings &settings)
#ifdef HAS_WEB_SERVER
:
m_settings(settings),
m_webserver(*new CWebServer),
m_httpImageHandler(*new CHTTPImageHandler),
m_httpImageTransformationHandler(*new CHTTPImageTransformationHandler),
Expand All @@ -103,7 +105,6 @@ CNetworkServices::CNetworkServices()
, m_httpWebinterfaceAddonsHandler(*new CHTTPWebinterfaceAddonsHandler)
#endif // HAS_WEB_INTERFACE
#endif // HAS_WEB_SERVER

{
#ifdef HAS_WEB_SERVER
m_webserver.RegisterRequestHandler(&m_httpImageHandler);
Expand All @@ -118,10 +119,39 @@ CNetworkServices::CNetworkServices()
m_webserver.RegisterRequestHandler(&m_httpWebinterfaceHandler);
#endif // HAS_WEB_INTERFACE
#endif // HAS_WEB_SERVER
std::set<std::string> settingSet{
CSettings::SETTING_SERVICES_WEBSERVER,
CSettings::SETTING_SERVICES_WEBSERVERPORT,
CSettings::SETTING_SERVICES_WEBSERVERUSERNAME,
CSettings::SETTING_SERVICES_WEBSERVERPASSWORD,
CSettings::SETTING_SERVICES_WEBSERVERSSL,
CSettings::SETTING_SERVICES_ZEROCONF,
CSettings::SETTING_SERVICES_AIRPLAY,
CSettings::SETTING_SERVICES_AIRPLAYVOLUMECONTROL,
CSettings::SETTING_SERVICES_AIRPLAYVIDEOSUPPORT,
CSettings::SETTING_SERVICES_USEAIRPLAYPASSWORD,
CSettings::SETTING_SERVICES_AIRPLAYPASSWORD,
CSettings::SETTING_SERVICES_UPNP,
CSettings::SETTING_SERVICES_UPNPSERVER,
CSettings::SETTING_SERVICES_UPNPRENDERER,
CSettings::SETTING_SERVICES_UPNPCONTROLLER,
CSettings::SETTING_SERVICES_ESENABLED,
CSettings::SETTING_SERVICES_ESPORT,
CSettings::SETTING_SERVICES_ESALLINTERFACES,
CSettings::SETTING_SERVICES_ESINITIALDELAY,
CSettings::SETTING_SERVICES_ESCONTINUOUSDELAY,
CSettings::SETTING_SMB_WINSSERVER,
CSettings::SETTING_SMB_WORKGROUP,
CSettings::SETTING_SMB_MINPROTOCOL,
CSettings::SETTING_SMB_MAXPROTOCOL,
CSettings::SETTING_SMB_LEGACYSECURITY
};
m_settings.GetSettingsManager()->RegisterCallback(this, settingSet);
}

CNetworkServices::~CNetworkServices()
{
m_settings.GetSettingsManager()->UnregisterCallback(this);
#ifdef HAS_WEB_SERVER
m_webserver.UnregisterRequestHandler(&m_httpImageHandler);
delete &m_httpImageHandler;
Expand All @@ -146,12 +176,6 @@ CNetworkServices::~CNetworkServices()
#endif // HAS_WEB_SERVER
}

CNetworkServices& CNetworkServices::GetInstance()
{
static CNetworkServices sNetworkServices;
return sNetworkServices;
}

bool CNetworkServices::OnSettingChanging(std::shared_ptr<const CSetting> setting)
{
if (setting == NULL)
Expand Down
11 changes: 8 additions & 3 deletions xbmc/network/NetworkServices.h
Expand Up @@ -21,6 +21,7 @@

#include "settings/lib/ISettingCallback.h"

class CSettings;
#ifdef HAS_WEB_SERVER
class CWebServer;
class CHTTPImageHandler;
Expand All @@ -39,7 +40,8 @@ class CHTTPWebinterfaceAddonsHandler;
class CNetworkServices : public ISettingCallback
{
public:
static CNetworkServices& GetInstance();
CNetworkServices(CSettings &settings);
~CNetworkServices() override;

bool OnSettingChanging(std::shared_ptr<const CSetting> setting) override;
void OnSettingChanged(std::shared_ptr<const CSetting> setting) override;
Expand Down Expand Up @@ -92,15 +94,18 @@ class CNetworkServices : public ISettingCallback
bool StopZeroconf();

private:
CNetworkServices();
CNetworkServices(const CNetworkServices&);
CNetworkServices const& operator=(CNetworkServices const&);
~CNetworkServices() override;

bool ValidatePort(int port);

// Construction parameters
CSettings &m_settings;

// Network services
#ifdef HAS_WEB_SERVER
CWebServer& m_webserver;
// Handlers
CHTTPImageHandler& m_httpImageHandler;
CHTTPImageTransformationHandler& m_httpImageTransformationHandler;
CHTTPVfsHandler& m_httpVfsHandler;
Expand Down
3 changes: 2 additions & 1 deletion xbmc/platform/android/network/NetworkAndroid.cpp
Expand Up @@ -293,7 +293,8 @@ std::string CNetworkInterfaceAndroid::GetHostName()

/*************************/

CNetworkAndroid::CNetworkAndroid()
CNetworkAndroid::CNetworkAndroid(CSettings &settings)
: CNetwork(settings)
{
RetrieveInterfaces();
}
Expand Down
2 changes: 1 addition & 1 deletion xbmc/platform/android/network/NetworkAndroid.h
Expand Up @@ -68,7 +68,7 @@ class CNetworkAndroid : public CNetwork
friend class CXBMCApp;

public:
CNetworkAndroid();
CNetworkAndroid(CSettings &settings);
~CNetworkAndroid();

// CNetwork interface
Expand Down
3 changes: 2 additions & 1 deletion xbmc/platform/linux/network/NetworkLinux.cpp
Expand Up @@ -305,7 +305,8 @@ std::string CNetworkInterfaceLinux::GetCurrentDefaultGateway(void)
return result;
}

CNetworkLinux::CNetworkLinux(void)
CNetworkLinux::CNetworkLinux(CSettings &settings)
: CNetwork(settings)
{
m_sock = socket(AF_INET, SOCK_DGRAM, 0);
queryInterfaceList();
Expand Down
2 changes: 1 addition & 1 deletion xbmc/platform/linux/network/NetworkLinux.h
Expand Up @@ -67,7 +67,7 @@ class CNetworkInterfaceLinux : public CNetworkInterface
class CNetworkLinux : public CNetwork
{
public:
CNetworkLinux(void);
CNetworkLinux(CSettings &settings);
~CNetworkLinux(void) override;

// Return the list of interfaces
Expand Down
4 changes: 3 additions & 1 deletion xbmc/platform/win10/network/NetworkWin10.cpp
Expand Up @@ -161,7 +161,9 @@ CNetworkWin10::CNetworkWin10(void)
});
}

CNetworkWin10::~CNetworkWin10(void)
CNetworkWin10::~CNetworkWin10(CSettings &settings)
: CNetwork(settings)

{
CleanInterfaceList();
}
Expand Down
2 changes: 1 addition & 1 deletion xbmc/platform/win10/network/NetworkWin10.h
Expand Up @@ -69,7 +69,7 @@ class CNetworkInterfaceWin10 : public CNetworkInterface
class CNetworkWin10 : public CNetwork
{
public:
CNetworkWin10(void);
CNetworkWin10(CSettings &settings);
virtual ~CNetworkWin10(void);

// Return the list of interfaces
Expand Down
3 changes: 2 additions & 1 deletion xbmc/platform/win32/network/NetworkWin32.cpp
Expand Up @@ -152,7 +152,8 @@ std::string CNetworkInterfaceWin32::GetCurrentDefaultGateway(void)
return m_adapter.GatewayList.IpAddress.String;
}

CNetworkWin32::CNetworkWin32(void)
CNetworkWin32::CNetworkWin32(CSettings &settings)
: CNetwork(settings)
{
queryInterfaceList();
}
Expand Down
2 changes: 1 addition & 1 deletion xbmc/platform/win32/network/NetworkWin32.h
Expand Up @@ -67,7 +67,7 @@ class CNetworkInterfaceWin32 : public CNetworkInterface
class CNetworkWin32 : public CNetwork
{
public:
CNetworkWin32(void);
CNetworkWin32(CSettings &settings);
virtual ~CNetworkWin32(void);

// Return the list of interfaces
Expand Down
30 changes: 0 additions & 30 deletions xbmc/settings/Settings.cpp
Expand Up @@ -808,7 +808,6 @@ void CSettings::UninitializeISettingsHandlers()
GetSettingsManager()->UnregisterCallback(&g_audioManager);
GetSettingsManager()->UnregisterCallback(&g_charsetConverter);
GetSettingsManager()->UnregisterCallback(&g_langInfo);
GetSettingsManager()->UnregisterCallback(&CNetworkServices::GetInstance());
GetSettingsManager()->UnregisterCallback(&g_passwordManager);
GetSettingsManager()->UnregisterCallback(&CRssManager::GetInstance());
#if defined(TARGET_LINUX)
Expand Down Expand Up @@ -931,34 +930,6 @@ void CSettings::InitializeISettingCallbacks()
settingSet.insert(CSettings::SETTING_LOCALE_SPEEDUNIT);
GetSettingsManager()->RegisterCallback(&g_langInfo, settingSet);

settingSet.clear();
settingSet.insert(CSettings::SETTING_SERVICES_WEBSERVER);
settingSet.insert(CSettings::SETTING_SERVICES_WEBSERVERPORT);
settingSet.insert(CSettings::SETTING_SERVICES_WEBSERVERUSERNAME);
settingSet.insert(CSettings::SETTING_SERVICES_WEBSERVERPASSWORD);
settingSet.insert(CSettings::SETTING_SERVICES_WEBSERVERSSL);
settingSet.insert(CSettings::SETTING_SERVICES_ZEROCONF);
settingSet.insert(CSettings::SETTING_SERVICES_AIRPLAY);
settingSet.insert(CSettings::SETTING_SERVICES_AIRPLAYVOLUMECONTROL);
settingSet.insert(CSettings::SETTING_SERVICES_AIRPLAYVIDEOSUPPORT);
settingSet.insert(CSettings::SETTING_SERVICES_USEAIRPLAYPASSWORD);
settingSet.insert(CSettings::SETTING_SERVICES_AIRPLAYPASSWORD);
settingSet.insert(CSettings::SETTING_SERVICES_UPNP);
settingSet.insert(CSettings::SETTING_SERVICES_UPNPSERVER);
settingSet.insert(CSettings::SETTING_SERVICES_UPNPRENDERER);
settingSet.insert(CSettings::SETTING_SERVICES_UPNPCONTROLLER);
settingSet.insert(CSettings::SETTING_SERVICES_ESENABLED);
settingSet.insert(CSettings::SETTING_SERVICES_ESPORT);
settingSet.insert(CSettings::SETTING_SERVICES_ESALLINTERFACES);
settingSet.insert(CSettings::SETTING_SERVICES_ESINITIALDELAY);
settingSet.insert(CSettings::SETTING_SERVICES_ESCONTINUOUSDELAY);
settingSet.insert(CSettings::SETTING_SMB_WINSSERVER);
settingSet.insert(CSettings::SETTING_SMB_WORKGROUP);
settingSet.insert(CSettings::SETTING_SMB_MINPROTOCOL);
settingSet.insert(CSettings::SETTING_SMB_MAXPROTOCOL);
settingSet.insert(CSettings::SETTING_SMB_LEGACYSECURITY);
GetSettingsManager()->RegisterCallback(&CNetworkServices::GetInstance(), settingSet);

settingSet.clear();
settingSet.insert(CSettings::SETTING_MASTERLOCK_LOCKCODE);
GetSettingsManager()->RegisterCallback(&g_passwordManager, settingSet);
Expand Down Expand Up @@ -1008,7 +979,6 @@ void CSettings::UninitializeISettingCallbacks()
GetSettingsManager()->UnregisterCallback(&g_audioManager);
GetSettingsManager()->UnregisterCallback(&g_charsetConverter);
GetSettingsManager()->UnregisterCallback(&g_langInfo);
GetSettingsManager()->UnregisterCallback(&CNetworkServices::GetInstance());
GetSettingsManager()->UnregisterCallback(&g_passwordManager);
GetSettingsManager()->UnregisterCallback(&CRssManager::GetInstance());
#if defined(TARGET_LINUX)
Expand Down

0 comments on commit 03a51ad

Please sign in to comment.