platform: drop lazy initialization _rules_init() of NMPRouteManager
Let's just always allocate the hash tables. We will likely need them,
and three hash tables are relatively cheap.
(cherry picked from commit 5b3e96451b
)
This commit is contained in:
@@ -23,10 +23,6 @@ struct _NMPRouteManager {
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void _rules_init(NMPRouteManager *self);
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
#define _NMLOG_DOMAIN LOGD_PLATFORM
|
||||
#define _NMLOG_PREFIX_NAME "route-manager"
|
||||
|
||||
@@ -328,8 +324,6 @@ nmp_route_manager_track_rule(NMPRouteManager *self,
|
||||
g_return_if_fail(user_tag);
|
||||
nm_assert(track_priority != G_MININT32);
|
||||
|
||||
_rules_init(self);
|
||||
|
||||
p_obj_stack = nmp_object_stackinit(&obj_stack, NMP_OBJECT_TYPE_ROUTING_RULE, routing_rule);
|
||||
|
||||
nm_assert(nmp_object_is_visible(p_obj_stack));
|
||||
@@ -477,8 +471,6 @@ nmp_route_manager_untrack_rule(NMPRouteManager *self,
|
||||
g_return_if_fail(routing_rule);
|
||||
g_return_if_fail(user_tag);
|
||||
|
||||
_rules_init(self);
|
||||
|
||||
p_obj_stack = nmp_object_stackinit(&obj_stack, NMP_OBJECT_TYPE_ROUTING_RULE, routing_rule);
|
||||
|
||||
nm_assert(nmp_object_is_visible(p_obj_stack));
|
||||
@@ -497,9 +489,6 @@ nmp_route_manager_set_dirty(NMPRouteManager *self, gconstpointer user_tag)
|
||||
g_return_if_fail(NMP_IS_ROUTE_MANAGER(self));
|
||||
g_return_if_fail(user_tag);
|
||||
|
||||
if (!self->by_data)
|
||||
return;
|
||||
|
||||
user_tag_data = g_hash_table_lookup(self->by_user_tag, &user_tag);
|
||||
if (!user_tag_data)
|
||||
return;
|
||||
@@ -520,9 +509,6 @@ nmp_route_manager_untrack_all(NMPRouteManager *self,
|
||||
g_return_if_fail(NMP_IS_ROUTE_MANAGER(self));
|
||||
g_return_if_fail(user_tag);
|
||||
|
||||
if (!self->by_data)
|
||||
return;
|
||||
|
||||
user_tag_data = g_hash_table_lookup(self->by_user_tag, &user_tag);
|
||||
if (!user_tag_data)
|
||||
return;
|
||||
@@ -552,9 +538,6 @@ nmp_route_manager_sync_rules(NMPRouteManager *self, gboolean keep_deleted_rules)
|
||||
|
||||
g_return_if_fail(NMP_IS_ROUTE_MANAGER(self));
|
||||
|
||||
if (!self->by_data)
|
||||
return;
|
||||
|
||||
_LOGD("sync%s", keep_deleted_rules ? " (don't remove any rules)" : "");
|
||||
|
||||
pl_head_entry = nm_platform_lookup_obj_type(self->platform, NMP_OBJECT_TYPE_ROUTING_RULE);
|
||||
@@ -750,22 +733,6 @@ nmp_route_manager_track_rule_default(NMPRouteManager *self,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_rules_init(NMPRouteManager *self)
|
||||
{
|
||||
if (self->by_data)
|
||||
return;
|
||||
|
||||
self->by_data =
|
||||
g_hash_table_new_full(_rules_data_hash, _rules_data_equal, NULL, _rules_data_destroy);
|
||||
self->by_obj =
|
||||
g_hash_table_new_full(_rules_obj_hash, _rules_obj_equal, NULL, _rules_obj_destroy);
|
||||
self->by_user_tag = g_hash_table_new_full(_rules_user_tag_hash,
|
||||
_rules_user_tag_equal,
|
||||
NULL,
|
||||
_rules_user_tag_destroy);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
NMPRouteManager *
|
||||
@@ -779,6 +746,14 @@ nmp_route_manager_new(NMPlatform *platform)
|
||||
*self = (NMPRouteManager){
|
||||
.ref_count = 1,
|
||||
.platform = g_object_ref(platform),
|
||||
.by_data =
|
||||
g_hash_table_new_full(_rules_data_hash, _rules_data_equal, NULL, _rules_data_destroy),
|
||||
.by_obj =
|
||||
g_hash_table_new_full(_rules_obj_hash, _rules_obj_equal, NULL, _rules_obj_destroy),
|
||||
.by_user_tag = g_hash_table_new_full(_rules_user_tag_hash,
|
||||
_rules_user_tag_equal,
|
||||
NULL,
|
||||
_rules_user_tag_destroy),
|
||||
};
|
||||
return self;
|
||||
}
|
||||
@@ -799,11 +774,9 @@ nmp_route_manager_unref(NMPRouteManager *self)
|
||||
if (--self->ref_count > 0)
|
||||
return;
|
||||
|
||||
if (self->by_data) {
|
||||
g_hash_table_destroy(self->by_user_tag);
|
||||
g_hash_table_destroy(self->by_obj);
|
||||
g_hash_table_destroy(self->by_data);
|
||||
}
|
||||
g_object_unref(self->platform);
|
||||
g_slice_free(NMPRouteManager, self);
|
||||
}
|
||||
|
Reference in New Issue
Block a user