CAResult_t CAInitializeMessageHandler() { OIC_LOG(DEBUG, TAG, "IN"); CASetPacketReceivedCallback(CAReceivedPacketCallback); CASetNetworkChangeCallback(CANetworkChangedCallback); // retransmission initialize CARetransmissionInitialize(&g_retransmissionContext, NULL, CASendUnicastData, CATimeoutCallback, NULL); CAInitializeAdapters(NULL); OIC_LOG(DEBUG, TAG, "OUT"); return CA_STATUS_OK; }
CAResult_t CAInitializeMessageHandler() { CASetPacketReceivedCallback(CAReceivedPacketCallback); CASetNetworkChangeCallback(CANetworkChangedCallback); CASetErrorHandleCallback(CAErrorHandler); #ifndef SINGLE_THREAD // create thread pool CAResult_t res = ca_thread_pool_init(MAX_THREAD_POOL_SIZE, &g_threadPoolHandle); if (CA_STATUS_OK != res) { OIC_LOG(ERROR, TAG, "thread pool initialize error."); return res; } // send thread initialize if (CA_STATUS_OK != CAQueueingThreadInitialize(&g_sendThread, g_threadPoolHandle, CASendThreadProcess, CADestroyData)) { OIC_LOG(ERROR, TAG, "Failed to Initialize send queue thread"); return CA_STATUS_FAILED; } // start send thread res = CAQueueingThreadStart(&g_sendThread); if (CA_STATUS_OK != res) { OIC_LOG(ERROR, TAG, "thread start error(send thread)."); ca_thread_pool_free(g_threadPoolHandle); g_threadPoolHandle = NULL; return res; } // receive thread initialize if (CA_STATUS_OK != CAQueueingThreadInitialize(&g_receiveThread, g_threadPoolHandle, CAReceiveThreadProcess, CADestroyData)) { OIC_LOG(ERROR, TAG, "Failed to Initialize receive queue thread"); return CA_STATUS_FAILED; } #ifndef SINGLE_HANDLE // This will be enabled when RI supports multi threading // start receive thread res = CAQueueingThreadStart(&g_receiveThread); if (res != CA_STATUS_OK) { OIC_LOG(ERROR, TAG, "thread start error(receive thread)."); return res; } #endif /* SINGLE_HANDLE */ // retransmission initialize CARetransmissionInitialize(&g_retransmissionContext, g_threadPoolHandle, CASendUnicastData, CATimeoutCallback, NULL); #ifdef WITH_BWT // block-wise transfer initialize CAInitializeBlockWiseTransfer(CAAddDataToSendThread, CAAddDataToReceiveThread); #endif // start retransmission res = CARetransmissionStart(&g_retransmissionContext); if (CA_STATUS_OK != res) { OIC_LOG(ERROR, TAG, "thread start error(retransmission thread)."); return res; } // initialize interface adapters by controller CAInitializeAdapters(g_threadPoolHandle); #else // retransmission initialize CARetransmissionInitialize(&g_retransmissionContext, NULL, CASendUnicastData, CATimeoutCallback, NULL); CAInitializeAdapters(); #endif return CA_STATUS_OK; }