From e76b14d2b0a15dcb54aba56a94d4ade7f25da630 Mon Sep 17 00:00:00 2001 From: Mike Rylander Date: Sun, 23 Feb 2014 16:35:17 -0500 Subject: [PATCH] Stubbed out C support for receiving chunked responses Signed-off-by: Mike Rylander --- src/libopensrf/osrf_app_session.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/libopensrf/osrf_app_session.c b/src/libopensrf/osrf_app_session.c index 3e00393..2fc7f9b 100644 --- a/src/libopensrf/osrf_app_session.c +++ b/src/libopensrf/osrf_app_session.c @@ -24,6 +24,9 @@ struct osrf_app_request_struct { /** Linked list of responses to the request. */ osrfMessage* result; + /** Buffer used to collect partial response messages */ + growing_buffer* part_response_buffer; + /** Boolean; if true, then a call that is waiting on a response will reset the timeout and set this variable back to false. */ int reset_timeout; @@ -76,6 +79,7 @@ static osrfAppRequest* _osrf_app_request_init( req->reset_timeout = 0; req->next = NULL; req->prev = NULL; + req->part_response_buffer = buffer_init(32); return req; } @@ -114,8 +118,19 @@ static void _osrf_app_request_push_queue( osrfAppRequest* req, osrfMessage* resu if(req == NULL || result == NULL) return; + if (result->status == OSRF_STATUS_PARTIAL) { + //buffer_add(req->part_response_buffer, jsonObjectGetKeyConst(result->payload,"content");); + //osrfMessageFree( result ); + return; + } else if (result->status == OSRF_STATUS_NOCONTENT) { + //jsonObject* pl = jsonNewObject( buffer_release( req->part_response_buffer ) ); + //osrf_message_set_status_info( msg, NULL, "OK", OSRF_STATUS_OK ); + //osrf_message_set_result_content( result->payload, pl ); + } + osrfLogDebug( OSRF_LOG_MARK, "App Session pushing request [%d] onto request queue", result->thread_trace ); + if(req->result == NULL) { req->result = result; // Add the first node -- 2.11.0