BNetworkSettings: added Get*() by name methods.

This commit is contained in:
Axel Dörfler
2015-03-27 13:21:46 +01:00
parent fd55fb6615
commit d880e2d91f
2 changed files with 64 additions and 15 deletions
@@ -28,18 +28,23 @@ public:
status_t GetNextInterface(uint32& cookie,
BMessage& interface);
status_t GetInterface(const char* name,
BMessage& interface);
status_t AddInterface(const BMessage& interface);
status_t RemoveInterface(const char* name);
int32 CountNetworks() const;
status_t GetNextNetwork(uint32& cookie,
BMessage& network) const;
status_t GetNetwork(const char* name,
BMessage& network);
status_t AddNetwork(const BMessage& network);
status_t RemoveNetwork(const char* name);
const BMessage& Services() const;
status_t GetNextService(uint32& cookie,
BMessage& service);
const BMessage& Services() const;
status_t GetService(const char* name, BMessage& service);
status_t AddService(const BMessage& service);
status_t RemoveService(const char* name);
@@ -65,9 +70,15 @@ private:
status_t _ConvertNetworkToSettings(BMessage& message);
status_t _ConvertNetworkFromSettings(BMessage& message);
status_t _GetItem(BMessage& container,
const char* itemField,
const char* nameField, const char* name,
int32& _index, BMessage& item);
status_t _RemoveItem(BMessage& container,
const char* itemField,const char* nameField,
const char* name, const char* store);
const char* itemField,
const char* nameField, const char* name,
const char* store = NULL);
private:
BMessenger fListener;
+50 -12
View File
@@ -138,6 +138,14 @@ BNetworkSettings::GetNextInterface(uint32& cookie, BMessage& interface)
}
status_t
BNetworkSettings::GetInterface(const char* name, BMessage& interface)
{
int32 index;
return _GetItem(fInterfaces, "interface", "device", name, index, interface);
}
status_t
BNetworkSettings::AddInterface(const BMessage& interface)
{
@@ -145,7 +153,7 @@ BNetworkSettings::AddInterface(const BMessage& interface)
if (interface.FindString("device", &name) != B_OK)
return B_BAD_VALUE;
_RemoveItem(fInterfaces, "interface", "device", name, NULL);
_RemoveItem(fInterfaces, "interface", "device", name);
status_t result = fInterfaces.AddMessage("interface", &interface);
if (result != B_OK)
@@ -186,6 +194,14 @@ BNetworkSettings::GetNextNetwork(uint32& cookie, BMessage& network) const
}
status_t
BNetworkSettings::GetNetwork(const char* name, BMessage& network)
{
int32 index;
return _GetItem(fNetworks, "network", "name", name, index, network);
}
status_t
BNetworkSettings::AddNetwork(const BMessage& network)
{
@@ -193,7 +209,7 @@ BNetworkSettings::AddNetwork(const BMessage& network)
if (network.FindString("name", &name) != B_OK)
return B_BAD_VALUE;
_RemoveItem(fNetworks, "network", "name", name, NULL);
_RemoveItem(fNetworks, "network", "name", name);
status_t result = fNetworks.AddMessage("network", &network);
if (result != B_OK)
@@ -211,6 +227,13 @@ BNetworkSettings::RemoveNetwork(const char* name)
}
const BMessage&
BNetworkSettings::Services() const
{
return fServices;
}
status_t
BNetworkSettings::GetNextService(uint32& cookie, BMessage& service)
{
@@ -223,10 +246,11 @@ BNetworkSettings::GetNextService(uint32& cookie, BMessage& service)
}
const BMessage&
BNetworkSettings::Services() const
status_t
BNetworkSettings::GetService(const char* name, BMessage& service)
{
return fServices;
int32 index;
return _GetItem(fServices, "service", "name", name, index, service);
}
@@ -237,7 +261,7 @@ BNetworkSettings::AddService(const BMessage& service)
if (service.FindString("name", &name) != B_OK)
return B_BAD_VALUE;
_RemoveItem(fServices, "service", "name", name, NULL);
_RemoveItem(fServices, "service", "name", name);
status_t result = fServices.AddMessage("service", &service);
if (result != B_OK)
@@ -614,18 +638,15 @@ BNetworkSettings::_ConvertNetworkFromSettings(BMessage& message)
status_t
BNetworkSettings::_RemoveItem(BMessage& container, const char* itemField,
const char* nameField, const char* name, const char* store)
BNetworkSettings::_GetItem(BMessage& container, const char* itemField,
const char* nameField, const char* name, int32& _index, BMessage& item)
{
int32 index = 0;
BMessage item;
while (container.FindMessage(itemField, index, &item) == B_OK) {
const char* itemName = NULL;
if (item.FindString(nameField, &itemName) == B_OK
&& strcmp(itemName, name) == 0) {
container.RemoveData(itemField, index);
if (store != NULL)
return _Save(store);
_index = index;
return B_OK;
}
@@ -634,3 +655,20 @@ BNetworkSettings::_RemoveItem(BMessage& container, const char* itemField,
return B_ENTRY_NOT_FOUND;
}
status_t
BNetworkSettings::_RemoveItem(BMessage& container, const char* itemField,
const char* nameField, const char* name, const char* store)
{
BMessage item;
int32 index;
if (_GetItem(container, itemField, nameField, name, index, item) == B_OK) {
container.RemoveData(itemField, index);
if (store != NULL)
return _Save(store);
return B_OK;
}
return B_ENTRY_NOT_FOUND;
}