gapi_returnCode_t gapi_publisher_delete_contained_entities ( gapi_publisher _this) { _Publisher publisher; _DataWriter dataWriter; gapi_dataWriter handle; gapi_returnCode_t result = GAPI_RETCODE_OK; c_iter writers; u_writer w; void *userData; publisher = gapi_publisherClaim(_this, &result); if ( publisher != NULL ) { /* delete all datawriters in the datawriterSet */ writers = u_publisherLookupWriters(U_PUBLISHER_GET(publisher),NULL); w = c_iterTakeFirst(writers); while (w) { handle = u_entityGetUserData(u_entity(w)); dataWriter = gapi_dataWriterClaimNB(handle,&result); if (dataWriter) { userData = _ObjectGetUserData(_Object(dataWriter)); _DataWriterFree(dataWriter); } w = c_iterTakeFirst(writers); } c_iterFree(writers); _EntityRelease(publisher); } else { result = GAPI_RETCODE_BAD_PARAMETER; } return result; }
gapi_dataReader gapi_subscriber_lookup_datareader ( gapi_subscriber _this, const gapi_char *topic_name) { _Subscriber subscriber; gapi_dataReader handle = NULL; u_dataReader found; c_iter iter; subscriber = gapi_subscriberClaim(_this, NULL); if (subscriber) { iter = u_subscriberLookupReaders(U_SUBSCRIBER_GET(subscriber), topic_name); if (iter) { found = c_iterTakeFirst(iter); if (found) { handle = u_entityGetUserData(u_entity(found)); } c_iterFree(iter); } _EntityRelease(subscriber); } return handle; }
gapi_dataWriter gapi_publisher_lookup_datawriter ( gapi_publisher _this, const gapi_char *topic_name) { _Publisher publisher; u_writer found; gapi_dataWriter handle = NULL; c_iter iter; if (topic_name) { publisher = gapi_publisherClaim(_this, NULL); if (publisher) { iter = u_publisherLookupWriters(U_PUBLISHER_GET(publisher), topic_name); if (iter) { found = c_iterTakeFirst(iter); if (found) { handle = u_entityGetUserData(u_entity(found)); } c_iterFree(iter); } _EntityRelease(publisher); } } return handle; }
/* ReturnCode_t * delete_contained_entities(); */ gapi_returnCode_t gapi_dataReaderView_delete_contained_entities ( gapi_dataReaderView _this) { gapi_returnCode_t result = GAPI_RETCODE_OK; _DataReaderView datareaderview; gapi_context context; _Condition condition = NULL; c_iter entities; u_entity e; u_result ur; GAPI_CONTEXT_SET(context, _this, GAPI_METHOD_DELETE_CONTAINED_ENTITIES); if ( _this != NULL ) { datareaderview = gapi_dataReaderViewClaim(_this, &result); if ( datareaderview != NULL ) { if (!gapi_loanRegistry_is_empty(datareaderview->loanRegistry)) { result = GAPI_RETCODE_PRECONDITION_NOT_MET; } else { entities = u_readerLookupQueries(U_READER_GET(datareaderview)); e = c_iterTakeFirst(entities); while (e) { condition = u_entityGetUserData(e); if (condition) { _ObjectReadClaimNotBusy(_Object(condition)); _ConditionFree(condition); } else { if (e == u_entity(datareaderview->uQuery)) { datareaderview->uQuery = NULL; ur = u_queryFree(u_query(e)); if (ur == U_RESULT_OK) { result = GAPI_RETCODE_OK; } else { result = GAPI_RETCODE_BAD_PARAMETER; } } else { assert(condition); result = GAPI_RETCODE_BAD_PARAMETER; } } e = c_iterTakeFirst(entities); } c_iterFree(entities); } _EntityRelease(datareaderview); } else { result = GAPI_RETCODE_ALREADY_DELETED; } } else { result = GAPI_RETCODE_BAD_PARAMETER; } return result; }
gapi_subscriber gapi_dataReader_get_subscriber ( gapi_dataReader _this) { gapi_subscriber subscriber = NULL; _DataReader datareader; u_subscriber uSubscriber; datareader = gapi_dataReaderClaim(_this, NULL); if ( datareader != NULL ) { uSubscriber = u_dataReaderSubscriber(U_DATAREADER_GET(datareader)); subscriber = u_entityGetUserData(u_entity(uSubscriber)); _EntityRelease(datareader); } return subscriber; }
/* Publisher * get_publisher(); */ gapi_publisher gapi_dataWriter_get_publisher ( gapi_dataWriter _this) { _DataWriter datawriter; gapi_publisher publisher = NULL; u_publisher uPublisher; datawriter = gapi_dataWriterClaim(_this, NULL); if ( datawriter != NULL ) { uPublisher = u_writerPublisher(U_WRITER_GET(datawriter)); publisher = u_entityGetUserData(u_entity(uPublisher)); _EntityRelease(datawriter); } return publisher; }
static c_bool trigger_reader( u_dataReader reader, c_voidp arg) { gapi_dataReader handle; _DataReader dataReader; assert(reader); handle = u_entityGetUserData(u_entity(reader)); dataReader = gapi_dataReaderClaim(handle,NULL); if (dataReader) { _DataReaderTriggerNotify(dataReader); _EntityRelease(dataReader); } return TRUE; }
static c_bool check_handle( u_writer writer, struct check_handle_arg *arg) { gapi_object handle; _Entity e; assert(writer); assert(arg); if (!arg->result) { handle = u_entityGetUserData(u_entity(writer)); e = _Entity(gapi_objectPeekUnchecked(handle)); if (e) { arg->result = _EntityHandleEqual(e,arg->handle); } } return !arg->result; }
gapi_returnCode_t _SubscriberDeleteContainedEntities ( _Subscriber _this) { gapi_dataReader handle; gapi_returnCode_t result = GAPI_RETCODE_OK; _DataReader dataReader; c_iter readers; u_dataReader r; gapi_context context; GAPI_CONTEXT_SET(context, _EntityHandle(_this), GAPI_METHOD_DELETE_CONTAINED_ENTITIES); if ( _this ) { readers = u_subscriberLookupReaders(U_SUBSCRIBER_GET(_this),NULL); r = c_iterTakeFirst(readers); while (r) { handle = u_entityGetUserData(u_entity(r)); result = gapi_dataReader_delete_contained_entities(handle); if (result == GAPI_RETCODE_OK) { dataReader = gapi_dataReaderClaimNB(handle,&result); if (dataReader) { if ( _DataReaderPrepareDelete(dataReader, &context) ) { _DataReaderFree(dataReader); } else if (result == GAPI_RETCODE_OK) { result = GAPI_RETCODE_PRECONDITION_NOT_MET; } } } else if (result == GAPI_RETCODE_ALREADY_DELETED) { result = GAPI_RETCODE_OK; } r = c_iterTakeFirst(readers); } c_iterFree(readers); } return result; }
gapi_returnCode_t gapi_dataReader_delete_contained_entities ( gapi_dataReader _this) { gapi_object handle; gapi_returnCode_t result = GAPI_RETCODE_OK; _DataReader datareader; gapi_context context; _Condition condition = NULL; _DataReaderView view = NULL; c_iter entities; u_entity e; u_result ur; GAPI_CONTEXT_SET(context, _this, GAPI_METHOD_DELETE_CONTAINED_ENTITIES); datareader = gapi_dataReaderClaim(_this, &result); if ( datareader != NULL ) { if (!gapi_loanRegistry_is_empty(datareader->loanRegistry)) { result = GAPI_RETCODE_PRECONDITION_NOT_MET; } else { entities = u_readerLookupQueries(U_READER_GET(datareader)); e = c_iterTakeFirst(entities); while (e) { condition = u_entityGetUserData(e); if (condition) { _ObjectReadClaimNotBusy(_Object(condition)); _ConditionFree(condition); } else { assert(condition); result = GAPI_RETCODE_BAD_PARAMETER; } e = c_iterTakeFirst(entities); } c_iterFree(entities); entities = u_dataReaderLookupViews(U_DATAREADER_GET(datareader)); e = c_iterTakeFirst(entities); while (e) { handle = u_entityGetUserData(e); view = _DataReaderView(gapi_conditionClaimNB(handle,&result)); if (view) { _DataReaderViewFree(view); } else { ur = u_dataViewFree(u_dataView(e)); if (ur == U_RESULT_OK) { result = GAPI_RETCODE_OK; } else { result = GAPI_RETCODE_BAD_PARAMETER; } } e = c_iterTakeFirst(entities); } c_iterFree(entities); } _EntityRelease(datareader); } else { result = GAPI_RETCODE_BAD_PARAMETER; } return result; }