diff options
| author | Ted Ross <tross@apache.org> | 2013-05-20 19:37:04 +0000 |
|---|---|---|
| committer | Ted Ross <tross@apache.org> | 2013-05-20 19:37:04 +0000 |
| commit | 4ba53bbb5a785dd6951ae1a3ad8f806f54cf5af6 (patch) | |
| tree | 51ea59f41e6666783830ed114fca608edd288d4d /qpid/extras/dispatch/src | |
| parent | 0155a463e745da7742d113b39ddcc90a36a1df6a (diff) | |
| download | qpid-python-4ba53bbb5a785dd6951ae1a3ad8f806f54cf5af6.tar.gz | |
NO_JIRA - Work-in-progress for Dispatch agent and field-access
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1484572 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/extras/dispatch/src')
| -rw-r--r-- | qpid/extras/dispatch/src/agent.c | 32 | ||||
| -rw-r--r-- | qpid/extras/dispatch/src/container.c | 4 | ||||
| -rw-r--r-- | qpid/extras/dispatch/src/iterator.c | 8 | ||||
| -rw-r--r-- | qpid/extras/dispatch/src/server.c | 2 |
4 files changed, 25 insertions, 21 deletions
diff --git a/qpid/extras/dispatch/src/agent.c b/qpid/extras/dispatch/src/agent.c index ad226351b6..a120518f7c 100644 --- a/qpid/extras/dispatch/src/agent.c +++ b/qpid/extras/dispatch/src/agent.c @@ -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_agent_t *agent, dx_field_map_t *map) 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_agent_t *agent, dx_message_t *msg) // // 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_event(dx_dispatch_t *dx, } -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) { } diff --git a/qpid/extras/dispatch/src/container.c b/qpid/extras/dispatch/src/container.c index ff628aa9b1..5a0f1b7eb2 100644 --- a/qpid/extras/dispatch/src/container.c +++ b/qpid/extras/dispatch/src/container.c @@ -414,12 +414,12 @@ static int handler(void *handler_context, void *conn_context, dx_conn_event_t ev } -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; diff --git a/qpid/extras/dispatch/src/iterator.c b/qpid/extras/dispatch/src/iterator.c index 44cc152bd9..68d0701f6c 100644 --- a/qpid/extras/dispatch/src/iterator.c +++ b/qpid/extras/dispatch/src/iterator.c @@ -598,7 +598,7 @@ dx_field_iterator_t *dx_field_map_by_key(dx_field_map_t *map, const char *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 *iter, unsigned char } -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(); diff --git a/qpid/extras/dispatch/src/server.c b/qpid/extras/dispatch/src/server.c index cb57458319..fccee7fac0 100644 --- a/qpid/extras/dispatch/src/server.c +++ b/qpid/extras/dispatch/src/server.c @@ -154,7 +154,7 @@ static int process_connector(dx_server_t *dx_server, pn_connector_t *cxtr) if (ctx->state == CONN_STATE_USER) { dx_server->ufd_handler(ctx->ufd->context, ctx->ufd); - return 0; + return 1; } do { |
