static void deliveryServiceSubscribe( void *o, void *arg) { v_partition p = v_partition(o); v_deliveryServiceEntry e = v_deliveryServiceEntry(arg); v_kernel kernel; v_group g; assert(C_TYPECHECK(e,v_deliveryServiceEntry)); assert(C_TYPECHECK(p,v_partition)); kernel = v_objectKernel(e); g = v_groupSetCreate(kernel->groupSet,p,e->topic); if(v_groupPartitionAccessMode(g) == V_ACCESS_MODE_READ_WRITE || v_groupPartitionAccessMode(g) == V_ACCESS_MODE_READ) { v_groupAddEntry(g,v_entry(e)); } c_free(g); }
void v_networkReaderEntryNotifyConnected( v_networkReaderEntry entry, const c_char* serviceName) { c_bool allChannelsConnected = FALSE; c_mutexLock(&entry->channelCountdownMutex); assert (entry->channelCountdown > 0); entry->channelCountdown--; if (entry->channelCountdown == 0) { allChannelsConnected = TRUE; } c_mutexUnlock(&entry->channelCountdownMutex); if (allChannelsConnected) { v_groupAddEntry(v_group(entry->group), v_entry(entry)); v_groupNotifyAwareness(v_group(entry->group),serviceName,TRUE); v_groupGetHistoricalData(v_group(entry->group), v_entry(entry)); } }