Initial merge-commit of the OIC code. Should successfully do discovery for single...
[platform/upstream/iotivity.git] / csdk / stack / src / occlientcb.c
1 //******************************************************************
2 //
3 // Copyright 2014 Intel Corporation All Rights Reserved.
4 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
5
6
7 #include "occlientcb.h"
8 #include "utlist.h"
9 #include "logger.h"
10 #include <string.h>
11
12 /// Module Name
13 #define MOD_NAME PCF("occlientcb")
14
15 static struct ClientCB *cbList = NULL;
16
17 int AddClientCB(OCCallbackData* cbData, OCToken * token) {
18     ClientCB *cbNode;
19     cbNode = (ClientCB*)malloc(sizeof(ClientCB));
20     if (cbNode) {
21         cbNode->callBack = cbData->cb;
22         cbNode->context = cbData->context;
23         cbNode->token = token;
24         LL_APPEND(cbList, cbNode);
25         return OC_STACK_OK;
26     }
27     return OC_STACK_NO_MEMORY;
28 }
29
30 void DeleteClientCB(ClientCB * cbNode) {
31     LL_DELETE(cbList, cbNode);
32     free(cbNode->token);
33     free(cbNode);
34 }
35
36 ClientCB* GetClientCB(OCToken *token) {
37     ClientCB* out;
38     LL_FOREACH(cbList, out) {
39         if((out->token->tokenLength == token->tokenLength) && (memcmp(out->token->token, token->token, token->tokenLength) == 0) ) {
40             return out;
41         }
42     }
43     OC_LOG(INFO, MOD_NAME, PCF("Callback Not found !!"));
44     return NULL;
45 }
46
47
48 void DeleteClientCBList() {
49     ClientCB* out;
50     ClientCB* tmp;
51     LL_FOREACH_SAFE(cbList, out, tmp) {
52         DeleteClientCB(out);
53     }
54     cbList = NULL;
55 }