void * NSNotificationSchedule(void *ptr) { if (ptr == NULL) { NS_LOG(DEBUG, "Create NSNotifiactionSchedule"); } while (NSIsRunning[NOTIFICATION_SCHEDULER]) { sem_wait(&NSSemaphore[NOTIFICATION_SCHEDULER]); pthread_mutex_lock(&NSMutex[NOTIFICATION_SCHEDULER]); if (NSHeadMsg[NOTIFICATION_SCHEDULER] != NULL) { NSTask *node = NSHeadMsg[NOTIFICATION_SCHEDULER]; NSHeadMsg[NOTIFICATION_SCHEDULER] = node->nextTask; switch (node->taskType) { case TASK_SEND_NOTIFICATION: { NS_LOG(DEBUG, "CASE TASK_SEND_NOTIFICATION : "); NSSendNotification((NSMessage *)node->taskData); NSFreeMessage((NSMessage *)node->taskData); } break; case TASK_SEND_READ: NS_LOG(DEBUG, "CASE TASK_SEND_READ : "); NSSendSync((NSSyncInfo*) node->taskData); NSFreeSync((NSSyncInfo*) node->taskData); break; case TASK_RECV_READ: NS_LOG(DEBUG, "CASE TASK_RECV_READ : "); NSSendSync((NSSyncInfo*) node->taskData); NSPushQueue(CALLBACK_RESPONSE_SCHEDULER, TASK_CB_SYNC, node->taskData); break; default: NS_LOG(ERROR, "Unknown type message"); break; } NSOICFree(node); } pthread_mutex_unlock(&NSMutex[NOTIFICATION_SCHEDULER]); } NS_LOG(INFO, "Destroy NSNotificationSchedule"); return NULL; }
void NSFreeData(NSSchedulerType type, NSTask * task) { NS_LOG(DEBUG, "NSFreeData - IN"); if (type == CALLBACK_RESPONSE_SCHEDULER) { switch (task->taskType) { case TASK_CB_SUBSCRIPTION: NS_LOG(DEBUG, "CASE TASK_CB_SUBSCRIPTION : Free"); NSFreeOCEntityHandlerRequest((OCEntityHandlerRequest*) task->taskData); break; case TASK_CB_SYNC: NS_LOG(DEBUG, "CASE TASK_CB_SYNC : Free"); NSFreeSync((NSSyncInfo*) task->taskData); break; default: NS_LOG(DEBUG, "No Task Type"); break; } } else if (type == DISCOVERY_SCHEDULER) { switch (task->taskType) { case TASK_START_PRESENCE: case TASK_STOP_PRESENCE: case TASK_REGISTER_RESOURCE: NS_LOG(DEBUG, "Not required Free"); break; default: NS_LOG(DEBUG, "No Task Type"); break; } } else if (type == SUBSCRIPTION_SCHEDULER) { switch (task->taskType) { case TASK_SEND_POLICY: case TASK_RECV_SUBSCRIPTION: case TASK_RECV_UNSUBSCRIPTION: case TASK_SYNC_SUBSCRIPTION: NS_LOG(DEBUG, "NSFreeOCEntityHandlerRequest : Free "); NSFreeOCEntityHandlerRequest((OCEntityHandlerRequest*) task->taskData); break; case TASK_SEND_ALLOW: case TASK_SEND_DENY: NS_LOG(DEBUG, "NSFreeConsumer : Free "); NSFreeConsumer((NSConsumer *) task->taskData); break; default: NS_LOG(DEBUG, "No Task Type"); break; } } else if (type == NOTIFICATION_SCHEDULER) { switch (task->taskType) { case TASK_SEND_NOTIFICATION: { NS_LOG(DEBUG, "NSFreeMessage : Free "); NSFreeMessage((NSMessage *)task->taskData); break; } case TASK_SEND_READ: case TASK_RECV_READ: NS_LOG(DEBUG, "NSFreeSync : Free "); NSFreeSync((NSSyncInfo*) task->taskData); break; default: NS_LOG(DEBUG, "No Task Type"); break; } } NS_LOG(DEBUG, "NSFreeData - OUT"); }