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;
}
示例#2
0
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");
}