* @param[in] endpoint network endpoint description.
* @param[in] data Data received from remote OIC device.
* @param[in] dataLength Length of data in bytes.
+ * @return ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
* @pre Callback must be registered using CAIPSetPacketReceiveCallback().
*/
-typedef void (*CATCPPacketReceivedCallback)(const CASecureEndpoint_t *endpoint,
- const void *data,
- size_t dataLength);
+typedef CAResult_t (*CATCPPacketReceivedCallback)(const CASecureEndpoint_t *endpoint,
+ const void *data,
+ size_t dataLength);
/**
* Callback to notify error in the TCP adapter.
*
* @param[in] endpoint network endpoint description.
* @param[in] isConnected Whether keepalive message needs to be sent.
+ * @param[in] isClient Host Mode of Operation.
* @see Callback must be registered using CATCPSetKeepAliveCallback().
*/
-typedef void (*CATCPConnectionHandleCallback)(const CAEndpoint_t *endpoint, bool isConnected);
+typedef void (*CATCPConnectionHandleCallback)(const CAEndpoint_t *endpoint, bool isConnected,
+ bool isClient);
/**
* set error callback to notify error in TCP adapter.
* Connect to TCP Server.
*
* @param[in] endpoint remote endpoint information.
- * @return TCP Session Information structure.
+ * @return Created socket file descriptor.
*/
-CATCPSessionInfo_t *CAConnectTCPSession(const CAEndpoint_t *endpoint);
+CASocketFd_t CAConnectTCPSession(const CAEndpoint_t *endpoint);
/**
* Disconnect from TCP Server.
*
- * @param[in] svritem TCP session information.
* @param[in] index current session index in list.
* @return ::CA_STATUS_OK or Appropriate error code.
*/
-CAResult_t CADisconnectTCPSession(CATCPSessionInfo_t *svritem, size_t index);
+CAResult_t CADisconnectTCPSession(size_t index);
/**
* Disconnect all connection from TCP Server.
CATCPSessionInfo_t *CAGetSessionInfoFromFD(int fd, size_t *index);
/**
+ * Get socket file descriptor from remote device information.
+ *
+ * @param[in] endpoint Remote Endpoint information (such as ipaddress,
+ * port, reference uri and transport type) to
+ * which the unicast data has to be sent.
+ * @return Created socket file descriptor.
+ */
+CASocketFd_t CAGetSocketFDFromEndpoint(const CAEndpoint_t *endpoint);
+
+/**
* Find the session with endpoint info and remove it from list.
*
- * @param[in] endpoint Remote Endpoint information (like ipaddress,
+ * @param[in] endpoint Remote Endpoint information (such as ipaddress,
* port, reference uri and transport type) to
* which the unicast data has to be sent.
* @return ::CA_STATUS_OK or Appropriate error code.
*/
CAResult_t CASearchAndDeleteTCPSession(const CAEndpoint_t *endpoint);
+
+/**
+ * Abort TCP sessions which are in progress of connecting with servers.
+ */
+void CATCPCloseInProgressConnections();
+
/**
* Get total payload length from CoAP over TCP header.
*
*/
size_t CACheckPayloadLengthFromHeader(const void *data, size_t dlen);
+/**
+ * Construct CoAP header and payload from buffer
+ *
+ * @param[in] svritem - used socket, buffer, current received message length and protocol
+ * @param[in/out] data - data buffer, this value is updated as data is copied to svritem
+ * @param[in/out] dataLength - length of data, this value decreased as data is copied to svritem
+ * @return - CA_STATUS_OK or appropriate error code
+ */
+CAResult_t CAConstructCoAP(CATCPSessionInfo_t *svritem, unsigned char **data,
+ size_t *dataLength);
+
+/**
+ * Clean socket state data
+ *
+ * @param[in/out] svritem - socket state data
+ */
+void CACleanData(CATCPSessionInfo_t *svritem);
+
+/**
+ * Create a mutex object.
+ *
+ * @return ::CA_STATUS_OK or Appropriate error code.
+ */
+CAResult_t CATCPCreateMutex();
+
+/**
+ * Close a mutex object.
+ */
+void CATCPDestroyMutex();
+
+/**
+ * Initialize a condition variable.
+ *
+ * @return ::CA_STATUS_OK or Appropriate error code.
+ */
+CAResult_t CATCPCreateCond();
+
+/**
+ * Destroy condition variable state.
+ */
+void CATCPDestroyCond();
+
#ifdef __cplusplus
}
#endif
#endif /* CA_TCP_INTERFACE_H_ */
+