Stubbed out C support for receiving chunked responses
authorMike Rylander <mrylander@gmail.com>
Sun, 23 Feb 2014 21:35:17 +0000 (16:35 -0500)
committerMike Rylander <mrylander@gmail.com>
Thu, 21 Jul 2016 15:43:35 +0000 (11:43 -0400)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
src/libopensrf/osrf_app_session.c

index 3e00393..2fc7f9b 100644 (file)
@@ -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