예제 #1
0
StatusWith<boost::optional<BSONObj>> RouterStageSkip::next() {
    while (_skippedSoFar < _skip) {
        auto next = getChildStage()->next();
        if (!next.isOK()) {
            return next;
        }

        if (!next.getValue()) {
            return next;
        }

        ++_skippedSoFar;
    }

    return getChildStage()->next();
}
예제 #2
0
StatusWith<boost::optional<BSONObj>> RouterStageLimit::next() {
    if (_returnedSoFar >= _limit) {
        return {boost::none};
    }

    auto childResult = getChildStage()->next();
    if (!childResult.isOK()) {
        return childResult;
    }

    if (childResult.getValue()) {
        ++_returnedSoFar;
    }
    return childResult;
}
예제 #3
0
StatusWith<boost::optional<BSONObj>> RouterStageRemoveSortKey::next() {
    auto childResult = getChildStage()->next();
    if (!childResult.isOK() || !childResult.getValue()) {
        return childResult;
    }

    BSONObjBuilder builder;
    for (BSONElement elt : *childResult.getValue()) {
        if (!str::equals(elt.fieldName(), ClusterClientCursorParams::kSortKeyField)) {
            builder.append(elt);
        }
    }

    return {builder.obj()};
}
예제 #4
0
StatusWith<ClusterQueryResult> RouterStageLimit::next(RouterExecStage::ExecContext execContext) {
    if (_returnedSoFar >= _limit) {
        return {ClusterQueryResult()};
    }

    auto childResult = getChildStage()->next(execContext);
    if (!childResult.isOK()) {
        return childResult;
    }

    if (!childResult.getValue().isEOF()) {
        ++_returnedSoFar;
    }
    return childResult;
}
예제 #5
0
void RouterStageSkip::kill() {
    getChildStage()->kill();
}
예제 #6
0
Status RouterStageLimit::setAwaitDataTimeout(Milliseconds awaitDataTimeout) {
    return getChildStage()->setAwaitDataTimeout(awaitDataTimeout);
}
예제 #7
0
bool RouterStageLimit::remotesExhausted() {
    return getChildStage()->remotesExhausted();
}
예제 #8
0
void RouterStageLimit::kill() {
    getChildStage()->kill();
}
예제 #9
0
bool RouterStageRemoveSortKey::remotesExhausted() {
    return getChildStage()->remotesExhausted();
}
예제 #10
0
void RouterStageRemoveSortKey::kill() {
    getChildStage()->kill();
}