c_bool v_groupStreamUnSubscribe( v_groupStream stream, v_partition partition) { c_iter list; v_group group; c_bool result; assert(C_TYPECHECK(stream, v_groupStream)); assert(C_TYPECHECK(partition, v_partition)); list = ospl_c_select(stream->groups, 0); group = c_iterTakeFirst(list); result = FALSE; while (group != NULL) { if(strcmp(v_partitionName(partition), v_partitionName(group->partition)) == 0){ result = v_groupStreamUnSubscribeGroup(stream, group); } c_free(group); group = c_iterTakeFirst(list); } c_iterFree(list); return result; }
c_bool v_readerUnSubscribeGroup( v_reader reader, v_group group) { c_bool result; assert(C_TYPECHECK(reader, v_reader)); switch(v_objectKind(reader)) { case K_DATAREADER: result = v_dataReaderUnSubscribeGroup(v_dataReader(reader), group); break; case K_GROUPQUEUE: result = v_groupStreamUnSubscribeGroup(v_groupStream(reader), group); break; case K_NETWORKREADER: result = v_networkReaderUnSubscribeGroup(v_networkReader(reader), group); break; default: OS_REPORT_1(OS_ERROR,"v_readerUnSubscribeGroup failed",0, "illegal reader kind (%d) specified", v_objectKind(reader)); assert(FALSE); result = FALSE; } return result; }