summaryrefslogtreecommitdiff
path: root/src/mongo/s/client
diff options
context:
space:
mode:
authorEsha Maharishi <esha.maharishi@mongodb.com>2017-03-13 16:11:03 -0400
committerEsha Maharishi <esha.maharishi@mongodb.com>2017-03-13 16:52:00 -0400
commita74ed820b13c39cc6a5eaf7d30489ffa41dfac2a (patch)
treed467f78f196e65418b7c004a34a2d6939b279dfb /src/mongo/s/client
parent9af191dc136f39e5cb96b3c805a1e392ad3637f9 (diff)
downloadmongo-a74ed820b13c39cc6a5eaf7d30489ffa41dfac2a.tar.gz
SERVER-28187 delete dead classes MultiCommandDispatch, DBClientMultiCommand, and MockMultiWriteCommand
Diffstat (limited to 'src/mongo/s/client')
-rw-r--r--src/mongo/s/client/mock_multi_write_command.h163
-rw-r--r--src/mongo/s/client/multi_command_dispatch.h84
2 files changed, 0 insertions, 247 deletions
diff --git a/src/mongo/s/client/mock_multi_write_command.h b/src/mongo/s/client/mock_multi_write_command.h
deleted file mode 100644
index ef4342d0376..00000000000
--- a/src/mongo/s/client/mock_multi_write_command.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- * Copyright (C) 2013 MongoDB Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, the copyright holders give permission to link the
- * code of portions of this program with the OpenSSL library under certain
- * conditions as described in each individual source file and distribute
- * linked combinations including the program with the OpenSSL library. You
- * must comply with the GNU Affero General Public License in all respects for
- * all of the code used other than as permitted herein. If you modify file(s)
- * with this exception, you may extend this exception to your version of the
- * file(s), but you are not obligated to do so. If you do not wish to do so,
- * delete this exception statement from your version. If you delete this
- * exception statement from all source files in the program, then also delete
- * it in the license file.
- */
-
-#pragma once
-
-#include <deque>
-
-#include "mongo/base/owned_pointer_vector.h"
-#include "mongo/s/client/multi_command_dispatch.h"
-#include "mongo/s/write_ops/batched_command_response.h"
-#include "mongo/unittest/unittest.h"
-
-namespace mongo {
-
-/**
- * A ConnectionString endpoint registered with some kind of error, to simulate returning when
- * the endpoint is used.
- */
-struct MockWriteResult {
- MockWriteResult(const ConnectionString& endpoint, const WriteErrorDetail& error)
- : endpoint(endpoint) {
- WriteErrorDetail* errorCopy = new WriteErrorDetail;
- error.cloneTo(errorCopy);
- errorCopy->setIndex(0);
- response.setOk(true);
- response.setN(0);
- response.addToErrDetails(errorCopy);
- }
-
- MockWriteResult(const ConnectionString& endpoint, const WriteErrorDetail& error, int copies)
- : endpoint(endpoint) {
- response.setOk(true);
- response.setN(0);
-
- for (int i = 0; i < copies; ++i) {
- WriteErrorDetail* errorCopy = new WriteErrorDetail;
- error.cloneTo(errorCopy);
- errorCopy->setIndex(i);
- response.addToErrDetails(errorCopy);
- }
- }
-
-
- MockWriteResult(const ConnectionString& endpoint, const BatchedCommandResponse& response)
- : endpoint(endpoint) {
- response.cloneTo(&this->response);
- }
-
- const ConnectionString endpoint;
- BatchedCommandResponse response;
-};
-
-/**
- * Implementation of the MultiCommandDispatch interface which allows registering a number of
- * endpoints on which errors are returned. Note that *only* BatchedCommandResponses are
- * supported here.
- *
- * The first matching MockEndpoint for a request in the MockEndpoint* vector is used for one
- * request, then removed. This allows simulating retryable errors where a second request
- * succeeds or has a different error reported.
- *
- * If an endpoint isn't registered with a MockEndpoint, just returns BatchedCommandResponses
- * with ok : true.
- */
-class MockMultiWriteCommand : public MultiCommandDispatch {
-public:
- void init(const std::vector<MockWriteResult*> mockEndpoints) {
- ASSERT(!mockEndpoints.empty());
- _mockEndpoints.mutableVector().insert(
- _mockEndpoints.mutableVector().end(), mockEndpoints.begin(), mockEndpoints.end());
- }
-
- void addCommand(const ConnectionString& endpoint,
- StringData dbName,
- const BSONObj& request) override {
- _pending.push_back(endpoint);
- }
-
- void sendAll() override {
- // No-op
- }
-
- int numPending() const override {
- return static_cast<int>(_pending.size());
- }
-
- /**
- * Returns an error response if the next pending endpoint returned has a corresponding
- * MockEndpoint.
- */
- Status recvAny(ConnectionString* endpoint, BSONSerializable* response) override {
- BatchedCommandResponse* batchResponse = //
- static_cast<BatchedCommandResponse*>(response);
-
- *endpoint = _pending.front();
- MockWriteResult* mockResponse = releaseByHost(_pending.front());
- _pending.pop_front();
-
- if (NULL == mockResponse) {
- batchResponse->setOk(true);
- batchResponse->setN(0); // TODO: Make this accurate
- } else {
- mockResponse->response.cloneTo(batchResponse);
- delete mockResponse;
- }
-
- ASSERT(batchResponse->isValid(NULL));
- return Status::OK();
- }
-
- const std::vector<MockWriteResult*>& getEndpoints() const {
- return _mockEndpoints.vector();
- }
-
-private:
- // Find a MockEndpoint* by host, and release it so we don't see it again
- MockWriteResult* releaseByHost(const ConnectionString& endpoint) {
- std::vector<MockWriteResult*>& endpoints = _mockEndpoints.mutableVector();
-
- for (std::vector<MockWriteResult*>::iterator it = endpoints.begin(); it != endpoints.end();
- ++it) {
- MockWriteResult* storedEndpoint = *it;
- if (storedEndpoint->endpoint.toString().compare(endpoint.toString()) == 0) {
- endpoints.erase(it);
- return storedEndpoint;
- }
- }
-
- return NULL;
- }
-
- // Manually-stored ranges
- OwnedPointerVector<MockWriteResult> _mockEndpoints;
-
- std::deque<ConnectionString> _pending;
-};
-
-} // namespace mongo
diff --git a/src/mongo/s/client/multi_command_dispatch.h b/src/mongo/s/client/multi_command_dispatch.h
deleted file mode 100644
index 6631644d351..00000000000
--- a/src/mongo/s/client/multi_command_dispatch.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * Copyright (C) 2013 MongoDB Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, the copyright holders give permission to link the
- * code of portions of this program with the OpenSSL library under certain
- * conditions as described in each individual source file and distribute
- * linked combinations including the program with the OpenSSL library. You
- * must comply with the GNU Affero General Public License in all respects for
- * all of the code used other than as permitted herein. If you modify file(s)
- * with this exception, you may extend this exception to your version of the
- * file(s), but you are not obligated to do so. If you do not wish to do so,
- * delete this exception statement from your version. If you delete this
- * exception statement from all source files in the program, then also delete
- * it in the license file.
- */
-
-#pragma once
-
-#include "mongo/base/status.h"
-#include "mongo/base/string_data.h"
-#include "mongo/client/dbclientinterface.h"
-#include "mongo/s/bson_serializable.h"
-
-namespace mongo {
-
-/**
- * A MultiCommandDispatch is a send/recv operation for multiple commands at once.
- *
- * The commands are first registered with an endpoint and serializable request. Commands are
- * sent out without waiting for responses, and then responses are read later one-at-a-time.
- *
- * If context must be tracked alongside these requests, it can be associated with the endpoint
- * object.
- */
-class MultiCommandDispatch {
-public:
- virtual ~MultiCommandDispatch() {}
-
- /**
- * Adds a command to this multi-command dispatch. Commands are registered with a
- * ConnectionString endpoint and a BSON request object.
- *
- * Commands are not sent immediately, they are sent on sendAll.
- */
- virtual void addCommand(const ConnectionString& endpoint,
- StringData dbName,
- const BSONObj& request) = 0;
-
- /**
- * Sends all the commands in this dispatch to their endpoints, in undefined order and
- * without waiting for responses. May block on full send queue (though this should be
- * rare).
- *
- * Any error which occurs during sendAll will be reported on recvAny, *does not throw.*
- */
- virtual void sendAll() = 0;
-
- /**
- * Returns the number of sent requests that are still waiting to be recv'd.
- */
- virtual int numPending() const = 0;
-
- /**
- * Blocks until a command response has come back. Any outstanding command response may be
- * returned with associated endpoint.
- *
- * Returns !OK on send/recv/parse failure, otherwise command-level errors are returned in
- * the response object itself.
- */
- virtual Status recvAny(ConnectionString* endpoint, BSONSerializable* response) = 0;
-};
-}