X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fcsdk%2Fconnectivity%2Finc%2Fcatcpinterface.h;h=dda95e5c25041f4f91af8f9639ce7cacae39cc18;hb=7bcbe1689b9b414d5f857076b3af400d8d8e9b65;hp=3d48bc4b9a01de299aaa01f42dbc39e4a670dd79;hpb=b92495d13aa7e285851a1cfbff18c601844ceea5;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/connectivity/inc/catcpinterface.h b/resource/csdk/connectivity/inc/catcpinterface.h index 3d48bc4..dda95e5 100644 --- a/resource/csdk/connectivity/inc/catcpinterface.h +++ b/resource/csdk/connectivity/inc/catcpinterface.h @@ -44,11 +44,12 @@ extern "C" * @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. @@ -67,9 +68,11 @@ typedef void (*CATCPErrorHandleCallback)(const CAEndpoint_t *endpoint, const voi * * @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. @@ -168,18 +171,17 @@ u_arraylist_t *CATCPGetInterfaceInformation(int desiredIndex); * 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. @@ -214,15 +216,31 @@ size_t CAGetTotalLengthFromHeader(const unsigned char *recvBuffer); 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. * @@ -232,8 +250,51 @@ CAResult_t CASearchAndDeleteTCPSession(const CAEndpoint_t *endpoint); */ 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_ */ +