private QueryOptions getQueryOptions(int flags) { EnumSet<QueryOption> qoSet = EnumSet.noneOf(QueryOption.class); if (EnumInt32FlagsUtil.isActive(Flag.TAILABLE_CURSOR, flags)) { qoSet.add(QueryOption.TAILABLE_CURSOR); } if (EnumInt32FlagsUtil.isActive(Flag.SLAVE_OK, flags)) { qoSet.add(QueryOption.SLAVE_OK); } if (EnumInt32FlagsUtil.isActive(Flag.OPLOG_REPLAY, flags)) { qoSet.add(QueryOption.OPLOG_REPLAY); } if (EnumInt32FlagsUtil.isActive(Flag.NO_CURSOR_TIMEOUT, flags)) { qoSet.add(QueryOption.NO_CURSOR_TIMEOUT); } if (EnumInt32FlagsUtil.isActive(Flag.AWAIT_DATA, flags)) { qoSet.add(QueryOption.AWAIT_DATA); } if (EnumInt32FlagsUtil.isActive(Flag.EXHAUST, flags)) { qoSet.add(QueryOption.EXHAUST); } if (EnumInt32FlagsUtil.isActive(Flag.PARTIAL, flags)) { qoSet.add(QueryOption.PARTIAL); } return new QueryOptions(qoSet); }
queryMessage.getDatabase(), new ExternalClientInfo(queryMessage.getClientAddress(), queryMessage.getClientPort()), queryMessage.getQueryOptions().isSlaveOk(),
.projection(MongoBsonTranslator.translate(projection)) .cursorType(toCursorType(queryOptions)) .noCursorTimeout(queryOptions.isNoCursorTimeout()) .oplogReplay(queryOptions.isOplogReplay()); return new WrappedMongoCursor( database, collection, DEFAULT_MAX_BATCH_SIZE, queryOptions.isTailable(), findIterable.iterator() );
.setNumberToSkip(queryMessage.getNumberToSkip()) .setLimit(queryMessage.getNumberToReturn()) .setAwaitData(queryOptions.isAwaitData()) .setExhaust(queryOptions.isExhaust()) .setNoCursorTimeout(queryOptions.isNoCursorTimeout()) .setOplogReplay(queryOptions.isOplogReplay()) .setPartial(queryOptions.isPartial()) .setSlaveOk(queryOptions.isSlaveOk()) .setTailable(queryOptions.isTailable());
private CursorType toCursorType(QueryOptions queryOptions) { if (!queryOptions.isTailable()) { return CursorType.NonTailable; } if (queryOptions.isAwaitData()) { return CursorType.TailableAwait; } return CursorType.Tailable; }