summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCalvin Chan <calvin.chan.h@gmail.com>2015-08-18 17:20:05 -0400
committerAdam Midvidy <amidvidy@gmail.com>2015-08-24 11:10:22 -0400
commit7000df0193e36e5b47bba762d6f74b03cc0117c4 (patch)
tree321dfb50112b629f690951dc41c51feefe53f84b
parentd62950018b994a989dded40d677ebd578dfcf33d (diff)
downloadmongo-7000df0193e36e5b47bba762d6f74b03cc0117c4.tar.gz
SERVER-18555 implemented OP_COMMAND and OP_COMMAND_REPLY in mongosniff
Signed-off-by: Adam Midvidy <amidvidy@gmail.com> Closes #1011
-rw-r--r--src/mongo/tools/sniffer.cpp35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/mongo/tools/sniffer.cpp b/src/mongo/tools/sniffer.cpp
index a3c10c23d18..e22e6cefb79 100644
--- a/src/mongo/tools/sniffer.cpp
+++ b/src/mongo/tools/sniffer.cpp
@@ -65,8 +65,9 @@
#include "mongo/bson/util/builder.h"
#include "mongo/client/dbclientinterface.h"
#include "mongo/db/dbmessage.h"
-#include "mongo/util/net/message.h"
#include "mongo/db/storage/mmap_v1/mmap.h"
+#include "mongo/rpc/command_reply.h"
+#include "mongo/rpc/command_request.h"
#include "mongo/util/assert_util.h"
#include "mongo/util/net/message.h"
#include "mongo/util/quick_exit.h"
@@ -291,6 +292,38 @@ void processMessage(Connection& c, Message& m) {
try {
switch (m.operation()) {
+ case mongo::dbCommand: {
+ mongo::rpc::CommandRequest c(&m);
+ out() << "\tcommand: " << c.getCommandName() << " ";
+ out() << "database: " << c.getDatabase() << " ";
+ out() << "metadata: " << c.getMetadata().toString() << " ";
+ out() << "commandArgs: " << c.getCommandArgs() << " ";
+ out() << "inputDocs: [ ";
+ mongo::rpc::DocumentRange docs = c.getInputDocs();
+ if (docs.begin() != docs.end()) {
+ out() << endl;
+ }
+ for (const auto& doc : docs) {
+ out() << doc.toString() << "," << endl;
+ }
+ out() << "]" << endl;
+ break;
+ }
+ case mongo::dbCommandReply: {
+ mongo::rpc::CommandReply c(&m);
+ out() << "\tcommandReply: " << c.getCommandReply() << " ";
+ out() << "metadata: " << c.getMetadata().toString() << " ";
+ out() << "outputDocs: [ ";
+ mongo::rpc::DocumentRange docs = c.getOutputDocs();
+ if (docs.begin() != docs.end()) {
+ out() << endl;
+ }
+ for (const auto& doc : docs) {
+ out() << doc.toString() << endl;
+ }
+ out() << "]" << endl;
+ break;
+ }
case mongo::opReply: {
mongo::QueryResult::View r = m.singleData().view2ptr();