You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2014/12/05 23:13:45 UTC

svn commit: r1643449 - in /qpid/dispatch/trunk: include/qpid/ include/qpid/dispatch/ python/qpid_dispatch/management/ python/qpid_dispatch_internal/ python/qpid_dispatch_internal/management/ src/ tests/

Author: aconway
Date: Fri Dec  5 22:13:44 2014
New Revision: 1643449

URL: http://svn.apache.org/r1643449
Log:
DISPATCH-81: Remove old management code.

- Removed agent.c and related code
- Renamed py_agent as agent
- Rename entity_private.h to entity.h, move private dispatch functions to _private.h
- Renamed c_entity to entity_cache, moved out type constants.

Added:
    qpid/dispatch/trunk/src/entity.h
      - copied, changed from r1643444, qpid/dispatch/trunk/src/entity_private.h
    qpid/dispatch/trunk/src/entity_cache.c
      - copied, changed from r1643444, qpid/dispatch/trunk/src/c_entity.c
    qpid/dispatch/trunk/src/entity_cache.h
      - copied, changed from r1643444, qpid/dispatch/trunk/src/alloc_private.h
Removed:
    qpid/dispatch/trunk/include/qpid/dispatch/agent.h
    qpid/dispatch/trunk/src/agent.c
    qpid/dispatch/trunk/src/c_entity.c
    qpid/dispatch/trunk/src/c_entity.h
    qpid/dispatch/trunk/src/entity_private.h
Modified:
    qpid/dispatch/trunk/include/qpid/dispatch.h
    qpid/dispatch/trunk/include/qpid/dispatch/dispatch.h
    qpid/dispatch/trunk/python/qpid_dispatch/management/qdrouter.json
    qpid/dispatch/trunk/python/qpid_dispatch_internal/dispatch_c.py
    qpid/dispatch/trunk/python/qpid_dispatch_internal/management/agent.py
    qpid/dispatch/trunk/src/CMakeLists.txt
    qpid/dispatch/trunk/src/alloc.c
    qpid/dispatch/trunk/src/alloc_private.h
    qpid/dispatch/trunk/src/connection_manager.c
    qpid/dispatch/trunk/src/container.c
    qpid/dispatch/trunk/src/dispatch.c
    qpid/dispatch/trunk/src/dispatch_private.h
    qpid/dispatch/trunk/src/entity.c
    qpid/dispatch/trunk/src/log.c
    qpid/dispatch/trunk/src/python_embedded.c
    qpid/dispatch/trunk/src/router_agent.c
    qpid/dispatch/trunk/src/router_config.c
    qpid/dispatch/trunk/src/router_node.c
    qpid/dispatch/trunk/src/router_private.h
    qpid/dispatch/trunk/src/router_pynode.c
    qpid/dispatch/trunk/src/server.c
    qpid/dispatch/trunk/src/waypoint.c
    qpid/dispatch/trunk/tests/system_test.py
    qpid/dispatch/trunk/tests/system_tests_qdmanage.py
    qpid/dispatch/trunk/tests/system_tests_qdstat.py

Modified: qpid/dispatch/trunk/include/qpid/dispatch.h
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/include/qpid/dispatch.h?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/include/qpid/dispatch.h (original)
+++ qpid/dispatch/trunk/include/qpid/dispatch.h Fri Dec  5 22:13:44 2014
@@ -37,7 +37,6 @@
 #include <qpid/dispatch/server.h>
 #include <qpid/dispatch/message.h>
 #include <qpid/dispatch/container.h>
-#include <qpid/dispatch/agent.h>
 #include <qpid/dispatch/connection_manager.h>
 #include <qpid/dispatch/dispatch.h>
 

Modified: qpid/dispatch/trunk/include/qpid/dispatch/dispatch.h
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/include/qpid/dispatch/dispatch.h?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/include/qpid/dispatch/dispatch.h (original)
+++ qpid/dispatch/trunk/include/qpid/dispatch/dispatch.h Fri Dec  5 22:13:44 2014
@@ -21,10 +21,6 @@
 
 #include <qpid/dispatch/error.h>
 
-typedef struct qd_entity_t qd_entity_t;
-typedef struct qd_c_entity_t  qd_c_entity_t;
-typedef struct qd_c_entity_type_t qd_c_entity_type_t;
-
 /**
  * @defgroup dispatch
  *
@@ -58,58 +54,6 @@ void qd_dispatch_free(qd_dispatch_t *qd)
  */
 qd_error_t qd_dispatch_load_config(qd_dispatch_t *qd, const char *config_path);
 
