@Override public GetMoreMessage decode(ByteBuf buffer, RequestBaseMessage requestBaseMessage) throws InvalidNamespaceException, InvalidBsonException { try { buffer.skipBytes(4); String fullCollectionName = stringReader.readCString(buffer, true); int numberToReturn = buffer.readInt(); long cursorId = buffer.readLong(); //TODO: improve the way database and cache are pooled return new GetMoreMessage( requestBaseMessage, getDatabase(fullCollectionName).intern(), getCollection(fullCollectionName).intern(), numberToReturn, cursorId ); } catch (NettyBsonReaderException ex) { throw new InvalidBsonException(ex); } } }
@Override public void getMore(GetMoreMessage getMoreMessage, MessageReplier messageReplier) { C connection = getConnection(messageReplier); try { Request req = new Request( getMoreMessage.getDatabase(), new ExternalClientInfo(getMoreMessage.getClientAddress(), getMoreMessage.getRequestId()), true, null //Set the requested timeout ); ReplyMessage reply = safeRequestProcessor.getMore(connection, req, messageReplier .getRequestId(), getMoreMessage); messageReplier.replyMessage(reply); } catch (MongoException ex) { errorHandler.handleMongodbException(connection, messageReplier.getRequestId(), false, ex); } }