BNetworkSettings: added const, server IsRunning() method.

* Get{Interface|Network|Service}() methods are now const.
* Added variants of Interface(), and Service() that are const.
* Added new BNetworkServiceSettings::IsRunning() convenience method that
  reflects the status quo rather than the settings.
This commit is contained in:
Axel Dörfler
2015-03-27 13:24:07 +01:00
parent 07b0531d9c
commit f7ccc9af85
2 changed files with 56 additions and 10 deletions
@@ -38,28 +38,33 @@ public:
status_t GetNextInterface(uint32& cookie,
BMessage& interface);
status_t GetInterface(const char* name,
BMessage& interface);
BMessage& interface) const;
status_t AddInterface(const BMessage& interface);
status_t RemoveInterface(const char* name);
BNetworkInterfaceSettings
Interface(const char* name);
const BNetworkInterfaceSettings
Interface(const char* name) const;
int32 CountNetworks() const;
status_t GetNextNetwork(uint32& cookie,
BMessage& network) const;
status_t GetNetwork(const char* name,
BMessage& network);
BMessage& network) const;
status_t AddNetwork(const BMessage& network);
status_t RemoveNetwork(const char* name);
const BMessage& Services() const;
status_t GetNextService(uint32& cookie,
BMessage& service);
status_t GetService(const char* name, BMessage& service);
status_t GetService(const char* name,
BMessage& service) const;
status_t AddService(const BMessage& service);
status_t RemoveService(const char* name);
BNetworkServiceSettings
Service(const char* name);
const BNetworkServiceSettings
Service(const char* name) const;
status_t StartMonitoring(const BMessenger& target);
status_t StopMonitoring(const BMessenger& target);
@@ -84,10 +89,10 @@ private:
status_t _ConvertNetworkToSettings(BMessage& message);
status_t _ConvertNetworkFromSettings(BMessage& message);
status_t _GetItem(BMessage& container,
status_t _GetItem(const BMessage& container,
const char* itemField,
const char* nameField, const char* name,
int32& _index, BMessage& item);
int32& _index, BMessage& item) const;
status_t _RemoveItem(BMessage& container,
const char* itemField,
const char* nameField, const char* name,
@@ -262,6 +267,8 @@ public:
BNetworkServiceAddressSettings& address);
void RemoveAddress(int32 index);
bool IsRunning() const;
status_t GetMessage(BMessage& data) const;
private:
+44 -5
View File
@@ -25,6 +25,7 @@
#include <String.h>
#include <DriverSettingsMessageAdapter.h>
#include <NetServer.h>
using namespace BNetworkKit;
@@ -318,7 +319,7 @@ BNetworkSettings::GetNextInterface(uint32& cookie, BMessage& interface)
status_t
BNetworkSettings::GetInterface(const char* name, BMessage& interface)
BNetworkSettings::GetInterface(const char* name, BMessage& interface) const
{
int32 index;
return _GetItem(fInterfaces, "interface", "device", name, index, interface);
@@ -359,6 +360,15 @@ BNetworkSettings::Interface(const char* name)
}
const BNetworkInterfaceSettings
BNetworkSettings::Interface(const char* name) const
{
BMessage interface;
GetInterface(name, interface);
return BNetworkInterfaceSettings(interface);
}
int32
BNetworkSettings::CountNetworks() const
{
@@ -383,7 +393,7 @@ BNetworkSettings::GetNextNetwork(uint32& cookie, BMessage& network) const
status_t
BNetworkSettings::GetNetwork(const char* name, BMessage& network)
BNetworkSettings::GetNetwork(const char* name, BMessage& network) const
{
int32 index;
return _GetItem(fNetworks, "network", "name", name, index, network);
@@ -435,7 +445,7 @@ BNetworkSettings::GetNextService(uint32& cookie, BMessage& service)
status_t
BNetworkSettings::GetService(const char* name, BMessage& service)
BNetworkSettings::GetService(const char* name, BMessage& service) const
{
int32 index;
return _GetItem(fServices, "service", "name", name, index, service);
@@ -476,6 +486,15 @@ BNetworkSettings::Service(const char* name)
}
const BNetworkServiceSettings
BNetworkSettings::Service(const char* name) const
{
BMessage service;
GetService(name, service);
return BNetworkServiceSettings(service);
}
status_t
BNetworkSettings::StartMonitoring(const BMessenger& target)
{
@@ -835,8 +854,9 @@ BNetworkSettings::_ConvertNetworkFromSettings(BMessage& message)
status_t
BNetworkSettings::_GetItem(BMessage& container, const char* itemField,
const char* nameField, const char* name, int32& _index, BMessage& item)
BNetworkSettings::_GetItem(const BMessage& container, const char* itemField,
const char* nameField, const char* name, int32& _index,
BMessage& item) const
{
int32 index = 0;
while (container.FindMessage(itemField, index, &item) == B_OK) {
@@ -1662,6 +1682,25 @@ BNetworkServiceSettings::RemoveAddress(int32 index)
}
/*! This is a convenience method that returns the current state of the
service, independent of the current settings.
*/
bool
BNetworkServiceSettings::IsRunning() const
{
BMessage request(kMsgIsServiceRunning);
request.AddString("name", fName);
BMessenger networkServer(kNetServerSignature);
BMessage reply;
status_t status = networkServer.SendMessage(&request, &reply);
if (status == B_OK)
return reply.GetBool("running");
return false;
}
status_t
BNetworkServiceSettings::GetMessage(BMessage& data) const
{