-/**
- * Configure the AMQP container from a configuration entity.
- *
- * @param dispatch The dispatch handle returned by qd_dispatch
- * @param entity The configuration entity.
- */
-qd_error_t qd_dispatch_configure_container(qd_dispatch_t *qd, qd_entity_t *entity);
-
-/**
- * Configure the router node from a configuration entity.
- *        If this is not called, the router will run in ENDPOINT mode.
- *
- * @param dispatch The dispatch handle returned by qd_dispatch.
- * @param entity The configuration entity.
- */
-qd_error_t qd_dispatch_configure_router(qd_dispatch_t *qd, qd_entity_t *entity);
-
-/**
- * Prepare Dispatch for operation.  This must be called prior to
- *        calling qd_server_run or qd_server_start.
- *
- * @param dispatch The dispatch handle returned by qd_dispatch
- */
-qd_error_t qd_dispatch_prepare(qd_dispatch_t *qd);
-
-/**
- * Configure an address, must be called after qd_dispatch_prepare
- */
-qd_error_t qd_dispatch_configure_address(qd_dispatch_t *qd, qd_entity_t *entity);
-
-/**
- * Configure a waypoint, must be called after qd_dispatch_prepare
- */
-qd_error_t qd_dispatch_configure_waypoint(qd_dispatch_t *qd, qd_entity_t *entity);
-
-/**
- * \brief Configure the logging module from the
- *        parsed configuration file.  This must be called after the
- *        call to qd_dispatch_prepare completes.
- *
- * @param dispatch The dispatch handle returned by qd_dispatch
- */
-qd_error_t qd_dispatch_configure_logging(qd_dispatch_t *qd);
-
-/** Register a managed entity implementation with the management agent.
- * NOTE: impl must be unregistered before it is freed.
- */
-void qd_dispatch_register_entity(qd_dispatch_t *qd, const char *type, void *impl);
-
-/** Unregister a managed entity implementation */
-void qd_dispatch_unregister_entity(qd_dispatch_t *qd, void *impl);
-
 
 /**
  * @}

Modified: qpid/dispatch/trunk/python/qpid_dispatch/management/qdrouter.json
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/python/qpid_dispatch/management/qdrouter.json?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/python/qpid_dispatch/management/qdrouter.json (original)
+++ qpid/dispatch/trunk/python/qpid_dispatch/management/qdrouter.json Fri Dec  5 22:13:44 2014
@@ -260,7 +260,6 @@
                         "ROUTER",
                         "MESSAGE",
                         "SERVER",
-                        "CAGENT",
                         "AGENT",
                         "CONTAINER",
                         "CONFIG",

Modified: qpid/dispatch/trunk/python/qpid_dispatch_internal/dispatch_c.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/python/qpid_dispatch_internal/dispatch_c.py?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/python/qpid_dispatch_internal/dispatch_c.py (original)
+++ qpid/dispatch/trunk/python/qpid_dispatch_internal/dispatch_c.py Fri Dec  5 22:13:44 2014
@@ -70,8 +70,8 @@ class QdDll(ctypes.PyDLL):
 
         self._prototype(self.qd_connection_manager_start, None, [self.qd_dispatch_p])
         self._prototype(self.qd_waypoint_activate_all, None, [self.qd_dispatch_p])
-        self._prototype(self.qd_c_entity_refresh_begin, c_long, [py_object])
-        self._prototype(self.qd_c_entity_refresh_end, None, [])
+        self._prototype(self.qd_entity_refresh_begin, c_long, [py_object])
+        self._prototype(self.qd_entity_refresh_end, None, [])
 
     def _errcheck(self, result, func, args):
         if self.qd_error_code():

Modified: qpid/dispatch/trunk/python/qpid_dispatch_internal/management/agent.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/python/qpid_dispatch_internal/management/agent.py?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/python/qpid_dispatch_internal/management/agent.py (original)
+++ qpid/dispatch/trunk/python/qpid_dispatch_internal/management/agent.py Fri Dec  5 22:13:44 2014
@@ -112,7 +112,7 @@ class AgentEntity(SchemaEntity):
         self.__dict__['_dispatch'] = agent.dispatch
 
     def _set_pointer(self, pointer):
-        fname = "qd_c_entity_refresh_" + self.entity_type.short_name.replace('.', '_')
+        fname = "qd_entity_refresh_" + self.entity_type.short_name.replace('.', '_')
         refreshfn = self._qd.function(fname, c_long, [py_object, c_void_p])
         def _do_refresh():
             refreshfn(self.attributes, pointer)
@@ -330,7 +330,7 @@ class EntityCache(object):
         self.qd.qd_dispatch_router_lock(self.agent.dispatch)
         try:
             events = []
-            self.qd.qd_c_entity_refresh_begin(events)
+            self.qd.qd_entity_refresh_begin(events)
             remove_redundant(events)
             for action, type, pointer in events:
                 if action == REMOVE:
@@ -343,7 +343,7 @@ class EntityCache(object):
             # Refresh the entity values while the lock is still held.
             for e in self.entities: e._refresh()
         finally:
-            self.qd.qd_c_entity_refresh_end()
+            self.qd.qd_entity_refresh_end()
             self.qd.qd_dispatch_router_unlock(self.agent.dispatch)
 
 class Agent(object):

Modified: qpid/dispatch/trunk/src/CMakeLists.txt
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/CMakeLists.txt?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/CMakeLists.txt (original)
+++ qpid/dispatch/trunk/src/CMakeLists.txt Fri Dec  5 22:13:44 2014
@@ -38,7 +38,6 @@ add_custom_command (
 
 # Build the qpid-dispatch library.
 set(qpid_dispatch_SOURCES
-  agent.c
   alloc.c
   amqp.c
   bitmask.c
@@ -49,7 +48,7 @@ set(qpid_dispatch_SOURCES
   container.c
   dispatch.c
   entity.c
-  c_entity.c
+  entity_cache.c
   hash.c
   iovec.c
   iterator.c

Modified: qpid/dispatch/trunk/src/alloc.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/alloc.c?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/alloc.c (original)
+++ qpid/dispatch/trunk/src/alloc.c Fri Dec  5 22:13:44 2014
@@ -21,15 +21,16 @@
 #include <qpid/dispatch/alloc.h>
 #include <qpid/dispatch/ctools.h>
 #include <qpid/dispatch/log.h>
-#include <qpid/dispatch/agent.h>
 #include <memory.h>
 #include <inttypes.h>
 #include <stdio.h>
-#include "entity_private.h"
-#include "c_entity.h"
+#include "entity.h"
+#include "entity_cache.h"
 
 #define QD_MEMORY_DEBUG 1
 
+const char *QD_ALLOCATOR_TYPE = "allocator";
+
 typedef struct qd_alloc_type_t qd_alloc_type_t;
 typedef struct qd_alloc_item_t qd_alloc_item_t;
 
@@ -70,9 +71,6 @@ static void qd_alloc_init(qd_alloc_type_
 {
     sys_mutex_lock(init_lock);
 
-    //qd_log("ALLOC", QD_LOG_TRACE, "Initialized Allocator - type=%s type-size=%d total-size=%d",
-    //       desc->type_name, desc->type_size, desc->total_size);
-
     if (!desc->global_pool) {
         desc->total_size = desc->type_size;
         if (desc->additional_size)
@@ -98,7 +96,7 @@ static void qd_alloc_init(qd_alloc_type_
 
         desc->header  = PATTERN_FRONT;
         desc->trailer = PATTERN_BACK;
-        qd_c_entity_add(QD_ALLOCATOR_TYPE, type_item);
+        qd_entity_cache_add(QD_ALLOCATOR_TYPE, type_item);
     }
 
     sys_mutex_unlock(init_lock);
@@ -288,7 +286,7 @@ void qd_alloc_finalize(void)
     qd_alloc_item_t *item;
     qd_alloc_type_t *type_item = DEQ_HEAD(type_list);
     while (type_item) {
-        qd_c_entity_remove(QD_ALLOCATOR_TYPE, type_item);
+        qd_entity_cache_remove(QD_ALLOCATOR_TYPE, type_item);
         qd_alloc_type_desc_t *desc = type_item->desc;
 
         //
@@ -347,7 +345,7 @@ void qd_alloc_finalize(void)
 }
 
 
-qd_error_t qd_c_entity_refresh_allocator(qd_entity_t* entity, void *impl) {
+qd_error_t qd_entity_refresh_allocator(qd_entity_t* entity, void *impl) {
     qd_alloc_type_t *alloc_type = (qd_alloc_type_t*) impl;
     if ((qd_entity_has(entity, "identity") ||
          qd_entity_set_string(entity, "identity", alloc_type->desc->type_name) == 0) &&
@@ -363,115 +361,3 @@ qd_error_t qd_c_entity_refresh_allocator
         return QD_ERROR_NONE;
     return qd_error_code();
 }
-
-
-static void alloc_attr_name(void *object_handle, void *cor, void *unused)
-{
-    qd_alloc_type_t *alloc_type = (qd_alloc_type_t*) object_handle;
-    qd_agent_value_string(cor, 0, alloc_type->desc->type_name);
-}
-
-
-static void alloc_attr_type_size(void *object_handle, void *cor, void *unused)
-{
-    qd_alloc_type_t *item = (qd_alloc_type_t*) object_handle;
-    qd_agent_value_uint(cor, 0, item->desc->total_size);
-}
-
-
-static void alloc_attr_transfer_batch_size(void *object_handle, void *cor, void *unused)
-{
-    qd_alloc_type_t *item = (qd_alloc_type_t*) object_handle;
-    qd_agent_value_uint(cor, 0, item->desc->config->transfer_batch_size);
-}
-
-
-static void alloc_attr_local_free_list_max(void *object_handle, void *cor, void *unused)
-{
-    qd_alloc_type_t *item = (qd_alloc_type_t*) object_handle;
-    qd_agent_value_uint(cor, 0, item->desc->config->local_free_list_max);
-}
-
-
-static void alloc_attr_global_free_list_max(void *object_handle, void *cor, void *unused)
-{
-    qd_alloc_type_t *item = (qd_alloc_type_t*) object_handle;
-    qd_agent_value_uint(cor, 0, item->desc->config->global_free_list_max);
-}
-
-
-static void alloc_attr_total_alloc_from_heap(void *object_handle, void *cor, void *unused)
-{
-    qd_alloc_type_t *item = (qd_alloc_type_t*) object_handle;
-    qd_agent_value_uint(cor, 0, item->desc->stats->total_alloc_from_heap);
-}
-
-
-static void alloc_attr_total_free_to_heap(void *object_handle, void *cor, void *unused)
-{
-    qd_alloc_type_t *item = (qd_alloc_type_t*) object_handle;
-    qd_agent_value_uint(cor, 0, item->desc->stats->total_free_to_heap);
-}
-
-
-static void alloc_attr_held_by_threads(void *object_handle, void *cor, void *unused)
-{
-    qd_alloc_type_t *item = (qd_alloc_type_t*) object_handle;
-    qd_agent_value_uint(cor, 0, item->desc->stats->held_by_threads);
-}
-
-
-static void alloc_attr_batches_rebalanced_to_threads(void *object_handle, void *cor, void *unused)
-{
-    qd_alloc_type_t *item = (qd_alloc_type_t*) object_handle;
-    qd_agent_value_uint(cor, 0, item->desc->stats->batches_rebalanced_to_threads);
-}
-
-
-static void alloc_attr_batches_rebalanced_to_global(void *object_handle, void *cor, void *unused)
-{
-    qd_alloc_type_t *item = (qd_alloc_type_t*) object_handle;
-    qd_agent_value_uint(cor, 0, item->desc->stats->batches_rebalanced_to_global);
-}
-
-
-static const qd_agent_attribute_t ALLOC_ATTRIBUTES[] =
-    {{"name", alloc_attr_name, 0},
-     {"identity", alloc_attr_name, 0},
-     {"typeSize", alloc_attr_type_size, 0},
-     {"transferBatchSize", alloc_attr_transfer_batch_size, 0},
-     {"localFreeListMax", alloc_attr_local_free_list_max, 0},
-     {"globalFreeListMax", alloc_attr_global_free_list_max, 0},
-     {"totalAllocFromHeap", alloc_attr_total_alloc_from_heap, 0},
-     {"totalFreeToHeap", alloc_attr_total_free_to_heap, 0},
-     {"heldByThreads", alloc_attr_held_by_threads, 0},
-     {"batchesRebalancedToThreads", alloc_attr_batches_rebalanced_to_threads, 0},
-     {"batchesRebalancedToGlobal", alloc_attr_batches_rebalanced_to_global, 0},
-     {0, 0, 0}};
-
-
-static void alloc_query_handler(void* context, void *cor)
-{
-    qd_alloc_type_t *item = DEQ_HEAD(type_list);
-
-    while (item) {
-        if (!qd_agent_object(cor, (void*) item))
-            break;
-        item = DEQ_NEXT(item);
-    }
-}
-
-
-void qd_alloc_setup_agent(qd_dispatch_t *qd)
-{
-    qd_agent_register_class(qd, QD_ALLOCATOR_TYPE_LONG, 0, ALLOC_ATTRIBUTES, alloc_query_handler);
-}
-
-
-// Entity add/remove event cache.
-
-
-struct event {
-    const char *type;           /* Set for an add event, NULL for a remove event */
-    void *pointer;
-};

Modified: qpid/dispatch/trunk/src/alloc_private.h
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/alloc_private.h?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/alloc_private.h (original)
+++ qpid/dispatch/trunk/src/alloc_private.h Fri Dec  5 22:13:44 2014
@@ -24,6 +24,5 @@
 
 void qd_alloc_initialize(void);
 void qd_alloc_finalize(void);
-void qd_alloc_setup_agent(qd_dispatch_t *qd);
 
 #endif

Modified: qpid/dispatch/trunk/src/connection_manager.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/connection_manager.c?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/connection_manager.c (original)
+++ qpid/dispatch/trunk/src/connection_manager.c Fri Dec  5 22:13:44 2014
@@ -19,11 +19,10 @@
 
 #include <qpid/dispatch/connection_manager.h>
 #include <qpid/dispatch/ctools.h>
-#include <qpid/dispatch/agent.h>
 #include "dispatch_private.h"
 #include "server_private.h"
-#include "entity_private.h"
-#include "c_entity.h"
+#include "entity.h"
+#include "entity_cache.h"
 #include "schema_enum.h"
 #include <string.h>
 
