Author: tross
Date: Mon May 20 19:37:04 2013
New Revision: 1484572

URL: http://svn.apache.org/r1484572
Log:
NO_JIRA - Work-in-progress for Dispatch agent and field-access

Modified:
    qpid/trunk/qpid/extras/dispatch/include/qpid/dispatch/agent.h
    qpid/trunk/qpid/extras/dispatch/include/qpid/dispatch/iterator.h
    qpid/trunk/qpid/extras/dispatch/src/agent.c
    qpid/trunk/qpid/extras/dispatch/src/container.c
    qpid/trunk/qpid/extras/dispatch/src/iterator.c
    qpid/trunk/qpid/extras/dispatch/src/server.c
    qpid/trunk/qpid/extras/dispatch/tests/CMakeLists.txt

Modified: qpid/trunk/qpid/extras/dispatch/include/qpid/dispatch/agent.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/extras/dispatch/include/qpid/dispatch/agent.h?rev=1484572&r1=1484571&r2=1484572&view=diff
==============================================================================
--- qpid/trunk/qpid/extras/dispatch/include/qpid/dispatch/agent.h (original)
+++ qpid/trunk/qpid/extras/dispatch/include/qpid/dispatch/agent.h Mon May 20 
19:37:04 2013
@@ -38,7 +38,7 @@ typedef struct dx_agent_class_t dx_agent
  *
  * @param context The handler context supplied in dx_agent_register.
  */
-typedef void (*dx_agent_schema_cb_t)(void* context, const void *correlator);
+typedef void (*dx_agent_schema_cb_t)(void* context, void *correlator);
 
 
 /**
@@ -48,7 +48,7 @@ typedef void (*dx_agent_schema_cb_t)(voi
  * @param id The identifier of the instance being queried or NULL for all 
instances.
  * @param correlator The correlation handle to be used in calls to 
dx_agent_value_*
  */
-typedef void (*dx_agent_query_cb_t)(void* context, const char *id, const void 
*correlator);
+typedef void (*dx_agent_query_cb_t)(void* context, const char *id, void 
*correlator);
 
 
 /**
@@ -71,19 +71,19 @@ dx_agent_class_t *dx_agent_register_even
 /**
  *
  */
-void dx_agent_value_string(const void *correlator, const char *key, const char 
*value);
-void dx_agent_value_uint(const void *correlator, const char *key, uint64_t 
value);
-void dx_agent_value_null(const void *correlator, const char *key);
-void dx_agent_value_boolean(const void *correlator, const char *key, bool 
value);
-void dx_agent_value_binary(const void *correlator, const char *key, const 
uint8_t *value, size_t len);
-void dx_agent_value_uuid(const void *correlator, const char *key, const 
uint8_t *value);
-void dx_agent_value_timestamp(const void *correlator, const char *key, 
uint64_t value);
+void dx_agent_value_string(void *correlator, const char *key, const char 
*value);
+void dx_agent_value_uint(void *correlator, const char *key, uint64_t value);
+void dx_agent_value_null(void *correlator, const char *key);
+void dx_agent_value_boolean(void *correlator, const char *key, bool value);
+void dx_agent_value_binary(void *correlator, const char *key, const uint8_t 
*value, size_t len);
+void dx_agent_value_uuid(void *correlator, const char *key, const uint8_t 
*value);
+void dx_agent_value_timestamp(void *correlator, const char *key, uint64_t 
value);
 
 
 /**
  *
  */
