+
+#ifdef SINGLE_THREAD
+size_t CAGetTotalLengthFromPacketHeader(const unsigned char *recvBuffer, size_t size)
+{
+ OIC_LOG(DEBUG, TAG, "IN - CAGetTotalLengthFromHeader");
+
+ if (NULL == recvBuffer || !size)
+ {
+ OIC_LOG(ERROR, TAG, "recvBuffer is NULL");
+ return 0;
+ }
+
+ coap_transport_t transport = coap_get_tcp_header_type_from_initbyte(
+ ((unsigned char *)recvBuffer)[0] >> 4);
+ size_t optPaylaodLen = coap_get_length_from_header((unsigned char *)recvBuffer,
+ transport);
+ size_t headerLen = coap_get_tcp_header_length((unsigned char *)recvBuffer);
+
+ OIC_LOG_V(DEBUG, TAG, "option/paylaod length [%d]", optPaylaodLen);
+ OIC_LOG_V(DEBUG, TAG, "header length [%d]", headerLen);
+ OIC_LOG_V(DEBUG, TAG, "total data length [%d]", headerLen + optPaylaodLen);
+
+ OIC_LOG(DEBUG, TAG, "OUT - CAGetTotalLengthFromHeader");
+ return headerLen + optPaylaodLen;
+}
+
+void CAGetTCPHeaderDetails(unsigned char* recvBuffer, coap_transport_t *transport,
+ size_t *headerlen)
+{
+ if (NULL == recvBuffer)
+ {
+ OIC_LOG(ERROR, TAG, "recvBuffer is NULL");
+ return;
+ }
+
+ if (NULL == transport)
+ {
+ OIC_LOG(ERROR, TAG, "transport is NULL");
+ return;
+ }
+
+ if (NULL == headerlen)
+ {
+ OIC_LOG(ERROR, TAG, "headerlen is NULL");
+ return;
+ }
+
+ *transport = coap_get_tcp_header_type_from_initbyte(
+ ((unsigned char *)recvBuffer)[0] >> 4);
+ *headerlen = coap_get_tcp_header_length_for_transport(*transport);
+}
+#endif