c_bool v_deliveryServiceUnSubscribe( v_deliveryService _this, v_partition d) { assert(C_TYPECHECK(_this,v_deliveryService)); return v_readerWalkEntries(v_reader(_this), unsubscribe, d); }
static void readerGetHistoricalData( v_reader r) { assert(C_TYPECHECK(r, v_reader)); if (r->qos->durability.kind != V_DURABILITY_VOLATILE) { v_readerWalkEntries(r, getHistoricalData, NULL); } }
c_bool v_networkReaderUnSubscribeGroup( v_networkReader reader, v_group group) { assert(C_TYPECHECK(reader, v_networkReader)); assert(C_TYPECHECK(group, v_group)); return v_readerWalkEntries(v_reader(reader), (c_action)v_networkReaderEntryUnSubscribeGroup, group); }
c_bool v_networkReaderUnSubscribe( v_networkReader reader, v_partition partition) { assert(C_TYPECHECK(reader, v_networkReader)); assert(C_TYPECHECK(partition, v_partition)); return v_readerWalkEntries(v_reader(reader), (c_action)v_networkReaderEntryUnSubscribe, partition); }
static c_bool lookupReaderByTopic( v_reader reader, c_voidp arg) { struct lookupReaderByTopicArg *a = (struct lookupReaderByTopicArg *)arg; c_bool found = FALSE; if (a->topicName) { found = !v_readerWalkEntries(reader, checkTopic, (c_voidp)a->topicName); } if (found) { a->list = c_iterInsert(a->list, c_keep(reader)); } return TRUE; }
void v_readerFree( v_reader r) { assert(C_TYPECHECK(r,v_reader)); if (r->subscriber != NULL) { v_subscriberRemoveReader(v_subscriber(r->subscriber),r); c_mutexLock(&(v_observer(r)->mutex)); r->subscriber = NULL; c_mutexUnlock(&(v_observer(r)->mutex)); } /* Free all entries */ v_readerWalkEntries(r, entryFree, NULL); /* Call inherited free */ v_collectionFree(v_collection(r)); }
v_networkReaderEntry v_networkReaderLookupEntry( v_networkReader reader, v_group group) { struct v_findEntryArg findEntryArg; assert(v_networkReader(reader) == reader); assert(v_group(group) == group); findEntryArg.group = c_keep(group); findEntryArg.found = NULL; v_readerWalkEntries(v_reader(reader), (c_action)v_networkReaderFindEntry, &findEntryArg); c_free(group); /* Note that the keep has been done in the walk (if any entry was found) */ return findEntryArg.found; }