@@ -91,11 +90,11 @@ static qd_error_t load_server_config(qd_
 {
     qd_error_clear();
     memset(config, 0, sizeof(*config));
-    config->host           = qd_entity_string(entity, "addr"); CHECK();
-    config->port           = qd_entity_string(entity, "port"); CHECK();
-    config->role           = qd_entity_string(entity, "role"); CHECK();
-    config->max_frame_size = qd_entity_long(entity, "maxFrameSize"); CHECK();
-    config->sasl_mechanisms = qd_entity_string(entity, "saslMechanisms"); CHECK();
+    config->host           = qd_entity_get_string(entity, "addr"); CHECK();
+    config->port           = qd_entity_get_string(entity, "port"); CHECK();
+    config->role           = qd_entity_get_string(entity, "role"); CHECK();
+    config->max_frame_size = qd_entity_get_long(entity, "maxFrameSize"); CHECK();
+    config->sasl_mechanisms = qd_entity_get_string(entity, "saslMechanisms"); CHECK();
     config->ssl_enabled = has_attrs(entity, ssl_attributes, ssl_attributes_count);
     config->allow_no_sasl =
         qd_entity_opt_bool(entity, "allowNoSasl", false); CHECK();
@@ -146,7 +145,7 @@ qd_error_t qd_dispatch_configure_connect
         return qd_error_code();
     DEQ_ITEM_INIT(cc);
     if (strcmp(cc->configuration.role, "on-demand") == 0) {
-        cc->connector_name = qd_entity_string(entity, "name"); QD_ERROR_RET();
+        cc->connector_name = qd_entity_get_string(entity, "name"); QD_ERROR_RET();
         DEQ_INSERT_TAIL(cm->on_demand_connectors, cc);
         qd_log(cm->log_source, QD_LOG_INFO, "Configured on-demand connector: %s:%s name=%s",
                cc->configuration.host, cc->configuration.port, cc->connector_name);
@@ -252,124 +251,6 @@ void qd_connection_manager_stop_on_deman
 {
 }
 
-static void cm_attr_name(void *object_handle, void *cor, void *unused)
-{
-    qd_connection_t *conn = (qd_connection_t*) object_handle;
-    qd_agent_value_string(cor, 0, qdpn_connector_name(conn->pn_cxtr));
-}
-
-
-static void cm_attr_state(void *object_handle, void *cor, void *unused)
-{
-    qd_connection_t *conn = (qd_connection_t*) object_handle;
-    switch (conn->state) {
-    case CONN_STATE_CONNECTING:  qd_agent_value_string(cor, 0, "Connecting");  break;
-    case CONN_STATE_OPENING:     qd_agent_value_string(cor, 0, "Opening");     break;
-    case CONN_STATE_OPERATIONAL: qd_agent_value_string(cor, 0, "Operational"); break;
-    case CONN_STATE_FAILED:      qd_agent_value_string(cor, 0, "Failed");      break;
-    case CONN_STATE_USER:        qd_agent_value_string(cor, 0, "User");        break;
-    default:                     qd_agent_value_string(cor, 0, "undefined");   break;
-    }
-}
-
-
-static void cm_attr_container(void *object_handle, void *cor, void *unused)
-{
-    qd_connection_t *conn = (qd_connection_t*) object_handle;
-    // get remote container name using proton connection
-    const char *container_name = pn_connection_remote_container(conn->pn_conn);
-    if (container_name)
-        qd_agent_value_string(cor, 0, container_name);
-    else
-        qd_agent_value_null(cor, 0);
-}
-
-
-static void cm_attr_host(void *object_handle, void *cor, void *unused)
-{
-    qd_connection_t *conn = (qd_connection_t*) object_handle;
-    const qd_server_config_t *config;
-    if (conn->connector)
-        config = conn->connector->config;
-    else
-        config = conn->listener->config;
-    if (conn->connector) {
-        char host[1000];
-        strcpy(host, config->host);
-        strcat(host, ":");
-        strcat(host, config->port);
-        qd_agent_value_string(cor, 0, host);
-    } else
-        qd_agent_value_string(cor, 0, qdpn_connector_name(conn->pn_cxtr));
-}
-
-
-static void cm_attr_sasl(void *object_handle, void *cor, void *unused)
-{
-    qd_connection_t *conn = (qd_connection_t*) object_handle;
-    const qd_server_config_t *config;
-    if (conn->connector)
-        config = conn->connector->config;
-    else
-        config = conn->listener->config;
-    qd_agent_value_string(cor, 0, config->sasl_mechanisms);
-}
-
-
-static void cm_attr_role(void *object_handle, void *cor, void *unused)
-{
-    qd_connection_t *conn = (qd_connection_t*) object_handle;
-    const qd_server_config_t *config;
-    if (conn->connector)
-        config = conn->connector->config;
-    else
-        config = conn->listener->config;
-    qd_agent_value_string(cor, 0, config->role);
-}
-
-
-static void cm_attr_dir(void *object_handle, void *cor, void *unused)
-{
-    qd_connection_t *conn = (qd_connection_t*) object_handle;
-    if (conn->connector)
-        qd_agent_value_string(cor, 0, "out");
-    else
-        qd_agent_value_string(cor, 0, "in");
-}
-
-
-static const qd_agent_attribute_t CONN_ATTRIBUTES[] =
-    {{"name", cm_attr_name, 0},
-     {"identity", cm_attr_name, 0},
-     {"state", cm_attr_state, 0},
-     {"container", cm_attr_container, 0},
-     {"host", cm_attr_host, 0},
-     {"sasl", cm_attr_sasl, 0},
-     {"role", cm_attr_role, 0},
-     {"dir", cm_attr_dir, 0},
-     {0, 0, 0}};
-
-static void server_query_handler(void* context, void *cor)
-{
-    qd_dispatch_t *qd        = (qd_dispatch_t*) context;
-    qd_server_t   *qd_server = qd->server;
-    sys_mutex_lock(qd_server->lock);
-
-    qd_connection_t *conn = DEQ_HEAD(qd_server->connections);
-    while (conn) {
-        if (!qd_agent_object(cor, (void*) conn))
-            break;
-        conn = DEQ_NEXT(conn);
-    }
-    sys_mutex_unlock(qd_server->lock);
-}
-
-void qd_connection_manager_setup_agent(qd_dispatch_t *qd)
-{
-    qd_agent_register_class(qd, QD_CONNECTION_TYPE_LONG, qd, CONN_ATTRIBUTES, server_query_handler);
-}
-
-
 void *qd_config_connector_context(qd_config_connector_t *cc)
 {
     return cc ? cc->context : 0;

Modified: qpid/dispatch/trunk/src/container.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/container.c?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/container.c (original)
+++ qpid/dispatch/trunk/src/container.c Fri Dec  5 22:13:44 2014
@@ -32,7 +32,6 @@
 #include <qpid/dispatch/threading.h>
 #include <qpid/dispatch/iterator.h>
 #include <qpid/dispatch/log.h>
-#include <qpid/dispatch/agent.h>
 #include "conditionals.h"
 
 /** Instance of a node type in a container */
@@ -466,11 +465,6 @@ qd_container_t *qd_container(qd_dispatch
 }
 
 
-void qd_container_setup_agent(qd_dispatch_t *qd)
-{
-}
-
-
 void qd_container_free(qd_container_t *container)
 {
     if (!container) return;

Modified: qpid/dispatch/trunk/src/dispatch.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/dispatch.c?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/dispatch.c (original)
+++ qpid/dispatch/trunk/src/dispatch.c Fri Dec  5 22:13:44 2014
@@ -30,23 +30,19 @@
 #include "router_private.h"
 #include "waypoint_private.h"
 #include "message_private.h"
-#include "entity_private.h"
-#include "c_entity.h"
+#include "entity.h"
+#include "entity_cache.h"
 
 /**
  * Private Function Prototypes
  */
 qd_server_t    *qd_server(qd_dispatch_t *qd, int tc, const char *container_name);
-void            qd_connection_manager_setup_agent(qd_dispatch_t *qd);
 void            qd_server_free(qd_server_t *server);
 qd_container_t *qd_container(qd_dispatch_t *qd);
-void            qd_container_setup_agent(qd_dispatch_t *qd);
 void            qd_container_free(qd_container_t *container);
 qd_router_t    *qd_router(qd_dispatch_t *qd, qd_router_mode_t mode, const char *area, const char *id);
 void            qd_router_setup_late(qd_dispatch_t *qd);
 void            qd_router_free(qd_router_t *router);
-qd_agent_t     *qd_agent(qd_dispatch_t *qd);
-void            qd_agent_free(qd_agent_t *agent);
 void            qd_error_initialize();
 
 qd_dispatch_t *qd_dispatch(const char *python_pkgdir)
@@ -54,7 +50,7 @@ qd_dispatch_t *qd_dispatch(const char *p
     qd_dispatch_t *qd = NEW(qd_dispatch_t);
     memset(qd, 0, sizeof(qd_dispatch_t));
 
-    qd_c_entity_initialize();   /* Must be first */
+    qd_entity_cache_initialize();   /* Must be first */
     qd_alloc_initialize();
     qd_log_initialize();
     qd_error_initialize();
@@ -106,7 +102,7 @@ qd_error_t qd_dispatch_configure_router(
     free(qd->router_id);
     qd->router_id   = qd_entity_opt_string(entity, "routerId", qd->container_name);
     QD_ERROR_RET();
-    qd->router_mode = qd_entity_long(entity, "mode");
+    qd->router_mode = qd_entity_get_long(entity, "mode");
     return qd_error_code();
 }
 
@@ -127,19 +123,15 @@ qd_error_t qd_dispatch_prepare(qd_dispat
     qd->server             = qd_server(qd, qd->thread_count, qd->container_name);
     qd->container          = qd_container(qd);
     qd->router             = qd_router(qd, qd->router_mode, qd->router_area, qd->router_id);
-    qd->agent              = qd_agent(qd);
     qd->connection_manager = qd_connection_manager(qd);
-
-    qd_alloc_setup_agent(qd);
-    qd_connection_manager_setup_agent(qd);
-    qd_container_setup_agent(qd);
     return qd_error_code();
 }
 
+/* FIXME aconway 2014-12-05: cleanup */
 void qd_dispatch_set_agent(qd_dispatch_t *qd, void *agent) {
     assert(agent);
-    assert(!qd->py_agent);
-    qd->py_agent = agent;
+    assert(!qd->agent);
+    qd->agent = agent;
 }
 
 void qd_dispatch_free(qd_dispatch_t *qd)
@@ -149,8 +141,7 @@ void qd_dispatch_free(qd_dispatch_t *qd)
     free(qd->container_name);
     free(qd->router_area);
     qd_connection_manager_free(qd->connection_manager);
-    qd_agent_free(qd->agent);
-    Py_XDECREF((PyObject*) qd->py_agent);
+    Py_XDECREF((PyObject*) qd->agent);
     qd_router_free(qd->router);
     qd_container_free(qd->container);
     qd_server_free(qd->server);

Modified: qpid/dispatch/trunk/src/dispatch_private.h
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/dispatch_private.h?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/dispatch_private.h (original)
+++ qpid/dispatch/trunk/src/dispatch_private.h Fri Dec  5 22:13:44 2014
@@ -26,7 +26,6 @@
 typedef struct qd_server_t          qd_server_t;
 typedef struct qd_container_t       qd_container_t;
 typedef struct qd_router_t          qd_router_t;
-typedef struct qd_agent_t           qd_agent_t;
 typedef struct qd_waypoint_t        qd_waypoint_t;
 typedef struct qd_router_link_t     qd_router_link_t;
 typedef struct qd_router_node_t     qd_router_node_t;
@@ -46,8 +45,7 @@ struct qd_dispatch_t {
     qd_server_t             *server;
     qd_container_t          *container;
     qd_router_t             *router;
-    qd_agent_t              *agent;
-    void                    *py_agent;
+    void                    *agent;
     qd_connection_manager_t *connection_manager;
 
     int    thread_count;
@@ -59,6 +57,59 @@ struct qd_dispatch_t {
     qd_log_source_t *log_source;
 };
 
+/**
+ * Configure the AMQP container from a configuration entity.
+ *
+ * @param dispatch The dispatch handle returned by qd_dispatch
+ * @param entity The configuration entity.
+ */
+qd_error_t qd_dispatch_configure_container(qd_dispatch_t *qd, qd_entity_t *entity);
+
+/**
+ * Configure the router node from a configuration entity.
+ *        If this is not called, the router will run in ENDPOINT mode.
+ *
+ * @param dispatch The dispatch handle returned by qd_dispatch.
+ * @param entity The configuration entity.
+ */
+qd_error_t qd_dispatch_configure_router(qd_dispatch_t *qd, qd_entity_t *entity);
+
+/**
+ * Prepare Dispatch for operation.  This must be called prior to
+ *        calling qd_server_run or qd_server_start.
+ *
+ * @param dispatch The dispatch handle returned by qd_dispatch
+ */
+qd_error_t qd_dispatch_prepare(qd_dispatch_t *qd);
+
+/**
+ * Configure an address, must be called after qd_dispatch_prepare
+ */
+qd_error_t qd_dispatch_configure_address(qd_dispatch_t *qd, qd_entity_t *entity);
+
+/**
+ * Configure a waypoint, must be called after qd_dispatch_prepare
+ */
+qd_error_t qd_dispatch_configure_waypoint(qd_dispatch_t *qd, qd_entity_t *entity);
+
+/**
+ * \brief Configure the logging module from the
+ *        parsed configuration file.  This must be called after the
+ *        call to qd_dispatch_prepare completes.
+ *
+ * @param dispatch The dispatch handle returned by qd_dispatch
+ */
+qd_error_t qd_dispatch_configure_logging(qd_dispatch_t *qd);
+
+/** Register a managed entity implementation with the management agent.
+ * NOTE: impl must be unregistered before it is freed.
+ */
+void qd_dispatch_register_entity(qd_dispatch_t *qd, const char *type, void *impl);
+
+/** Unregister a managed entity implementation */
+void qd_dispatch_unregister_entity(qd_dispatch_t *qd, void *impl);
+
+/** Set the agent */
 void qd_dispatch_set_agent(qd_dispatch_t *qd, void *agent);
 
 #endif

Modified: qpid/dispatch/trunk/src/entity.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/entity.c?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/entity.c (original)
+++ qpid/dispatch/trunk/src/entity.c Fri Dec  5 22:13:44 2014
@@ -21,16 +21,12 @@
 #include <Python.h>
 #include <qpid/dispatch/error.h>
 #include "dispatch_private.h"
-#include "entity_private.h"
+#include "entity.h"
 
 struct qd_entity_t {
-    PyObject py_object;
+    PyObject py_object;      /* Any object supporting __set/get_item__, e.g. dict. */
 };
 
-void qd_entity_free(qd_entity_t* entity) {
-    Py_XDECREF(entity);
-}
-
 static PyObject* qd_entity_get_py(qd_entity_t* entity, const char* attribute) {
     PyObject *py_key = PyString_FromString(attribute);
     if (!py_key) return NULL;   /* Don't set qd_error, caller will set if needed. */
@@ -46,7 +42,7 @@ bool qd_entity_has(qd_entity_t* entity,
     return value;
 }
 
-char *qd_entity_string(qd_entity_t *entity, const char* attribute) {
+char *qd_entity_get_string(qd_entity_t *entity, const char* attribute) {
     qd_error_clear();
     PyObject *py_obj = qd_entity_get_py(entity, attribute);
     PyObject *py_str = py_obj ? PyObject_Str(py_obj) : NULL;
@@ -58,7 +54,7 @@ char *qd_entity_string(qd_entity_t *enti
     return str;
 }
 
-long qd_entity_long(qd_entity_t *entity, const char* attribute) {
+long qd_entity_get_long(qd_entity_t *entity, const char* attribute) {
     qd_error_clear();
     PyObject *py_obj = qd_entity_get_py(entity, attribute);
     long result = py_obj ? PyInt_AsLong(py_obj) : -1;
@@ -67,7 +63,7 @@ long qd_entity_long(qd_entity_t *entity,
     return result;
 }
 
-bool qd_entity_bool(qd_entity_t *entity, const char* attribute) {
+bool qd_entity_get_bool(qd_entity_t *entity, const char* attribute) {
     qd_error_clear();
     PyObject *py_obj = qd_entity_get_py(entity, attribute);
     bool result = py_obj ? PyObject_IsTrue(py_obj) : false;
@@ -80,14 +76,14 @@ bool qd_entity_bool(qd_entity_t *entity,
 char *qd_entity_opt_string(qd_entity_t *entity, const char* attribute, const char* default_value)
 {
     if (qd_entity_has(entity, attribute))
-        return qd_entity_string(entity, attribute);
+        return qd_entity_get_string(entity, attribute);
     else
         return default_value ? strdup(default_value) : NULL;
 }
 
 long qd_entity_opt_long(qd_entity_t *entity, const char* attribute, long default_value) {
     if (qd_entity_has(entity, attribute)) {
-        long result = qd_entity_long(entity, attribute);
+        long result = qd_entity_get_long(entity, attribute);
         if (!qd_error_code())
             return result;
     }
@@ -96,7 +92,7 @@ long qd_entity_opt_long(qd_entity_t *ent
 
 bool qd_entity_opt_bool(qd_entity_t *entity, const char* attribute, bool default_value) {
     if (qd_entity_has(entity, attribute)) {
-        bool result = qd_entity_bool(entity, attribute);
+        bool result = qd_entity_get_bool(entity, attribute);
         if (!qd_error_code())
             return result;
     }

Copied: qpid/dispatch/trunk/src/entity.h (from r1643444, qpid/dispatch/trunk/src/entity_private.h)
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/entity.h?p2=qpid/dispatch/trunk/src/entity.h&p1=qpid/dispatch/trunk/src/entity_private.h&r1=1643444&r2=1643449&rev=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/entity_private.h (original)
+++ qpid/dispatch/trunk/src/entity.h Fri Dec  5 22:13:44 2014
@@ -1,5 +1,5 @@
-#ifndef ENTITY_PRIVATE_H
-#define ENTITY_PRIVATE_H 1
+#ifndef ENTITY_H
+#define ENTITY_H 1
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -20,17 +20,18 @@
  */
 
 #include <stdbool.h>
-#include <qpid/dispatch/dispatch.h>
+#include <qpid/dispatch/error.h>
 
 /**
- * @defgroup entity
-xo *
- * Holds attributes of a managed entity.
+ * @defgroup entity-attributes
+ *
+ * Set/get cached attributes of a managed entity.
+ *
  * @{
  */
 
-
-void qd_entity_free(qd_entity_t* entity);
+/** A managed entitie's attributes */
+typedef struct qd_entity_t qd_entity_t;
 
 /** True if the entity has this attribute. */
 bool qd_entity_has(qd_entity_t* entity, const char *attribute);
@@ -39,13 +40,13 @@ bool qd_entity_has(qd_entity_t* entity,
  * @return New string value, caller must free.
  * Return NULL and set qd_error if there is an error.
  **/
-char *qd_entity_string(qd_entity_t *entity, const char* attribute);
+char *qd_entity_get_string(qd_entity_t *entity, const char* attribute);
 
 /** Get an integer valued attribute. Return -1 and set qd_error if there is an error. */
-long qd_entity_long(qd_entity_t *entity, const char* attribute);
+long qd_entity_get_long(qd_entity_t *entity, const char* attribute);
 
 /** Get a boolean valued attribute. Return false and set qd_error if there is an error. */
-bool qd_entity_bool(qd_entity_t *entity, const char *attribute);
+bool qd_entity_get_bool(qd_entity_t *entity, const char *attribute);
 
 
 /** Get a string valued attribute.

Copied: qpid/dispatch/trunk/src/entity_cache.c (from r1643444, qpid/dispatch/trunk/src/c_entity.c)
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/entity_cache.c?p2=qpid/dispatch/trunk/src/entity_cache.c&p1=qpid/dispatch/trunk/src/c_entity.c&r1=1643444&r2=1643449&rev=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/c_entity.c (original)
+++ qpid/dispatch/trunk/src/entity_cache.c Fri Dec  5 22:13:44 2014
@@ -21,8 +21,8 @@
 #include <qpid/dispatch/threading.h>
 #include <qpid/dispatch/ctools.h>
 #include <structmember.h>
-#include "c_entity.h"
-#include "entity_private.h"
+#include "entity_cache.h"
+#include "entity.h"
 #include "dispatch_private.h"
 #include "router_private.h"
 
@@ -53,29 +53,29 @@ static entity_event_t *entity_event(acti
 static sys_mutex_t *event_lock = 0;
 static entity_event_list_t  event_list;
 
-void qd_c_entity_initialize(void) {
+void qd_entity_cache_initialize(void) {
     event_lock = sys_mutex();
     DEQ_INIT(event_list);
 }
 
 static void push_event(action_t action, const char *type, void *object) {
-    if (!event_lock) return;    /* Unit tests don't call qd_c_entity_initialize */
+    if (!event_lock) return;    /* Unit tests don't call qd_entity_cache_initialize */
     sys_mutex_lock(event_lock);
     entity_event_t *event = entity_event(action, type, object);
     DEQ_INSERT_TAIL(event_list, event);
     sys_mutex_unlock(event_lock);
 }
 
-void qd_c_entity_add(const char *type, void *object) { push_event(ADD, type, object); }
+void qd_entity_cache_add(const char *type, void *object) { push_event(ADD, type, object); }
 
-void qd_c_entity_remove(const char *type, void *object) { push_event(REMOVE, type, object); }
+void qd_entity_cache_remove(const char *type, void *object) { push_event(REMOVE, type, object); }
 
 // Get events in the add/remove cache into a python list of (action, type, pointer)
 // Locks the entity cache so entities can be updated safely (prevent entities from being deleted.)
 // Do not processs any entities if return error code != 0
-// Must call qd_c_entity_refresh_end when done, regardless of error code.
-qd_error_t qd_c_entity_refresh_begin(PyObject *list) {
-    if (!event_lock) return QD_ERROR_NONE;    /* Unit tests don't call qd_c_entity_initialize */
+// Must call qd_entity_refresh_end when done, regardless of error code.
+qd_error_t qd_entity_refresh_begin(PyObject *list) {
+    if (!event_lock) return QD_ERROR_NONE;    /* Unit tests don't call qd_entity_cache_initialize */
     qd_error_clear();
     sys_mutex_lock(event_lock);
     entity_event_t *event = DEQ_HEAD(event_list);
@@ -92,20 +92,6 @@ qd_error_t qd_c_entity_refresh_begin(PyO
     return qd_error_code();
 }
 
-void qd_c_entity_refresh_end() {
+void qd_entity_refresh_end() {
     sys_mutex_unlock(event_lock);
 }
-
-const char *QD_ALLOCATOR_TYPE = "allocator";
-const char *QD_CONNECTION_TYPE = "connection";
-const char *QD_ROUTER_TYPE = "router";
-const char *QD_ROUTER_NODE_TYPE = "router.node";
-const char *QD_ROUTER_ADDRESS_TYPE = "router.address";
-const char *QD_ROUTER_LINK_TYPE = "router.link";
-
-const char *QD_ALLOCATOR_TYPE_LONG = "org.apache.qpid.dispatch.allocator";
-const char *QD_CONNECTION_TYPE_LONG = "org.apache.qpid.dispatch.connection";
-const char *QD_ROUTER_TYPE_LONG = "org.apache.qpid.dispatch.router";
-const char *QD_ROUTER_NODE_TYPE_LONG = "org.apache.qpid.dispatch.router.node";
-const char *QD_ROUTER_ADDRESS_TYPE_LONG = "org.apache.qpid.dispatch.router.address";
-const char *QD_ROUTER_LINK_TYPE_LONG = "org.apache.qpid.dispatch.router.link";

Copied: qpid/dispatch/trunk/src/entity_cache.h (from r1643444, qpid/dispatch/trunk/src/alloc_private.h)
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/entity_cache.h?p2=qpid/dispatch/trunk/src/entity_cache.h&p1=qpid/dispatch/trunk/src/alloc_private.h&r1=1643444&r2=1643449&rev=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/alloc_private.h (original)
+++ qpid/dispatch/trunk/src/entity_cache.h Fri Dec  5 22:13:44 2014
@@ -1,5 +1,5 @@
-#ifndef __dispatch_alloc_private_h__
-#define __dispatch_alloc_private_h__ 1
+#ifndef ENTITY_CACHE_H
+#define ENTITY_CACHE_H 1
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -19,11 +19,25 @@
  * under the License.
  */
 
-#include <qpid/dispatch/alloc.h>
-#include <qpid/dispatch/dispatch.h>
+/** @file
+ *
+ * Add/remove runtime operational entities from the cache managed by the Python agent.
+ *
+ * New entities should be registered with qd_entity_cache_add, entities
+ * that are due for deletion should be removed with qd_entity_cache_remove
+ * *before* they are deleted.
+ *
+ * The cache is pure C, entites can be added to it before the python agent has
+ * started.
+ */
+
+/** Initialize the module. */
+void qd_entity_cache_initialize(void);
+
+/** Add an entity to the agent cache. */
+void qd_entity_cache_add(const char *type, void *object);
 
-void qd_alloc_initialize(void);
-void qd_alloc_finalize(void);
-void qd_alloc_setup_agent(qd_dispatch_t *qd);
+/** Remove an entity from the agent cache. Must be called before object is deleted. */
+void qd_entity_cache_remove(const char *type, void *object);
 
 #endif

Modified: qpid/dispatch/trunk/src/log.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/log.c?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/log.c (original)
+++ qpid/dispatch/trunk/src/log.c Fri Dec  5 22:13:44 2014
@@ -18,7 +18,7 @@
  */
 
 #include "log_private.h"
-#include "entity_private.h"
+#include "entity.h"
 #include "aprintf.h"
 #include <qpid/dispatch/ctools.h>
 #include <qpid/dispatch/dispatch.h>
@@ -351,7 +351,7 @@ void qd_log_finalize(void) {
 qd_error_t qd_log_entity(qd_entity_t *entity) {
 
     qd_error_clear();
-    char* module = qd_entity_string(entity, "module"); QD_ERROR_RET();
+    char* module = qd_entity_get_string(entity, "module"); QD_ERROR_RET();
     sys_mutex_lock(log_source_lock);
     qd_log_source_t *src = qd_log_source_lh(module);
     assert(src);
@@ -359,21 +359,21 @@ qd_error_t qd_log_entity(qd_entity_t *en
     sys_mutex_unlock(log_source_lock);
     free(module);
 
-    char *level = qd_entity_string(entity, "level"); QD_ERROR_RET();
+    char *level = qd_entity_get_string(entity, "level"); QD_ERROR_RET();
     copy.mask = level_for_name(level)->mask;
     free(level);
 
     if (qd_entity_has(entity, "timestamp"))
-        copy.timestamp = qd_entity_bool(entity, "timestamp");
+        copy.timestamp = qd_entity_get_bool(entity, "timestamp");
     QD_ERROR_RET();
 
     if (qd_entity_has(entity, "source"))
-        copy.source = qd_entity_bool(entity, "source");
+        copy.source = qd_entity_get_bool(entity, "source");
     QD_ERROR_RET();
 
     if (qd_entity_has(entity, "output")) {
         log_sink_free_lh(copy.sink); /* DEFAULT source may already have a sink */
-        char* output = qd_entity_string(entity, "output"); QD_ERROR_RET();
+        char* output = qd_entity_get_string(entity, "output"); QD_ERROR_RET();
         copy.sink = log_sink_lh(output);
         free(output);
         if (copy.sink->syslog) /* Timestamp off for syslog. */

Modified: qpid/dispatch/trunk/src/python_embedded.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/python_embedded.c?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/python_embedded.c (original)
+++ qpid/dispatch/trunk/src/python_embedded.c Fri Dec  5 22:13:44 2014
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-#include "c_entity.h"
+#include "entity_cache.h"
 #include <qpid/dispatch/python_embedded.h>
 #include <qpid/dispatch/threading.h>
 #include <qpid/dispatch/log.h>

Modified: qpid/dispatch/trunk/src/router_agent.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/router_agent.c?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/router_agent.c (original)
+++ qpid/dispatch/trunk/src/router_agent.c Fri Dec  5 22:13:44 2014
@@ -23,10 +23,12 @@
 #include <stdbool.h>
 #include <stdlib.h>
 #include <qpid/dispatch.h>
-#include <qpid/dispatch/agent.h>
 #include "dispatch_private.h"
 #include "router_private.h"
-#include "c_entity.h"
+#include "entity_cache.h"
+
+
+const char *QD_ROUTER_TYPE = "router";
 
 static const char *qd_router_mode_names[] = {
     "standalone",
@@ -36,7 +38,7 @@ static const char *qd_router_mode_names[
 };
 ENUM_DEFINE(qd_router_mode, qd_router_mode_names);
 
-qd_error_t qd_c_entity_refresh_router(qd_entity_t* entity, void *impl) {
+qd_error_t qd_entity_refresh_router(qd_entity_t* entity, void *impl) {
     qd_dispatch_t *qd = (qd_dispatch_t*) impl;
     qd_router_t *router = qd->router;
     if (qd_entity_set_stringf(entity, "name", "%s:%s", QD_ROUTER_TYPE, router->router_id) == 0 &&
@@ -57,7 +59,7 @@ static const char *address_text(qd_addre
     return addr ? (const char*) qd_hash_key_by_handle(addr->hash_handle) : 0;
 }
 
-qd_error_t qd_c_entity_refresh_router_address(qd_entity_t* entity, void *impl) {
+qd_error_t qd_entity_refresh_router_address(qd_entity_t* entity, void *impl) {
     qd_address_t *addr = (qd_address_t*) impl;
     if ((qd_entity_has(entity, "identity") ||
          qd_entity_set_string(entity, "identity", address_text(addr)) == 0) &&
@@ -76,7 +78,7 @@ qd_error_t qd_c_entity_refresh_router_ad
 
 #define CHECK(err) if (err != 0) return qd_error_code()
 
-qd_error_t qd_c_entity_refresh_router_node(qd_entity_t* entity, void *impl) {
+qd_error_t qd_entity_refresh_router_node(qd_entity_t* entity, void *impl) {
     qd_router_node_t *rnode = (qd_router_node_t*) impl;
 
     if (!qd_entity_has(entity, "identity")) {
@@ -96,153 +98,6 @@ qd_error_t qd_c_entity_refresh_router_no
     return QD_ERROR_NONE;
 }
 
-static void router_attr_name(void *object_handle, void *cor, void *unused)
-{
-    qd_router_t *router = (qd_router_t*) object_handle;
-    qd_agent_value_string(cor, 0, router->router_id);
-}
-
-
-static void router_attr_area(void *object_handle, void *cor, void *unused)
-{
-    qd_router_t *router = (qd_router_t*) object_handle;
-    qd_agent_value_string(cor, 0, router->router_area);
-}
-
-
-static void router_attr_mode(void *object_handle, void *cor, void *unused)
-{
-    qd_router_t *router = (qd_router_t*) object_handle;
-    switch (router->router_mode) {
-    case QD_ROUTER_MODE_STANDALONE:  qd_agent_value_string(cor, 0, "Standalone");  break;
-    case QD_ROUTER_MODE_INTERIOR:    qd_agent_value_string(cor, 0, "Interior");    break;
-    case QD_ROUTER_MODE_EDGE:        qd_agent_value_string(cor, 0, "Edge");        break;
-    case QD_ROUTER_MODE_ENDPOINT:    qd_agent_value_string(cor, 0, "Endpoint");    break;
-    }
-}
-
-
-static void router_attr_addrCount(void *object_handle, void *cor, void *unused)
-{
-    qd_router_t *router = (qd_router_t*) object_handle;
-    qd_agent_value_uint(cor, 0, DEQ_SIZE(router->addrs));
-}
-
-
-static void router_attr_linkCount(void *object_handle, void *cor, void *unused)
-{
-    qd_router_t *router = (qd_router_t*) object_handle;
-    qd_agent_value_uint(cor, 0, DEQ_SIZE(router->links));
-}
-
-
-static void router_attr_nodeCount(void *object_handle, void *cor, void *unused)
-{
-    qd_router_t *router = (qd_router_t*) object_handle;
-    qd_agent_value_uint(cor, 0, DEQ_SIZE(router->routers));
-}
-
-
-static const qd_agent_attribute_t ROUTER_ATTRIBUTES[] =
-    {{"name", router_attr_name, 0},
-     {"identity", router_attr_name, 0},
-     {"area", router_attr_area, 0},
-     {"mode", router_attr_mode, 0},
-     {"addrCount", router_attr_addrCount, 0},
-     {"linkCount", router_attr_linkCount, 0},
-     {"nodeCount", router_attr_nodeCount, 0},
-     {0, 0, 0}};
-
-
-static void qd_router_query_router(void *context, void *cor)
-{
-    qd_router_t *router = (qd_router_t*) context;
-
-    sys_mutex_lock(router->lock);
-    qd_agent_object(cor, (void*) router);
-    sys_mutex_unlock(router->lock);
-}
-
-static void link_attr_name(void *object_handle, void *cor, void *unused)
-{
-    qd_router_link_t *link = (qd_router_link_t*) object_handle;
-    qd_agent_value_uint(cor, 0, link->mask_bit);
-}
-
-
-static void link_attr_linkType(void *object_handle, void *cor, void *unused)
-{
-    qd_router_link_t *link = (qd_router_link_t*) object_handle;
-    switch (link->link_type) {
-    case QD_LINK_ENDPOINT: qd_agent_value_string(cor, 0, "endpoint");     break;
-    case QD_LINK_WAYPOINT: qd_agent_value_string(cor, 0, "waypoint");     break;
-    case QD_LINK_ROUTER:   qd_agent_value_string(cor, 0, "inter-router"); break;
-    case QD_LINK_AREA:     qd_agent_value_string(cor, 0, "inter-area");   break;
-    }
-}
-
-
-static void link_attr_linkDir(void *object_handle, void *cor, void *unused)
-{
-    qd_router_link_t *link = (qd_router_link_t*) object_handle;
-    if (link->link_direction == QD_INCOMING)
-        qd_agent_value_string(cor, 0, "in");
-    else
-        qd_agent_value_string(cor, 0, "out");
-}
-
-
-static void link_attr_owningAddr(void *object_handle, void *cor, void *unused)
-{
-    qd_router_link_t *link = (qd_router_link_t*) object_handle;
-    const char *text = address_text(link->owning_addr);
-    if (text)
-        qd_agent_value_string(cor, 0, text);
-    else
-        qd_agent_value_null(cor, 0);
-}
-
-
-static void link_attr_eventFifoDepth(void *object_handle, void *cor, void *unused)
-{
-    qd_router_link_t *link = (qd_router_link_t*) object_handle;
-    qd_agent_value_uint(cor, 0, DEQ_SIZE(link->event_fifo));
-}
-
-
-static void link_attr_msgFifoDepth(void *object_handle, void *cor, void *unused)
-{
-    qd_router_link_t *link = (qd_router_link_t*) object_handle;
-    qd_agent_value_uint(cor, 0, DEQ_SIZE(link->msg_fifo));
-}
-
-
-static const qd_agent_attribute_t LINK_ATTRIBUTES[] =
-    {{"name", link_attr_name, 0},
-     {"identity", link_attr_name, 0},
-     {"linkType", link_attr_linkType, 0},
-     {"linkDir", link_attr_linkDir, 0},
-     {"owningAddr", link_attr_owningAddr, 0},
-     {"eventFifoDepth", link_attr_eventFifoDepth, 0},
-     {"msgFifoDepth", link_attr_msgFifoDepth, 0},
-     {0, 0, 0}};
-
-
-static void qd_router_query_link(void *context, void *cor)
-{
-    qd_router_t *router = (qd_router_t*) context;
-
-    sys_mutex_lock(router->lock);
-    qd_router_link_t *link = DEQ_HEAD(router->links);
-
-    while (link) {
-        if (!qd_agent_object(cor, (void*) link))
-            break;
-        link = DEQ_NEXT(link);
-    }
-    sys_mutex_unlock(router->lock);
-}
-
 static const char *qd_link_type_names[] = { "endpoint", "waypoint", "inter-router", "inter-area" };
 ENUM_DEFINE(qd_link_type, qd_link_type_names);
 
@@ -251,7 +106,7 @@ static const char *qd_router_addr_text(q
     return addr ? (const char*)qd_hash_key_by_handle(addr->hash_handle) : NULL;
 }
 
-qd_error_t qd_c_entity_refresh_router_link(qd_entity_t* entity, void *impl)
+qd_error_t qd_entity_refresh_router_link(qd_entity_t* entity, void *impl)
 {
     qd_router_link_t *link = (qd_router_link_t*) impl;
     /* FIXME aconway 2014-10-17: old management used link->bit_mask as name/identity,
@@ -268,181 +123,6 @@ qd_error_t qd_c_entity_refresh_router_li
     return qd_error_code();
 }
 
-static void node_attr_name(void *object_handle, void *cor, void *unused)
-{
-    qd_router_node_t *node = (qd_router_node_t*) object_handle;
-    qd_agent_value_uint(cor, 0, node->mask_bit);
-}
-
-
-static void node_attr_addr(void *object_handle, void *cor, void *unused)
-{
-    qd_router_node_t *node = (qd_router_node_t*) object_handle;
-    qd_agent_value_string(cor, 0, address_text(node->owning_addr));
-}
-
-
-static void node_attr_nextHop(void *object_handle, void *cor, void *unused)
-{
-    qd_router_node_t *node = (qd_router_node_t*) object_handle;
-    if (node->next_hop)
-        qd_agent_value_uint(cor, 0, node->next_hop->mask_bit);
-    else
-        qd_agent_value_null(cor, 0);
-}
-
-
-static void node_attr_routerLink(void *object_handle, void *cor, void *unused)
-{
-    qd_router_node_t *node = (qd_router_node_t*) object_handle;
-    if (node->peer_link)
-        qd_agent_value_uint(cor, 0, node->peer_link->mask_bit);
-    else
-        qd_agent_value_null(cor, 0);
-}
-
-
-static void node_attr_validOrigins(void *object_handle, void *cor, void *unused)
-{
-    qd_router_node_t *node = (qd_router_node_t*) object_handle;
-    qd_agent_value_start_list(cor, 0);
-    for (uint32_t bit = 1; bit < qd_bitmask_width(); bit++)
-        if (qd_bitmask_value(node->valid_origins, bit))
-            qd_agent_value_uint(cor, 0, bit);
-    qd_agent_value_end_list(cor);
-}
-
-
-static const qd_agent_attribute_t NODE_ATTRIBUTES[] =
-    {{"name", node_attr_name, 0},
-     {"identity", node_attr_name, 0},
-     {"addr", node_attr_addr, 0},
-     {"nextHop", node_attr_nextHop, 0},
-     {"routerLink", node_attr_routerLink, 0},
-     {"validOrigins", node_attr_validOrigins, 0},
-     {0, 0, 0}};
-
-static void qd_router_query_node(void *context, void *cor)
-{
-    qd_router_t *router = (qd_router_t*) context;
-
-    sys_mutex_lock(router->lock);
-    qd_router_node_t *node = DEQ_HEAD(router->routers);
-    while (node) {
-        if (!qd_agent_object(cor, (void*) node))
-            break;
-        node = DEQ_NEXT(node);
-    }
-    sys_mutex_unlock(router->lock);
-}
-
-
-static void addr_attr_name(void *object_handle, void *cor, void *unused)
-{
-    qd_address_t *addr = (qd_address_t*) object_handle;
-    qd_agent_value_string(cor, 0, address_text(addr));
-}
-
-
-static void addr_attr_inProcess(void *object_handle, void *cor, void *unused)
-{
-    qd_address_t *addr = (qd_address_t*) object_handle;
-    qd_agent_value_boolean(cor, 0, addr->handler != 0);
-}
-
-
-static void addr_attr_subscriberCount(void *object_handle, void *cor, void *unused)
-{
-    qd_address_t *addr = (qd_address_t*) object_handle;
-    qd_agent_value_uint(cor, 0, DEQ_SIZE(addr->rlinks));
-}
-
-
-static void addr_attr_remoteCount(void *object_handle, void *cor, void *unused)
-{
-    qd_address_t *addr = (qd_address_t*) object_handle;
-    qd_agent_value_uint(cor, 0, DEQ_SIZE(addr->rnodes));
-}
-
-
-static void addr_attr_deliveriesIngress(void *object_handle, void *cor, void *unused)
-{
-    qd_address_t *addr = (qd_address_t*) object_handle;
-    qd_agent_value_uint(cor, 0, addr->deliveries_ingress);
-}
-
-
-static void addr_attr_deliveriesEgress(void *object_handle, void *cor, void *unused)
-{
-    qd_address_t *addr = (qd_address_t*) object_handle;
-    qd_agent_value_uint(cor, 0, addr->deliveries_egress);
-}
-
-
-static void addr_attr_deliveriesTransit(void *object_handle, void *cor, void *unused)
-{
-    qd_address_t *addr = (qd_address_t*) object_handle;
-    qd_agent_value_uint(cor, 0, addr->deliveries_transit);
-}
-
-
-static void addr_attr_deliveriesToContainer(void *object_handle, void *cor, void *unused)
-{
-    qd_address_t *addr = (qd_address_t*) object_handle;
-    qd_agent_value_uint(cor, 0, addr->deliveries_to_container);
-}
-
-
-static void addr_attr_deliveriesFromContainer(void *object_handle, void *cor, void *unused)
-{
-    qd_address_t *addr = (qd_address_t*) object_handle;
-    qd_agent_value_uint(cor, 0, addr->deliveries_from_container);
-}
-
-
-static const qd_agent_attribute_t ADDRESS_ATTRIBUTES[] =
-    {{"name", addr_attr_name, 0},
-     {"identity", addr_attr_name, 0},
-     {"inProcess", addr_attr_inProcess, 0},
-     {"subscriberCount", addr_attr_subscriberCount, 0},
-     {"remoteCount", addr_attr_remoteCount, 0},
-     {"deliveriesIngress", addr_attr_deliveriesIngress, 0},
-     {"deliveriesEgress", addr_attr_deliveriesEgress, 0},
-     {"deliveriesTransit", addr_attr_deliveriesTransit, 0},
-     {"deliveriesToContainer", addr_attr_deliveriesToContainer, 0},
-     {"deliveriesFromContainer", addr_attr_deliveriesFromContainer, 0},
-     {0, 0, 0}};
-
-static void qd_router_query_address(void *context, void *cor)
-{
-    qd_router_t *router = (qd_router_t*) context;
-
-    sys_mutex_lock(router->lock);
-    qd_address_t *addr = DEQ_HEAD(router->addrs);
-    while (addr) {
-        if (!qd_agent_object(cor, (void*) addr))
-            break;
-        addr = DEQ_NEXT(addr);
-    }
-    sys_mutex_unlock(router->lock);
-}
-
-
-qd_error_t qd_router_agent_setup(qd_router_t *router)
-{
-    qd_error_clear();
-    router->class_router =
-        qd_agent_register_class(router->qd, QD_ROUTER_TYPE_LONG, router, ROUTER_ATTRIBUTES, qd_router_query_router);
-    router->class_link =
-        qd_agent_register_class(router->qd, QD_ROUTER_LINK_TYPE_LONG, router, LINK_ATTRIBUTES, qd_router_query_link);
-    router->class_node =
-        qd_agent_register_class(router->qd, QD_ROUTER_NODE_TYPE_LONG, router, NODE_ATTRIBUTES, qd_router_query_node);
-    router->class_address =
-        qd_agent_register_class(router->qd, QD_ROUTER_ADDRESS_TYPE_LONG, router, ADDRESS_ATTRIBUTES, qd_router_query_address);
-    return qd_error_code();
-}
-
-
 void qd_router_build_node_list(qd_dispatch_t *qd, qd_composed_field_t *field)
 {
     qd_router_t *router = qd->router;

Modified: qpid/dispatch/trunk/src/router_config.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/router_config.c?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/router_config.c (original)
+++ qpid/dispatch/trunk/src/router_config.c Fri Dec  5 22:13:44 2014
@@ -22,15 +22,15 @@
 #include <qpid/dispatch/log.h>
 #include "dispatch_private.h"
 #include "router_private.h"
-#include "entity_private.h"
+#include "entity.h"
 #include "schema_enum.h"
 
 qd_error_t qd_router_configure_address(qd_router_t *router, qd_entity_t *entity) {
     qd_error_clear();
     int   phase  = qd_entity_opt_long(entity, "phase", 0); QD_ERROR_RET();
-    qd_schema_fixedAddress_fanout_t fanout = qd_entity_long(entity, "fanout"); QD_ERROR_RET();
-    qd_schema_fixedAddress_bias_t bias   = qd_entity_long(entity, "bias"); QD_ERROR_RET();
-    char *prefix = qd_entity_string(entity, "prefix"); QD_ERROR_RET();
+    qd_schema_fixedAddress_fanout_t fanout = qd_entity_get_long(entity, "fanout"); QD_ERROR_RET();
+    qd_schema_fixedAddress_bias_t bias   = qd_entity_get_long(entity, "bias"); QD_ERROR_RET();
+    char *prefix = qd_entity_get_string(entity, "prefix"); QD_ERROR_RET();
 
     if (phase < 0 || phase > 9) {
         free(prefix);
@@ -108,8 +108,8 @@ qd_error_t qd_router_configure_address(q
 qd_error_t qd_router_configure_waypoint(qd_router_t *router, qd_entity_t *entity)
 {
 
-    char *address = qd_entity_string(entity, "address"); QD_ERROR_RET();
-    char *connector = qd_entity_string(entity, "connector"); QD_ERROR_RET();
+    char *address = qd_entity_get_string(entity, "address"); QD_ERROR_RET();
+    char *connector = qd_entity_get_string(entity, "connector"); QD_ERROR_RET();
     int   in_phase  = qd_entity_opt_long(entity, "inPhase", 0); QD_ERROR_RET();
     int   out_phase = qd_entity_opt_long(entity, "outPhase", 0);  QD_ERROR_RET();
 

Modified: qpid/dispatch/trunk/src/router_node.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/router_node.c?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/router_node.c (original)
+++ qpid/dispatch/trunk/src/router_node.c Fri Dec  5 22:13:44 2014
@@ -24,10 +24,14 @@
 #include <stdlib.h>
 #include <qpid/dispatch.h>
 #include "dispatch_private.h"
-#include "c_entity.h"
+#include "entity_cache.h"
 #include "router_private.h"
 #include "waypoint_private.h"
 
+const char *QD_ROUTER_NODE_TYPE = "router.node";
+const char *QD_ROUTER_ADDRESS_TYPE = "router.address";
+const char *QD_ROUTER_LINK_TYPE = "router.link";
+
 static char *router_role    = "inter-router";
 static char *on_demand_role = "on-demand";
 static char *local_prefix   = "_local/";
@@ -35,7 +39,6 @@ static char *topo_prefix    = "_topo/";
 static char *direct_prefix;
 static char *node_id;
 
-
 /**
  * Address Types and Processing:
  *
@@ -157,7 +160,7 @@ void qd_router_check_addr(qd_router_t *r
         //
         qd_hash_remove_by_handle2(router->addr_hash, addr->hash_handle, &key);
         DEQ_REMOVE(router->addrs, addr);
-        qd_c_entity_remove(QD_ROUTER_ADDRESS_TYPE, addr);
+        qd_entity_cache_remove(QD_ROUTER_ADDRESS_TYPE, addr);
         qd_hash_handle_free(addr->hash_handle);
         free_qd_address_t(addr);
     }
@@ -1004,7 +1007,7 @@ static int router_incoming_link_handler(
 
     sys_mutex_lock(router->lock);
     rlink->mask_bit = is_router ? qd_router_find_mask_bit_LH(router, link) : 0;
-    qd_c_entity_add(QD_ROUTER_LINK_TYPE, rlink);
+    qd_entity_cache_add(QD_ROUTER_LINK_TYPE, rlink);
     DEQ_INSERT_TAIL(router->links, rlink);
     sys_mutex_unlock(router->lock);
 
@@ -1137,7 +1140,7 @@ static int router_outgoing_link_handler(
             qd_hash_insert(router->addr_hash, iter, addr, &addr->hash_handle);
             DEQ_INSERT_TAIL(router->addrs, addr);
             addr->semantics = semantics;
-            qd_c_entity_add(QD_ROUTER_ADDRESS_TYPE, addr);
+            qd_entity_cache_add(QD_ROUTER_ADDRESS_TYPE, addr);
         }
 
         rlink->owning_addr = addr;
@@ -1150,7 +1153,7 @@ static int router_outgoing_link_handler(
         //
         propagate = (!is_dynamic) && (DEQ_SIZE(addr->rlinks) == 1);
     }
-    qd_c_entity_add(QD_ROUTER_LINK_TYPE, rlink);
+    qd_entity_cache_add(QD_ROUTER_LINK_TYPE, rlink);
     DEQ_INSERT_TAIL(router->links, rlink);
 
     //
@@ -1226,7 +1229,7 @@ static int router_link_detach_handler(vo
     // Remove the link from the master list-of-links.
     //
     DEQ_REMOVE(router->links, rlink);
-    qd_c_entity_remove(QD_ROUTER_LINK_TYPE, rlink);
+    qd_entity_cache_remove(QD_ROUTER_LINK_TYPE, rlink);
     sys_mutex_unlock(router->lock);
 
     //
@@ -1315,7 +1318,7 @@ static void router_outbound_open_handler
     DEQ_INIT(rlink->msg_fifo);
 
     qd_link_set_context(receiver, rlink);
-    qd_c_entity_add(QD_ROUTER_LINK_TYPE, rlink);
+    qd_entity_cache_add(QD_ROUTER_LINK_TYPE, rlink);
     DEQ_INSERT_TAIL(router->links, rlink);
 
     //
@@ -1353,7 +1356,7 @@ static void router_outbound_open_handler
     router->out_links_by_mask_bit[mask_bit] = rlink;
 
     qd_link_set_context(sender, rlink);
-    qd_c_entity_add(QD_ROUTER_LINK_TYPE, rlink);
+    qd_entity_cache_add(QD_ROUTER_LINK_TYPE, rlink);
     DEQ_INSERT_TAIL(router->links, rlink);
     sys_mutex_unlock(router->lock);
 
@@ -1472,15 +1475,12 @@ qd_router_t *qd_router(qd_dispatch_t *qd
     return router;
 }
 
-
 void qd_router_setup_late(qd_dispatch_t *qd)
 {
-    qd_router_agent_setup(qd->router);
     qd_router_python_setup(qd->router);
     qd_timer_schedule(qd->router->timer, 1000);
 }
 
-
 void qd_router_free(qd_router_t *router)
 {
     if (!router) return;
@@ -1500,7 +1500,7 @@ void qd_router_free(qd_router_t *router)
 
         qd_hash_handle_free(addr->hash_handle);
         DEQ_REMOVE_HEAD(router->addrs);
-        qd_c_entity_remove(QD_ROUTER_ADDRESS_TYPE, addr);
+        qd_entity_cache_remove(QD_ROUTER_ADDRESS_TYPE, addr);
         free_qd_address_t(addr);
     }
 
@@ -1549,7 +1549,7 @@ qd_address_t *qd_router_register_address
         qd_hash_insert(router->addr_hash, iter, addr, &addr->hash_handle);
         DEQ_ITEM_INIT(addr);
         DEQ_INSERT_TAIL(router->addrs, addr);
-        qd_c_entity_add(QD_ROUTER_ADDRESS_TYPE, addr);
+        qd_entity_cache_add(QD_ROUTER_ADDRESS_TYPE, addr);
     }
     qd_field_iterator_free(iter);
 

Modified: qpid/dispatch/trunk/src/router_private.h
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/router_private.h?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/router_private.h (original)
+++ qpid/dispatch/trunk/src/router_private.h Fri Dec  5 22:13:44 2014
@@ -29,15 +29,13 @@
 #include <qpid/dispatch/message.h>
 #include <qpid/dispatch/bitmask.h>
 #include <qpid/dispatch/hash.h>
-#include <qpid/dispatch/agent.h>
 #include <qpid/dispatch/log.h>
 #include "dispatch_private.h"
-#include "entity_private.h"
+#include "entity.h"
 
 qd_error_t qd_router_python_setup(qd_router_t *router);
 void qd_router_python_free(qd_router_t *router);
 qd_error_t qd_pyrouter_tick(qd_router_t *router);
-qd_error_t qd_router_agent_setup(qd_router_t *router);
 qd_error_t qd_router_configure_address(qd_router_t *router, qd_entity_t *entity);
 qd_error_t qd_router_configure_waypoint(qd_router_t *router, qd_entity_t *entity);
 
@@ -67,6 +65,10 @@ typedef struct qd_routed_event_t {
     uint64_t       disposition;
 } qd_routed_event_t;
 
+extern const char *QD_ROUTER_NODE_TYPE;
+extern const char *QD_ROUTER_ADDRESS_TYPE;
+extern const char *QD_ROUTER_LINK_TYPE;
+
 ALLOC_DECLARE(qd_routed_event_t);
 DEQ_DECLARE(qd_routed_event_t, qd_routed_event_list_t);
 
@@ -231,11 +233,6 @@ struct qd_router_t {
 
     qd_config_address_list_t  config_addrs;
     qd_waypoint_list_t        waypoints;
-
-    qd_agent_class_t         *class_router;
-    qd_agent_class_t         *class_link;
-    qd_agent_class_t         *class_node;
-    qd_agent_class_t         *class_address;
 };
 
 

Modified: qpid/dispatch/trunk/src/router_pynode.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/router_pynode.c?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/router_pynode.c (original)
+++ qpid/dispatch/trunk/src/router_pynode.c Fri Dec  5 22:13:44 2014
@@ -26,7 +26,7 @@
 #include "dispatch_private.h"
 #include "router_private.h"
 #include "waypoint_private.h"
-#include "c_entity.h"
+#include "entity_cache.h"
 
 static qd_address_semantics_t router_addr_semantics = QD_FANOUT_SINGLE | QD_BIAS_CLOSEST | QD_CONGESTION_DROP | QD_DROP_FOR_SLOW_CONSUMERS | QD_BYPASS_VALID_ORIGINS;
 
@@ -37,8 +37,6 @@ static PyObject        *pyAdded    = 0;
 static PyObject        *pyRemoved  = 0;
 static PyObject        *pyLinkLost = 0;
 
-
-
 typedef struct {
     PyObject_HEAD
     qd_router_t *router;
@@ -82,7 +80,7 @@ static char *qd_add_router(qd_router_t *
     addr->semantics = router_addr_semantics;
     qd_hash_insert(router->addr_hash, iter, addr, &addr->hash_handle);
     DEQ_INSERT_TAIL(router->addrs, addr);
-    qd_c_entity_add(QD_ROUTER_ADDRESS_TYPE, addr);
+    qd_entity_cache_add(QD_ROUTER_ADDRESS_TYPE, addr);
     qd_field_iterator_free(iter);
 
     //
@@ -98,7 +96,7 @@ static char *qd_add_router(qd_router_t *
     rnode->valid_origins = qd_bitmask(0);
 
     DEQ_INSERT_TAIL(router->routers, rnode);
-    qd_c_entity_add(QD_ROUTER_NODE_TYPE, rnode);
+    qd_entity_cache_add(QD_ROUTER_NODE_TYPE, rnode);
 
     //
     // Link the router record to the address record.
@@ -142,8 +140,8 @@ static char *qd_del_router(qd_router_t *
     qd_address_t     *oaddr = rnode->owning_addr;
     assert(oaddr);
 
-    qd_c_entity_remove(QD_ROUTER_ADDRESS_TYPE, oaddr);
-    qd_c_entity_remove(QD_ROUTER_NODE_TYPE, rnode);
+    qd_entity_cache_remove(QD_ROUTER_ADDRESS_TYPE, oaddr);
+    qd_entity_cache_remove(QD_ROUTER_NODE_TYPE, rnode);
 
     //
     // Unlink the router node from the address record
@@ -393,7 +391,7 @@ static PyObject* qd_map_destination(PyOb
         addr->semantics = router_semantics_for_addr(router, iter, phase, &unused);
         DEQ_ITEM_INIT(addr);
         DEQ_INSERT_TAIL(router->addrs, addr);
-        qd_c_entity_add(QD_ROUTER_ADDRESS_TYPE, addr);
+        qd_entity_cache_add(QD_ROUTER_ADDRESS_TYPE, addr);
     }
     qd_field_iterator_free(iter);
 
@@ -469,9 +467,10 @@ static PyObject* qd_unmap_destination(Py
     return Py_None;
 }
 
+/* FIXME aconway 2014-12-05:  */
 static PyObject* qd_get_agent(PyObject *self, PyObject *args) {
     RouterAdapter *adapter = (RouterAdapter*) self;
-    PyObject *agent = adapter->router->qd->py_agent;
+    PyObject *agent = adapter->router->qd->agent;
     if (agent) {
         Py_INCREF(agent);
         return agent;

Modified: qpid/dispatch/trunk/src/server.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/server.c?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/server.c (original)
+++ qpid/dispatch/trunk/src/server.c Fri Dec  5 22:13:44 2014
@@ -21,8 +21,8 @@
 #include <qpid/dispatch/threading.h>
 #include <qpid/dispatch/log.h>
 #include <qpid/dispatch/amqp.h>
-#include "entity_private.h"
-#include "c_entity.h"
+#include "entity.h"
+#include "entity_cache.h"
 #include "dispatch_private.h"
 #include "server_private.h"
 #include "timer_private.h"
@@ -39,6 +39,8 @@ ALLOC_DEFINE(qd_connector_t);
 ALLOC_DEFINE(qd_connection_t);
 ALLOC_DEFINE(qd_user_fd_t);
 
+const char *QD_CONNECTION_TYPE = "connection";
+
 static const char *conn_state_names[] = {
     "connecting",
     "opening",
@@ -78,7 +80,7 @@ static qd_error_t connection_entity_upda
         return qd_entity_set_string(entity, "host", qdpn_connector_name(conn->pn_cxtr));
 }
 
-qd_error_t qd_c_entity_refresh_connection(qd_entity_t* entity, void *impl)
+qd_error_t qd_entity_refresh_connection(qd_entity_t* entity, void *impl)
 {
     qd_connection_t *conn = (qd_connection_t*)impl;
     const qd_server_config_t *config =
@@ -141,7 +143,7 @@ static void thread_process_listeners(qd_
 
         // qd_server->lock is already locked
         DEQ_INSERT_TAIL(qd_server->connections, ctx);
-        qd_c_entity_add(QD_CONNECTION_TYPE, ctx);
+        qd_entity_cache_add(QD_CONNECTION_TYPE, ctx);
 
         //
         // Get a pointer to the transport so we can insert security components into it
@@ -546,7 +548,7 @@ static void *thread_run(void *arg)
             // Check to see if the connector was closed during processing
             //
             if (qdpn_connector_closed(cxtr)) {
-                qd_c_entity_remove(QD_CONNECTION_TYPE, ctx);
+                qd_entity_cache_remove(QD_CONNECTION_TYPE, ctx);
                 //
                 // Connector is closed.  Free the context and the connector.
                 //
@@ -663,7 +665,7 @@ static void cxtr_try_open(void *context)
     sys_mutex_lock(ct->server->lock);
     ctx->pn_cxtr = qdpn_connector(ct->server->driver, ct->config->host, ct->config->port, (void*) ctx);
     DEQ_INSERT_TAIL(ct->server->connections, ctx);
-    qd_c_entity_add(QD_CONNECTION_TYPE, ctx);
+    qd_entity_cache_add(QD_CONNECTION_TYPE, ctx);
 
     sys_mutex_unlock(ct->server->lock);
 

Modified: qpid/dispatch/trunk/src/waypoint.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/waypoint.c?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/waypoint.c (original)
+++ qpid/dispatch/trunk/src/waypoint.c Fri Dec  5 22:13:44 2014
@@ -20,7 +20,7 @@
 #include "waypoint_private.h"
 #include "dispatch_private.h"
 #include "router_private.h"
-#include "c_entity.h"
+#include "entity_cache.h"
 #include <qpid/dispatch/ctools.h>
 #include <qpid/dispatch/threading.h>
 #include <qpid/dispatch/connection_manager.h>
@@ -69,7 +69,7 @@ static void qd_waypoint_visit_sink_LH(qd
             DEQ_INSERT_TAIL(router->addrs, addr);
             addr->waypoint  = true;
             addr->semantics = router_semantics_for_addr(router, iter, wp->in_phase, &unused);
-            qd_c_entity_add(QD_ROUTER_ADDRESS_TYPE, addr);
+            qd_entity_cache_add(QD_ROUTER_ADDRESS_TYPE, addr);
         }
 
         wp->in_address = addr;
@@ -99,7 +99,7 @@ static void qd_waypoint_visit_sink_LH(qd
         rlink->target         = 0;
         DEQ_INIT(rlink->event_fifo);
         DEQ_INIT(rlink->msg_fifo);
-        qd_c_entity_add(QD_ROUTER_LINK_TYPE, rlink);
+        qd_entity_cache_add(QD_ROUTER_LINK_TYPE, rlink);
         DEQ_INSERT_TAIL(router->links, rlink);
         qd_link_set_context(wp->out_link, rlink);
         qd_router_add_link_ref_LH(&addr->rlinks, rlink);
@@ -144,7 +144,7 @@ static void qd_waypoint_visit_source_LH(
             DEQ_INSERT_TAIL(router->addrs, addr);
             addr->waypoint  = true;
             addr->semantics = router_semantics_for_addr(router, iter, wp->out_phase, &unused);
-            qd_c_entity_add(QD_ROUTER_ADDRESS_TYPE, addr);
+            qd_entity_cache_add(QD_ROUTER_ADDRESS_TYPE, addr);
         }
 
         wp->out_address = addr;
@@ -174,7 +174,7 @@ static void qd_waypoint_visit_source_LH(
         rlink->target         = 0;
         DEQ_INIT(rlink->event_fifo);
         DEQ_INIT(rlink->msg_fifo);
-        qd_c_entity_add(QD_ROUTER_LINK_TYPE, rlink);
+        qd_entity_cache_add(QD_ROUTER_LINK_TYPE, rlink);
         DEQ_INSERT_TAIL(router->links, rlink);
         qd_link_set_context(wp->in_link, rlink);
 

Modified: qpid/dispatch/trunk/tests/system_test.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/system_test.py?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/system_test.py (original)
+++ qpid/dispatch/trunk/tests/system_test.py Fri Dec  5 22:13:44 2014
@@ -334,7 +334,7 @@ class Qdrouterd(Process):
 
     @property
     def management(self):
-        """Return an management agent proxy for this router"""
+        """Return a management agent proxy for this router"""
         if not self._management:
             self._management = Node(self.addresses[0], timeout=DEFAULT_TIMEOUT)
         return self._management

Modified: qpid/dispatch/trunk/tests/system_tests_qdmanage.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/system_tests_qdmanage.py?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/system_tests_qdmanage.py (original)
+++ qpid/dispatch/trunk/tests/system_tests_qdmanage.py Fri Dec  5 22:13:44 2014
@@ -141,16 +141,5 @@ class QdmanageTest(TestCase):
                        if e['type'] not in ignore_types)
         self.assertEqual(name_type(qall), name_type(qattr))
 
-
-class OldQdmanageTest(QdmanageTest):
-    """Test with old managment interface"""
-    def address(self): return super(OldQdmanageTest, self).address() + '/$cmanagement'
-
-    def test_crud(self): pass   # Not supported by old management
-
-    def test_query(self): pass  # Not supported by old management
-
-    def test_stdin(self): pass  # Not supported by old management
-
 if __name__ == '__main__':
     unittest.main(main_module())

Modified: qpid/dispatch/trunk/tests/system_tests_qdstat.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/system_tests_qdstat.py?rev=1643449&r1=1643448&r2=1643449&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/system_tests_qdstat.py (original)
+++ qpid/dispatch/trunk/tests/system_tests_qdstat.py Fri Dec  5 22:13:44 2014
@@ -65,10 +65,5 @@ class QdstatTest(system_test.TestCase):
     def test_memory(self):
         self.run_qdstat(['--memory'], r' qd_address_t\s+[0-9]+')
 
-
-class OldQdstatTest(QdstatTest):
-    """Test with old managment interface"""
-    def address(self): return super(OldQdstatTest, self).address() + '/$cmanagement'
-
 if __name__ == '__main__':
     unittest.main(system_test.main_module())



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org