[firewalld-recode] master: Minor refactoring of the DBusResultBuilder (f39dbcb)
by mildew@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/firewalld-recode.git
On branch : master
>---------------------------------------------------------------
commit f39dbcbd2950b018b01e7ba1f91f073bf892f13e
Author: Daniel Kopecek <dkopecek(a)redhat.com>
Date: Tue Oct 7 10:22:19 2014 +0200
Minor refactoring of the DBusResultBuilder
>---------------------------------------------------------------
src/Daemon/DBus.hpp | 122 ++++++++++++++++++++++++--------------------------
1 files changed, 59 insertions(+), 63 deletions(-)
diff --git a/src/Daemon/DBus.hpp b/src/Daemon/DBus.hpp
index 8fcd859..31912c9 100644
--- a/src/Daemon/DBus.hpp
+++ b/src/Daemon/DBus.hpp
@@ -223,7 +223,7 @@ namespace firewalld
return *this;
}
- DBusResultBuilder& addBuilder()
+ DBusResultBuilder& addBuilder(const char *signature = nullptr)
{
switch(_value_type) {
case ValueType::Array:
@@ -233,7 +233,7 @@ namespace firewalld
throw std::runtime_error("Invalid usage of addBuilder() method");
}
- DBusResultBuilder* builder = new DBusResultBuilder();
+ DBusResultBuilder* builder = new DBusResultBuilder(signature);
_array.push_back(builder);
return *builder;
}
@@ -311,96 +311,92 @@ namespace firewalld
bool finishMethodResponse(GVariantBuilder& g_builder)
{
switch (_value_type) {
- case ValueType::Error:
- case ValueType::Unknown:
- return false;
case ValueType::Basic:
- LOG(DEBUG) << "basic";
g_variant_builder_add_value(&g_builder, _basic.gobj());
return true;
+ case ValueType::List:
case ValueType::Array:
{
if (_array.size() == 0) {
- return false;
+ if (!_value_signature.empty()) {
+ GVariant *g_array = g_variant_new(_value_signature.c_str(), nullptr);
+ g_variant_builder_add_value(&g_builder, g_array);
+ return true;
+ } else {
+ return false;
+ }
}
GVariantBuilder g_array_builder;
- g_variant_builder_init(&g_array_builder, G_VARIANT_TYPE_ARRAY);
- LOG(DEBUG) << "array init";
-
- for (_Array::iterator i = _array.begin();
- i != _array.end(); ++i)
- {
- DBusResultBuilder *builder = *i;
- if (builder == nullptr) {
- continue;
- }
- LOG(DEBUG) << "array entry";
- builder->finishMethodResponse(g_array_builder);
- }
- LOG(DEBUG) << "array end";
- GVariant *g_array = g_variant_builder_end(&g_array_builder);
- LOG(DEBUG) << "array type: " << g_variant_get_type_string(g_array);
- LOG(DEBUG) << "builder add";
- g_variant_builder_add_value(&g_builder, g_array);
- LOG(DEBUG) << "builder added";
- } return true;
- case ValueType::List:
- {
- if (_array.size() == 0) {
- return false;
+ if (_value_type == ValueType::List) {
+ g_variant_builder_init(&g_array_builder, G_VARIANT_TYPE_TUPLE);
+ } else {
+ g_variant_builder_init(&g_array_builder, G_VARIANT_TYPE_ARRAY);
}
- GVariantBuilder g_array_builder;
- g_variant_builder_init(&g_array_builder, G_VARIANT_TYPE_TUPLE);
- LOG(DEBUG) << "list init";
-
- for (_Array::iterator i = _array.begin();
- i != _array.end(); ++i)
- {
- DBusResultBuilder *builder = *i;
- if (builder == nullptr) {
- continue;
- }
- LOG(DEBUG) << "list entry";
+ for (auto builder : _array) {
+ if (builder != nullptr) {
builder->finishMethodResponse(g_array_builder);
- }
+ }
+ }
- LOG(DEBUG) << "list end";
GVariant *g_array = g_variant_builder_end(&g_array_builder);
- LOG(DEBUG) << "list type: " << g_variant_get_type_string(g_array);
- LOG(DEBUG) << "builder add";
g_variant_builder_add_value(&g_builder, g_array);
- LOG(DEBUG) << "builder added";
- } return true;
+
+ return true;
+ }
+ break;
case ValueType::Dictionary:
{
if (_dictionary.size() == 0) {
- return false;
+ if (!_value_signature.empty()) {
+ GVariant *g_array = g_variant_new(_value_signature.c_str(), nullptr);
+ g_variant_builder_add_value(&g_builder, g_array);
+ return true;
+ } else {
+ return false;
+ }
}
GVariantBuilder g_dictionary_builder;
g_variant_builder_init(&g_dictionary_builder, G_VARIANT_TYPE_DICTIONARY);
- for (_Dictionary::iterator i = _dictionary.begin();
- i != _dictionary.end(); ++i)
- {
- const UString& key = i->first;
- DBusResultBuilder *builder = i->second;
- GVariantBuilder g_variant_builder;
+ for (auto dict_entry : _dictionary) {
+ const UString& key = dict_entry.first;
+ DBusResultBuilder *builder = dict_entry.second;
+ GVariantBuilder g_variant_builder;
- g_variant_builder_init(&g_variant_builder, G_VARIANT_TYPE_DICT_ENTRY);
- g_variant_builder_add_value(&g_variant_builder, g_variant_new_string(key.c_str()));
- builder->finishMethodResponse(g_variant_builder);
+ g_variant_builder_init(&g_variant_builder, G_VARIANT_TYPE_DICT_ENTRY);
+ g_variant_builder_add_value(&g_variant_builder, g_variant_new_string(key.c_str()));
- GVariant *g_dict_entry = g_variant_builder_end(&g_variant_builder);
- g_variant_builder_add_value(&g_dictionary_builder, g_dict_entry);
- }
+ builder->finishMethodResponse(g_variant_builder);
+
+ GVariant *g_dict_entry = g_variant_builder_end(&g_variant_builder);
+ g_variant_builder_add_value(&g_dictionary_builder, g_dict_entry);
+ }
GVariant *g_dictionary = g_variant_builder_end(&g_dictionary_builder);
g_variant_builder_add_value(&g_builder, g_dictionary);
- } return true;
+
+ return true;
+ }
+ break;
+ case ValueType::Unknown:
+ LOG(DEBUG) << "Unknown";
+ if (!_value_signature.empty()) {
+ GVariant *g_array = g_variant_new(_value_signature.c_str(), nullptr);
+ LOG(DEBUG) << "Add empty variant of type " << _value_signature;
+ g_variant_builder_add_value(&g_builder, g_array);
+ LOG(DEBUG) << "added";
+ return true;
+ } else {
+ return false;
+ }
+ break;
+ case ValueType::Error:
+ default:
+ return false;
}
return false;
}