virtual void reply( Message& query , Message& toSend, MSGID responseTo ){ _reply = toSend; _reply.data->id = nextMessageId(); _reply.data->responseTo = responseTo; uassert( 10274 , "pipelining requests doesn't work yet" , query.data->id == _cur.data->id ); }
void AsyncMessagingPort::asyncSend(Message& toSend, int responseTo) { //TODO: get rid of nextMessageId toSend.header().setId(nextMessageId()); toSend.header().setResponseTo(responseTo); //TODO: Piggyback data is added here toSend.isSingleData() ? asyncSendSingle(toSend) : asyncSendMulti(toSend); }
std::unique_ptr<Message> NetworkInterfaceASIO::_messageFromRequest( const RemoteCommandRequest& request, rpc::Protocol protocol) { BSONObj query = request.cmdObj; auto requestBuilder = rpc::makeRequestBuilder(protocol); // TODO: handle metadata writers auto toSend = rpc::makeRequestBuilder(protocol) ->setDatabase(request.dbname) .setCommandName(request.cmdObj.firstElementFieldName()) .setMetadata(request.metadata) .setCommandArgs(request.cmdObj) .done(); toSend->header().setId(nextMessageId()); toSend->header().setResponseTo(0); return toSend; }
void NetworkInterfaceASIO::_messageFromRequest(const RemoteCommandRequest& request, Message* toSend, bool useOpCommand) { BSONObj query = request.cmdObj; invariant(query.isValid()); // TODO: Once OP_COMMAND work is complete, // look at client to see if it supports OP_COMMAND. // TODO: Investigate whether we can use CommandRequestBuilder here. BufBuilder b; b.appendNum(0); // opts b.appendStr(request.dbname + ".$cmd"); b.appendNum(0); // toSkip b.appendNum(1); // toReturn, don't care about responses query.appendSelfToBufBuilder(b); // TODO: If AsyncOp can own this buffer, we can avoid copying it in setData(). toSend->setData(dbQuery, b.buf(), b.len()); toSend->header().setId(nextMessageId()); toSend->header().setResponseTo(0); }
unsigned ConsoleMessage::assignMessageId() { if (!m_messageId) m_messageId = nextMessageId(); return m_messageId; }