1 //******************************************************************
3 // Copyright 2014 Samsung Electronics All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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 #include "virtualResource.h"
23 RequestHandleList *createRequestHandleList()
25 RequestHandleList *requestHandleList = (RequestHandleList*)malloc(sizeof(RequestHandleList));
26 if(!requestHandleList)
28 OC_LOG(DEBUG, RH_TAG,"Request Handle List Creation Fail.");
32 requestHandleList->headerNode = NULL;
33 requestHandleList->tailNode = NULL;
36 return requestHandleList;
39 RequestHandle *createRequestHandle()
41 RequestHandle *requestHandle = (RequestHandle*)malloc(sizeof(RequestHandle));
44 OC_LOG(DEBUG, RH_TAG,"Request Handle Creation Fail.");
48 requestHandle->requestHandle[OIC_REQUEST_BY_CLIENT] = NULL;
49 requestHandle->requestHandle[OIC_REQUEST_BY_COORDINATOR] = NULL;
50 requestHandle->resourceHandle = NULL;
52 requestHandle->isAliveCheck = 0;
54 requestHandle->next = NULL;
60 OCStackResult insertRequestHandle(RequestHandleList *requestHandleList,
61 RequestHandle *requestHandle)
63 if(requestHandleList == NULL || requestHandle == NULL)
65 return OC_STACK_INVALID_PARAM;
68 if(requestHandleList->headerNode == NULL)
70 requestHandleList->headerNode = requestHandle;
71 requestHandleList->tailNode = requestHandle;
75 requestHandleList->tailNode->next = requestHandle;
76 requestHandleList->tailNode = requestHandle;
82 OCStackResult deleteRequestHandleFromList(RequestHandleList *requestHandleList,
83 RequestHandle *requestHandle)
85 if(requestHandleList == NULL || requestHandle == NULL)
87 OC_LOG(DEBUG, RH_TAG,"Delete Request Handle : invalid parameter.");
88 return OC_STACK_INVALID_PARAM;
90 if(requestHandleList->headerNode == NULL)
92 OC_LOG(DEBUG, RH_TAG,"Delete Request Handle : Empty Request Handle List.");
93 return OC_STACK_ERROR;
96 if(requestHandle == requestHandleList->headerNode)
98 requestHandleList->headerNode = requestHandleList->headerNode->next;
99 requestHandle->next = NULL;
100 return destroyRequestHandle(requestHandle);
103 RequestHandle *preNode = requestHandleList->headerNode;
104 RequestHandle *curNode = preNode->next;
105 while(curNode != NULL)
107 if(curNode == requestHandle)
109 if(curNode == requestHandleList->tailNode)
111 requestHandleList->tailNode = preNode;
112 preNode->next = NULL;
116 preNode->next = curNode->next;
118 requestHandle->next = NULL;
119 return destroyRequestHandle(requestHandle);
122 curNode = curNode->next;
125 return OC_STACK_ERROR;
128 OCStackResult destroyRequestHandle(RequestHandle *requestHandle)
132 if(requestHandle->next)
134 // destroyRequestHandle(requestHandle->next);
135 requestHandle->next = NULL;
138 requestHandle->requestHandle[OIC_REQUEST_BY_CLIENT] = NULL;
139 requestHandle->requestHandle[OIC_REQUEST_BY_COORDINATOR] = NULL;
141 requestHandle->isAliveCheck = 0;
147 return OC_STACK_INVALID_PARAM;
153 OCStackResult destroyRequestHandleList(RequestHandleList *requestHandleList){
154 if(requestHandleList)
156 while(requestHandleList->headerNode)
158 deleteRequestHandleFromList(requestHandleList,requestHandleList->headerNode);
160 free(requestHandleList);
163 return OC_STACK_INVALID_PARAM;
169 RequestHandle *findRequestHandle(RequestHandleList *requestHandleList,
170 OCDoHandle handle, OICResourceCoordinatorParamType paramType)
172 if(requestHandleList == NULL || handle == NULL)
174 OC_LOG(DEBUG, RH_TAG,"Find Virtual Resource : invalid parameter.");
177 if(requestHandleList->headerNode == NULL)
179 OC_LOG(DEBUG, RH_TAG,"Find Virtual Resource : Empty Virtual Resource List.");
183 if(paramType == OIC_REQUEST_BY_CLIENT)
185 RequestHandle *tempRequestHandle = requestHandleList->headerNode;
186 while(tempRequestHandle != NULL)
188 if((OCEntityHandlerRequest*)tempRequestHandle->requestHandle[paramType] == handle)
190 return tempRequestHandle;
192 tempRequestHandle = tempRequestHandle->next;
197 RequestHandle *tempRequestHandle = requestHandleList->headerNode;
198 while(tempRequestHandle != NULL)
200 if((OCDoHandle)tempRequestHandle->requestHandle[paramType] == handle)
202 return tempRequestHandle;
204 tempRequestHandle = tempRequestHandle->next;