예제 #1
0
파일: file.c 프로젝트: Chaduke/bah.mod
boolean OCI_API OCI_FileFree
(
    OCI_File *file
)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_FILE, file, FALSE);
    OCI_CHECK_OBJECT_FETCHED(file, FALSE);

    OCI_FREE(file->dir);
    OCI_FREE(file->name);

    if (file->hstate == OCI_OBJECT_ALLOCATED)
    {
        OCI_DescriptorFree((dvoid *) file->handle, (ub4) OCI_DTYPE_LOB);
    }

    if (file->hstate != OCI_OBJECT_ALLOCATED_ARRAY)
    {
        OCI_FREE(file);
    }

    OCI_RESULT(res);

    return res;
}
예제 #2
0
boolean OCI_API OCI_DequeueFree
(
    OCI_Dequeue *dequeue
)
{
    OCI_CHECK_PTR(OCI_IPC_DEQUEUE, dequeue, FALSE);

    /* Unsubscribe notification if needed */

    if (dequeue->subhp != NULL)
    {
        OCI_DequeueUnsubscribe(dequeue);
    }

    /* free local message  */

    if (dequeue->msg != NULL)
    {
        OCI_MsgFree(dequeue->msg);
    }

    /* free local agent  */

    if (dequeue->agent != NULL)
    {
        OCI_AgentFree(dequeue->agent);
    }

    /* free OCI descriptor */

    OCI_DescriptorFree((dvoid *) dequeue->opth, OCI_DTYPE_AQDEQ_OPTIONS);

    /* free strings  */

    OCI_FREE(dequeue->name);
    OCI_FREE(dequeue->pattern);
    OCI_FREE(dequeue->consumer);

    /* free misc. */

    OCI_FREE(dequeue->agent_list);

    OCI_FREE(dequeue);

    return TRUE;
}
예제 #3
0
파일: msg.c 프로젝트: bradfordw/prophet
boolean OCI_API OCI_MsgFree
(
    OCI_Msg *msg
)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_MSG, msg, FALSE);

    /* free local OCI_Agent object */

    if (msg->sender != NULL)
    {
        OCI_AgentFree(msg->sender);
    }

    /* free internal OCI_Object handle if payload is not RAW */

    if (msg->obj != NULL)
    {
        msg->obj->hstate =  OCI_OBJECT_ALLOCATED;

        OCI_ObjectFree(msg->obj);

        msg->obj = NULL;
    }

    /* free message RAW payload if necessary */

    if ((msg->typinf->tcode == OCI_UNKNOWN)&& ( msg->id != NULL))
    {
        OCI_CALL2
        (
            res, msg->typinf->con,

            OCIRawResize(msg->typinf->con->env, msg->typinf->con->err, 0, (OCIRaw **) &msg->payload)
        )
    }

    /* free message ID */

    if (msg->id != NULL)
    {

        OCI_CALL2
        (
            res, msg->typinf->con,

            OCIRawResize(msg->typinf->con->env, msg->typinf->con->err, 0, (OCIRaw **) &msg->id)
        )
    }

    msg->id = NULL;

    /* free OCI descriptor */

    OCI_DescriptorFree((dvoid *) msg->proph, OCI_DTYPE_AQMSG_PROPERTIES);

    OCI_FREE(msg);

    return res;
}