From: Marcel Holtmann Date: Fri, 27 Feb 2009 07:37:46 +0000 (+0100) Subject: Add priority field to plugin description X-Git-Tag: 2.0_alpha~4027 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2e88ef3053cf2a12115f78fcd4292266b4c98943;p=framework%2Fconnectivity%2Fconnman.git Add priority field to plugin description --- diff --git a/include/plugin.h b/include/plugin.h index 84e0958..350937e 100644 --- a/include/plugin.h +++ b/include/plugin.h @@ -33,6 +33,10 @@ extern "C" { understanding that ConnMan hasn't reached a stable API." #endif +#define CONNMAN_PLUGIN_PRIORITY_LOW -100 +#define CONNMAN_PLUGIN_PRIORITY_DEFAULT 0 +#define CONNMAN_PLUGIN_PRIORITY_HIGH 100 + /** * SECTION:plugin * @title: Plugin premitives @@ -43,6 +47,7 @@ struct connman_plugin_desc { const char *name; const char *description; const char *version; + int priority; int (*init) (void); void (*exit) (void); }; @@ -75,7 +80,8 @@ struct connman_plugin_desc { */ #define CONNMAN_PLUGIN_DEFINE(name, description, version, init, exit) \ struct connman_plugin_desc connman_plugin_desc = { \ - #name, description, version, init, exit \ + #name, description, version, \ + CONNMAN_PLUGIN_PRIORITY_DEFAULT, init, exit \ }; #ifdef __cplusplus diff --git a/src/plugin.c b/src/plugin.c index 59d3572..216fce1 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -36,6 +36,14 @@ struct connman_plugin { struct connman_plugin_desc *desc; }; +static gint compare_priority(gconstpointer a, gconstpointer b) +{ + const struct connman_plugin *plugin1 = a; + const struct connman_plugin *plugin2 = b; + + return plugin2->desc->priority - plugin1->desc->priority; +} + static gboolean add_plugin(void *handle, struct connman_plugin_desc *desc) { struct connman_plugin *plugin; @@ -60,7 +68,7 @@ static gboolean add_plugin(void *handle, struct connman_plugin_desc *desc) return FALSE; } - plugins = g_slist_append(plugins, plugin); + plugins = g_slist_insert_sorted(plugins, plugin, compare_priority); return TRUE; }