From d880e2d91fa24c0237407e913193c0a731c682a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 19 Feb 2015 17:33:23 +0000 Subject: [PATCH] BNetworkSettings: added Get*() by name methods. --- .../network_settings/NetworkSettings.h | 17 ++++- .../network/libnetapi/NetworkSettings.cpp | 62 +++++++++++++++---- 2 files changed, 64 insertions(+), 15 deletions(-) diff --git a/headers/os/add-ons/network_settings/NetworkSettings.h b/headers/os/add-ons/network_settings/NetworkSettings.h index a63f462685..6f6839375b 100644 --- a/headers/os/add-ons/network_settings/NetworkSettings.h +++ b/headers/os/add-ons/network_settings/NetworkSettings.h @@ -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; diff --git a/src/kits/network/libnetapi/NetworkSettings.cpp b/src/kits/network/libnetapi/NetworkSettings.cpp index beec0db0c3..fc5fd058e3 100644 --- a/src/kits/network/libnetapi/NetworkSettings.cpp +++ b/src/kits/network/libnetapi/NetworkSettings.cpp @@ -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; +}