summaryrefslogtreecommitdiff
path: root/qpid/extras/dispatch/src/dispatch.c
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/extras/dispatch/src/dispatch.c')
-rw-r--r--qpid/extras/dispatch/src/dispatch.c39
1 files changed, 37 insertions, 2 deletions
diff --git a/qpid/extras/dispatch/src/dispatch.c b/qpid/extras/dispatch/src/dispatch.c
index 0176d3189e..3c8fa9ba83 100644
--- a/qpid/extras/dispatch/src/dispatch.c
+++ b/qpid/extras/dispatch/src/dispatch.c
@@ -17,10 +17,12 @@
* under the License.
*/
+#include "python_embedded.h"
#include <qpid/dispatch.h>
#include "dispatch_private.h"
#include "alloc_private.h"
#include "log_private.h"
+#include "config_private.h"
/**
* Private Function Prototypes
@@ -38,14 +40,43 @@ dx_agent_t *dx_agent(dx_dispatch_t *dx);
void dx_agent_free(dx_agent_t *agent);
-dx_dispatch_t *dx_dispatch(int thread_count, const char *container_name,
- const char *router_area, const char *router_id)
+static const char *CONF_CONTAINER = "container";
+static const char *CONF_ROUTER = "router";
+
+
+dx_dispatch_t *dx_dispatch()
{
dx_dispatch_t *dx = NEW(dx_dispatch_t);
+ int thread_count = 0;
+ const char *container_name = 0;
+ const char *router_area = 0;
+ const char *router_id = 0;
+
+ dx_python_initialize();
dx_log_initialize();
dx_alloc_initialize();
+ dx_config_initialize();
+ dx_config_t *config = dx_config("../etc/qpid-dispatch.conf");
+
+ if (config) {
+ int count = dx_config_item_count(config, CONF_CONTAINER);
+ if (count == 1) {
+ thread_count = dx_config_item_value_int(config, CONF_CONTAINER, 0, "worker-threads");
+ container_name = dx_config_item_value_string(config, CONF_CONTAINER, 0, "container-name");
+ }
+
+ count = dx_config_item_count(config, CONF_ROUTER);
+ if (count == 1) {
+ router_area = dx_config_item_value_string(config, CONF_ROUTER, 0, "area");
+ router_id = dx_config_item_value_string(config, CONF_ROUTER, 0, "router-id");
+ }
+ }
+
+ if (thread_count == 0)
+ thread_count = 1;
+
if (!container_name)
container_name = "00000000-0000-0000-0000-000000000000"; // TODO - gen a real uuid
@@ -64,16 +95,20 @@ dx_dispatch_t *dx_dispatch(int thread_count, const char *container_name,
dx_container_setup_agent(dx);
dx_router_setup_agent(dx);
+ dx_config_free(config);
+
return dx;
}
void dx_dispatch_free(dx_dispatch_t *dx)
{
+ dx_config_finalize();
dx_agent_free(dx->agent);
dx_router_free(dx->router);
dx_container_free(dx->container);
dx_server_free(dx->server);
dx_log_finalize();
+ dx_python_finalize();
}