-void dx_agent_value_complete(const void *correlator, bool more);
+void dx_agent_value_complete(void *correlator, bool more);
 
 
 /**

Modified: qpid/trunk/qpid/extras/dispatch/include/qpid/dispatch/iterator.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/extras/dispatch/include/qpid/dispatch/iterator.h?rev=1484572&r1=1484571&r2=1484572&view=diff
==============================================================================
--- qpid/trunk/qpid/extras/dispatch/include/qpid/dispatch/iterator.h (original)
+++ qpid/trunk/qpid/extras/dispatch/include/qpid/dispatch/iterator.h Mon May 20 
19:37:04 2013
@@ -156,6 +156,6 @@ dx_field_map_t *dx_field_map(dx_field_it
 void dx_field_map_free(dx_field_map_t *map);
 dx_field_iterator_t *dx_field_map_by_key(dx_field_map_t *map, const char *key);
 
-dx_field_iterator_t *dx_field_string(dx_field_iterator_t *iter);
+dx_field_iterator_t *dx_field_raw(dx_field_iterator_t *iter);
 
 #endif

Modified: qpid/trunk/qpid/extras/dispatch/src/agent.c
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/extras/dispatch/src/agent.c?rev=1484572&r1=1484571&r2=1484572&view=diff
==============================================================================
--- qpid/trunk/qpid/extras/dispatch/src/agent.c (original)
+++ qpid/trunk/qpid/extras/dispatch/src/agent.c Mon May 20 19:37:04 2013
@@ -56,8 +56,6 @@ typedef struct {
     dx_message_t *response_msg;
 } dx_agent_request_t;
 
-ALLOC_DECLARE(dx_agent_request_t);
-ALLOC_DEFINE(dx_agent_request_t);
 
 static char *log_module = "AGENT";
 
@@ -68,14 +66,19 @@ static void dx_agent_process_get(dx_agen
     if (cls == 0)
         return;
 
-    dx_field_iterator_t    *cls_string = dx_field_string(cls);
+    dx_field_iterator_t    *cls_string = dx_field_raw(cls);
     const dx_agent_class_t *cls_record;
     hash_retrieve_const(agent->class_hash, cls_string, (const void**) 
&cls_record);
-
     if (cls_record == 0)
         return;
 
     dx_log(log_module, LOG_TRACE, "Received GET request for class: %s", 
cls_record->fqname);
+
+    dx_agent_request_t request;
+    request.agent        = agent;
+    request.response_msg = 0;
+
+    cls_record->query_handler(cls_record->context, 0, &request);
 }
 
 
@@ -116,7 +119,7 @@ static void dx_agent_process_request(dx_
     //
     // Dispatch the opcode to the appropriate handler
     //
-    dx_field_iterator_t *opcode_string = dx_field_string(opcode);
+    dx_field_iterator_t *opcode_string = dx_field_raw(opcode);
     if (dx_field_iterator_equal(opcode_string, (unsigned char*) "get"))
         dx_agent_process_get(agent, map);
 
@@ -220,42 +223,45 @@ dx_agent_class_t *dx_agent_register_even
 }
 
 
-void dx_agent_value_string(const void *correlator, const char *key, const char 
*value)
+void dx_agent_value_string(void *correlator, const char *key, const char 
*value)
 {
+    printf("STRING: %s => %s\n", key, value);
 }
 
 
-void dx_agent_value_uint(const void *correlator, const char *key, uint64_t 
value)
+void dx_agent_value_uint(void *correlator, const char *key, uint64_t value)
 {
+    printf("UINT  : %s => %ld\n", key, value);
 }
 
 
-void dx_agent_value_null(const void *correlator, const char *key)
+void dx_agent_value_null(void *correlator, const char *key)
 {
+    printf("NULL  : %s\n", key);
 }
 
 
-void dx_agent_value_boolean(const void *correlator, const char *key, bool 
value)
+void dx_agent_value_boolean(void *correlator, const char *key, bool value)
 {
 }
 
 
-void dx_agent_value_binary(const void *correlator, const char *key, const 
uint8_t *value, size_t len)
+void dx_agent_value_binary(void *correlator, const char *key, const uint8_t 
*value, size_t len)
 {
 }
 
 
-void dx_agent_value_uuid(const void *correlator, const char *key, const 
uint8_t *value)
+void dx_agent_value_uuid(void *correlator, const char *key, const uint8_t 
*value)
 {
 }
 
 
-void dx_agent_value_timestamp(const void *correlator, const char *key, 
uint64_t value)
+void dx_agent_value_timestamp(void *correlator, const char *key, uint64_t 
value)
 {
 }
 
 
-void dx_agent_value_complete(const void *correlator, bool more)
+void dx_agent_value_complete(void *correlator, bool more)
 {
 }
 

Modified: qpid/trunk/qpid/extras/dispatch/src/container.c
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/extras/dispatch/src/container.c?rev=1484572&r1=1484571&r2=1484572&view=diff
==============================================================================
--- qpid/trunk/qpid/extras/dispatch/src/container.c (original)
+++ qpid/trunk/qpid/extras/dispatch/src/container.c Mon May 20 19:37:04 2013
@@ -414,12 +414,12 @@ static int handler(void *handler_context
 }
 
 
-static void container_schema_handler(void *context, const void *correlator)
+static void container_schema_handler(void *context, void *correlator)
 {
 }
 
 
-static void container_query_handler(void* context, const char *id, const void 
*correlator)
+static void container_query_handler(void* context, const char *id, void 
*correlator)
 {
     container_class_t *cls = (container_class_t*) context;
 

Modified: qpid/trunk/qpid/extras/dispatch/src/iterator.c
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/extras/dispatch/src/iterator.c?rev=1484572&r1=1484571&r2=1484572&view=diff
==============================================================================
--- qpid/trunk/qpid/extras/dispatch/src/iterator.c (original)
+++ qpid/trunk/qpid/extras/dispatch/src/iterator.c Mon May 20 19:37:04 2013
@@ -598,7 +598,7 @@ dx_field_iterator_t *dx_field_map_by_key
     dx_field_pair_t     *pair  = DEQ_HEAD(map->pairs);
 
     while (pair && !value) {
-        key_string = dx_field_string(pair->key_iter);
+        key_string = dx_field_raw(pair->key_iter);
         if (dx_field_iterator_equal(key_string, (const unsigned char*) key))
             value = pair->value_iter;
         free_dx_field_iterator_t(key_string);
@@ -641,12 +641,10 @@ static unsigned int dx_field_get_length(
 }
 
 
-dx_field_iterator_t *dx_field_string(dx_field_iterator_t *iter)
+dx_field_iterator_t *dx_field_raw(dx_field_iterator_t *iter)
 {
     dx_field_iterator_reset(iter);
-    unsigned char tag = dx_field_iterator_octet(iter);
-    if (!dx_tag_is_string(tag))
-        return 0;
+    unsigned char tag   = dx_field_iterator_octet(iter);
     unsigned int length = dx_field_get_length(iter, tag);
 
     dx_field_iterator_t *result = new_dx_field_iterator_t();

Modified: qpid/trunk/qpid/extras/dispatch/src/server.c
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/extras/dispatch/src/server.c?rev=1484572&r1=1484571&r2=1484572&view=diff
==============================================================================
--- qpid/trunk/qpid/extras/dispatch/src/server.c (original)
+++ qpid/trunk/qpid/extras/dispatch/src/server.c Mon May 20 19:37:04 2013
@@ -154,7 +154,7 @@ static int process_connector(dx_server_t
 
     if (ctx->state == CONN_STATE_USER) {
         dx_server->ufd_handler(ctx->ufd->context, ctx->ufd);
-        return 0;
+        return 1;
     }
 
     do {

Modified: qpid/trunk/qpid/extras/dispatch/tests/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/extras/dispatch/tests/CMakeLists.txt?rev=1484572&r1=1484571&r2=1484572&view=diff
==============================================================================
--- qpid/trunk/qpid/extras/dispatch/tests/CMakeLists.txt (original)
+++ qpid/trunk/qpid/extras/dispatch/tests/CMakeLists.txt Mon May 20 19:37:04 
2013
@@ -43,5 +43,9 @@ target_link_libraries(unit_tests_size qp
 add_test(unit_tests_size_10000 unit_tests_size 10000)
 add_test(unit_tests_size_512   unit_tests_size 512)
 add_test(unit_tests_size_10    unit_tests_size 10)
+add_test(unit_tests_size_7     unit_tests_size 7)
+add_test(unit_tests_size_5     unit_tests_size 5)
+add_test(unit_tests_size_3     unit_tests_size 3)
+add_test(unit_tests_size_2     unit_tests_size 2)
 add_test(unit_tests_size_1     unit_tests_size 1)
 add_test(unit_tests            unit_tests)



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to