1 /******************************************************************
3 * Copyright 2014 Samsung Electronics All Rights Reserved.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 ******************************************************************/
21 * @file camessagehandler.h
22 * @brief This file contains message functionality.
25 #ifndef __CA_MESSAGE_HANDLER_H_
26 #define __CA_MESSAGE_HANDLER_H_
37 * @brief Detaches control from the caller for sending unicast request
38 * @param endpoint [IN] endpoint information where the data has to be sent
39 * @param request [IN] request that needs to be sent
40 * @return CA_STATUS_OK or ERROR CODES ( CAResult_t error codes in cacommon.h)
42 CAResult_t CADetachRequestMessage(const CARemoteEndpoint_t *endpoint,
43 const CARequestInfo_t *request);
46 * @brief Detaches control from the caller for sending multicast request
47 * @param endpoint [IN] endpoint information where the data has to be sent
48 * @param request [IN] request that needs to be sent
49 * @return CA_STATUS_OK or ERROR CODES ( CAResult_t error codes in cacommon.h)
51 CAResult_t CADetachRequestToAllMessage(const CAGroupEndpoint_t* object,
52 const CARequestInfo_t* request);
55 * @brief Detaches control from the caller for sending response
56 * @param endpoint [IN] endpoint information where the data has to be sent
57 * @param response [IN] request that needs to be sent
58 * @return CA_STATUS_OK or ERROR CODES ( CAResult_t error codes in cacommon.h)
60 CAResult_t CADetachResponseMessage(const CARemoteEndpoint_t *endpoint,
61 const CAResponseInfo_t *response);
64 * @brief Detaches control from the caller for sending request
65 * @param resourceUri [IN] resource uri that needs to be sent in the request
66 * @param token [IN] token information of the request
67 * @param options [IN] header options that need to be append in the request
68 * @param numOptions [IN] number of options be appended
69 * @return CA_STATUS_OK or ERROR CODES ( CAResult_t error codes in cacommon.h)
71 CAResult_t CADetachMessageResourceUri(const CAURI_t resourceUri, const CAToken_t token,
72 const CAHeaderOption_t* options, uint8_t numOptions);
75 * @brief Setting the request and response callbacks for network packets
76 * @param ReqHandler [IN] callback for receiving the requests
77 * @param RespHandler [IN] callback for receiving the response
80 void CASetRequestResponseCallbacks(CARequestCallback ReqHandler,
81 CAResponseCallback RespHandler);
84 * @brief Initialize the message handler by starting thread pool and initializing the send and reive queue
85 * @return CA_STATUS_OK or ERROR CODES ( CAResult_t error codes in cacommon.h)
87 CAResult_t CAInitializeMessageHandler();
90 * @brief Terminate the message handler by stopping the thread pool and destroying the queues
91 * @return CA_STATUS_OK or ERROR CODES ( CAResult_t error codes in cacommon.h)
93 void CATerminateMessageHandler();
96 * @brief Handler for receiving request and response callback in singled thread model
98 void CAHandleRequestResponseCallbacks();
104 #endif //#ifndef __CA_MESSAGE_HANDLER_H_