Exemplo n.º 1
0
static PluginCred_t *add_plugincred_node (IdentityHandle_t id)
{
	PluginCred_t *node;
	
	init_plugincred_list ();

	if (!(node = get_plugincred_node (id))) {
		if (!(node = malloc (sizeof (PluginCred_t)))) {
			exit (1);
		} else {
			node->id = id;
			node->name = NULL;
			node->certificate = NULL;
			node->cert_len = 0;
			node->key = NULL;
			node->key_len = 0;
			LIST_ADD_HEAD (list, *node);
		}
	}
#ifdef SP_CRED_LOG
	log_printf (SEC_ID, 0, "SP_CRED: Add node (%p) [%d] to credential list\r\n",(void *) node, id);
#endif
	return (node);
}
Exemplo n.º 2
0
static void _ies_task_dispatch_message(ilm_struct *pIlm)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    srv_ies_ilm_job_request     *pReq;
    srv_ies_job                 *pJob;
    srv_ies_job                 *pLow;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    switch(pIlm->msg_id)
    {
    case MSG_ID_IES_JOB_REQ:
        pReq = (srv_ies_ilm_job_request*)pIlm->local_para_ptr;
        ASSERT(NULL != pReq);

        pJob = pReq->pJob;
        ASSERT(NULL != pJob);

        ASSERT(KAL_FALSE == g_srv_ies_job_deinit);

        if(!_srv_ies_job_compare_seq_num(pReq->seqNum, pJob->seqNum))
        {
            kal_trace(MOD_IES, TRACE_GROUP_2, "_ies_task_dispatch_message got inconsistent sequence number %d, %d", pReq->seqNum, pReq->pJob->seqNum);
            break;
        }

        if (SRV_IES_JOB_REQUEST_CANCEL == pReq->type)
        {          
            if (!LIST_EMPTY(((srv_ies_list_head_struct*)pJob)))
            {
                LIST_DEL(((srv_ies_list_head_struct*)pJob));
            }
            _ies_task_job_handle_cancel(pJob);

            if (pJob == g_ies_task_context.pJob)
            {
                g_ies_task_context.pJob = NULL;
            }
        }
        else
        {
            ASSERT(SRV_IES_JOB_REQUEST_START == pReq->type);

            ASSERT(SRV_IES_JOB_STATE_FINISHED != pJob->state);

            if (g_ies_task_context.pJob)
            {
                if (g_ies_task_context.pJob->jobType > pJob->jobType)
                {
                    pLow = g_ies_task_context.pJob;
                    g_ies_task_context.pJob = pJob;

                    ASSERT(SRV_IES_JOB_STATE_FINISHED != pLow->state);

                    switch(pLow->jobType)
                    {
                        case SRV_IES_JOB_TYPE_RENDER_PREVIEW:
                        case SRV_IES_JOB_TYPE_RENDER_BUFFER:
                        case SRV_IES_JOB_TYPE_RENDER_FILE:
                            LIST_ADD_HEAD(&(g_ies_task_context.normal), (srv_ies_list_head_struct*)pLow);
                            break;
                        case SRV_IES_JOB_TYPE_CREATE_META:
                            LIST_ADD_HEAD(&(g_ies_task_context.lowest), (srv_ies_list_head_struct*)pLow);
                            break;
                        default:
                            ASSERT(0);
                    }
                }
                else
                {
                    pLow = pJob;

                    switch(pLow->jobType)
                    {
                        case SRV_IES_JOB_TYPE_RENDER_PREVIEW:
                        case SRV_IES_JOB_TYPE_RENDER_BUFFER:
                        case SRV_IES_JOB_TYPE_RENDER_FILE:
                            LIST_ADD_TAIL(&(g_ies_task_context.normal), (srv_ies_list_head_struct*)pLow);
                            break;
                        case SRV_IES_JOB_TYPE_CREATE_META:
                            LIST_ADD_TAIL(&(g_ies_task_context.lowest), (srv_ies_list_head_struct*)pLow);
                            break;
                        default:
                            ASSERT(0);
                    }

                }

                kal_take_mutex(g_srv_ies_job_mutex);
                if (SRV_IES_JOB_STATE_CANCELLED != pLow->state)
                {
                    pLow->state = SRV_IES_JOB_STATE_PENDING;
                }
                kal_give_mutex(g_srv_ies_job_mutex);
            }
            else
            {
                ASSERT(SRV_IES_JOB_STATE_FINISHED != pJob->state);
                g_ies_task_context.pJob = pJob;
            }

            if (_ies_task_job_handle_start(g_ies_task_context.pJob))
            {
                g_ies_task_context.pJob = NULL;
            }
        }
        break;
    default:
        break;
    }
}