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; }
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; }
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; }