c_bool
v_deliveryServiceUnSubscribe(
    v_deliveryService _this,
    v_partition d)
{
    assert(C_TYPECHECK(_this,v_deliveryService));

    return v_readerWalkEntries(v_reader(_this), unsubscribe, d);
}
Exemple #2
0
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);
    }
}
Exemple #3
0
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);
}
Exemple #4
0
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);
}
Exemple #5
0
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;
}
Exemple #6
0
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));
}
Exemple #7
0
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;
}