Update snapshot(2018-01-04)
[platform/upstream/iotivity.git] / resource / csdk / stack / include / internal / ocserverrequest.h
index d4bea55..565c6e1 100644 (file)
@@ -45,6 +45,9 @@ typedef struct OCServerRequest
     /** The REST method retrieved from received request PDU.*/
     OCMethod method;
 
+    /** Accept format retrieved from the received request PDU. */
+    OCPayloadFormat acceptFormat;
+
     /** resourceUrl will be filled in occoap using the path options in received request PDU.*/
     char resourceUrl[MAX_URI_LENGTH];
 
@@ -55,7 +58,6 @@ typedef struct OCServerRequest
     OCQualityOfService qos;
 
     /** Observe option field.*/
-
     uint32_t observationOption;
 
     /** Observe Result field.*/
@@ -70,6 +72,9 @@ typedef struct OCServerRequest
     /** Remote endpoint address **/
     OCDevAddr devAddr;
 
+    /** The ID of server request*/
+    uint32_t requestId;
+
     /** Token for the request.*/
     CAToken_t requestToken;
 
@@ -86,7 +91,7 @@ typedef struct OCServerRequest
     uint8_t numRcvdVendorSpecificHeaderOptions;
 
     /** An Array  of received vendor specific header options.*/
-    OCHeaderOption rcvdVendorSpecificHeaderOptions[MAX_HEADER_OPTIONS];
+    OCHeaderOption *rcvdVendorSpecificHeaderOptions;
 
     /** Request to complete.*/
     uint8_t requestComplete;
@@ -106,6 +111,9 @@ typedef struct OCServerRequest
     /** payload is retrieved from the payload of the received request PDU.*/
     uint8_t payload[1];
 
+    // WARNING: Do NOT add attributes after payload as they get overwritten
+    // when payload content gets copied over!
+
 } OCServerRequest;
 
 /**
@@ -169,7 +177,7 @@ OCServerRequest * GetServerRequestUsingToken (const CAToken_t token, uint8_t tok
  * @return
  *     OCServerRequest*
  */
-OCServerRequest * GetServerRequestUsingHandle (const OCServerRequest * handle);
+OCServerRequest * GetServerRequestUsingHandle (const OCRequestHandle handle);
 
 /**
  * Get a server response from the server response list using the specified handle
@@ -179,7 +187,7 @@ OCServerRequest * GetServerRequestUsingHandle (const OCServerRequest * handle);
  * @return
  *     OCServerResponse*
  */
-OCServerResponse * GetServerResponseUsingHandle (const OCServerRequest * handle);
+OCServerResponse * GetServerResponseUsingHandle (const OCRequestHandle handle);
 
 /**
  * Add a server request to the server request list
@@ -199,6 +207,7 @@ OCServerResponse * GetServerResponseUsingHandle (const OCServerRequest * handle)
  * @param tokenLength                           Request token length.
  * @param resourceUrl                           URL of resource.
  * @param reqTotalSize                          Total size of the request.
+ * @param acceptFormat                          The format requested for the payload encoding.
  * @param devAddr                               Device Address.
  *
  * @return
@@ -212,6 +221,7 @@ OCStackResult AddServerRequest (OCServerRequest ** request, uint16_t coapID,
         uint8_t * payload, CAToken_t requestToken,
         uint8_t tokenLength,
         char * resourceUrl, size_t reqTotalSize,
+        OCPayloadFormat acceptFormat,
         const OCDevAddr *devAddr);
 
 /**
@@ -232,18 +242,20 @@ OCStackResult AddServerRequest (OCServerRequest ** request, uint16_t coapID,
  *     OCStackResult
  */
 OCStackResult FormOCEntityHandlerRequest(
-                                OCEntityHandlerRequest *entityHandlerRequest,
-                                OCRequestHandle request,
-                                OCMethod method,
-                                OCDevAddr *endpoint,
-                                OCResourceHandle resource,
-                                char *queryBuf,
-                                uint8_t *payload,
-                                size_t payloadSize,
-                                uint8_t numVendorOptions,
-                                OCHeaderOption *vendorOptions,
-                                OCObserveAction observeAction,
-                                OCObservationId observeID);
+        OCEntityHandlerRequest * entityHandlerRequest,
+        OCRequestHandle request,
+        OCMethod method,
+        OCDevAddr *endpoint,
+        OCResourceHandle resource,
+        char * queryBuf,
+        OCPayloadType payloadType,
+        uint8_t * payload,
+        size_t payloadSize,
+        uint8_t numVendorOptions,
+        OCHeaderOption * vendorOptions,
+        OCObserveAction observeAction,
+        OCObservationId observeID,
+        uint16_t messageID);
 
 /**
  * Find a server request in the server request list and delete