* @param[in,out] obsListLen Length if Observation ID list.
* @param[in] gatewayTable Gateway Routing Table.
*/
-void RTMGetObserverList(OCObservationId **obsList, uint8_t *obsListLen,
+void RTMGetObserverList(OCObservationId **obsList, uint32_t *obsListLen,
const u_linklist_t *gatewayTable);
/**
RM_NULL_CHECK_WITH_RET(payload, TAG, "payload");
OCObservationId *obsList = NULL;
- uint8_t obsLen = 0;
+ uint32_t obsLen = 0;
// Get the complete observer list.
RTMGetObserverList(&obsList, &obsLen, g_routingGatewayTable);
OCStackResult result = OC_STACK_OK;
*/
#define RM_TAG "OIC_RM_RAP"
-
-/**
- * Initial Length of observer list.
- */
-#define MAX_OBSERVER_LIST_LENGTH 10
-
static const uint64_t USECS_PER_SEC = 1000000;
OCStackResult RTMInitialize(u_linklist_t **gatewayTable, u_linklist_t **endpointTable)
return NULL;
}
-void RTMGetObserverList(OCObservationId **obsList, uint8_t *obsListLen,
+void RTMGetObserverList(OCObservationId **obsList, uint32_t *obsListLen,
const u_linklist_t *gatewayTable)
{
OIC_LOG(DEBUG, TAG, "IN");
RM_NULL_CHECK_VOID(gatewayTable, TAG, "gatewayTable");
RM_NULL_CHECK_VOID(obsList, TAG, "obsList");
- *obsList = (OCObservationId *) OICCalloc(MAX_OBSERVER_LIST_LENGTH, sizeof(OCObservationId));
+ *obsList = (OCObservationId *) OICCalloc(u_linklist_length(gatewayTable),
+ sizeof(OCObservationId));
if (!(*obsList))
{
OIC_LOG(ERROR, TAG, "out of memory");
+ *obsListLen = 0;
return;
}
u_linklist_iterator_t *iterTable = NULL;
u_linklist_init_iterator(gatewayTable, &iterTable);
- uint8_t len = 0;
+ uint32_t len = 0;
while (NULL != iterTable)
{
RTMGatewayEntry_t *entry = u_linklist_get_data(iterTable);
*(*obsList + len) = destCheck->observerId;
len++;
}
- if (MAX_OBSERVER_LIST_LENGTH < len)
- {
- *obsList = (OCObservationId *) OICRealloc((void *)*obsList,
- (sizeof(OCObservationId) * (len + 1)));
- }
}
u_linklist_get_next(&iterTable);
}