summaryrefslogtreecommitdiff
path: root/src/mongo/rpc/metadata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/rpc/metadata.cpp')
-rw-r--r--src/mongo/rpc/metadata.cpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/mongo/rpc/metadata.cpp b/src/mongo/rpc/metadata.cpp
index 595ca571f16..43e4cf37eff 100644
--- a/src/mongo/rpc/metadata.cpp
+++ b/src/mongo/rpc/metadata.cpp
@@ -32,6 +32,8 @@
#include "mongo/client/dbclientinterface.h"
#include "mongo/db/jsobj.h"
+#include "mongo/rpc/metadata/audit_metadata.h"
+#include "mongo/rpc/metadata/sharding_metadata.h"
#include "mongo/rpc/metadata/server_selection_metadata.h"
namespace mongo {
@@ -81,10 +83,27 @@ namespace rpc {
int legacyQueryFlags = 0;
BSONObjBuilder legacyCommandBob;
- auto downconvertStatus = ServerSelectionMetadata::downconvert(cmdObj,
- metadata,
- &legacyCommandBob,
- &legacyQueryFlags);
+
+ StatusWith<CommandReplyWithMetadata> upconvertReplyMetadata(BSONObj legacyReply) {
+ BSONObjBuilder commandReplyBob;
+ BSONObjBuilder metadataBob;
+
+ auto upconvertStatus = ShardingMetadata::upconvert(legacyReply,
+ &commandReplyBob,
+ &metadataBob);
+ if (!upconvertStatus.isOK()) {
+ return upconvertStatus;
+ }
+
+ return std::make_tuple(commandReplyBob.obj(), metadataBob.obj());
+ }
+
+ StatusWith<BSONObj> downconvertReplyMetadata(BSONObj commandReply, BSONObj replyMetadata) {
+ BSONObjBuilder legacyCommandReplyBob;
+
+ auto downconvertStatus = ShardingMetadata::downconvert(commandReply,
+ replyMetadata,
+ &legacyCommandReplyBob);
if (!downconvertStatus.isOK()) {
return downconvertStatus;
}