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]