Commit 4f46e19c authored by Marshall Pierce's avatar Marshall Pierce
Browse files

Merge pull request #16 from Seagate/features/asokvad185_cluster_version_reporting

KineticStatus exposes expected cluster version
parents f68d8d8f 29ab1eaf
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -32,11 +32,17 @@ using std::string;
/// from a version or an HMAC error
class KineticStatus {
    public:
    KineticStatus(const StatusCode code, const string& message) : code_(code), message_(message) {
    }
    KineticStatus(const StatusCode code,
      const string& message,
      const int64_t expected_cluster_version = 0) :
        code_(code),
        message_(message),
        expected_cluster_version_(expected_cluster_version) {}

    KineticStatus(const KineticStatus& status) : code_(status.code_), message_(status.message_) {
    }
    KineticStatus(const KineticStatus& status) :
      code_(status.code_),
      message_(status.message_),
      expected_cluster_version_(status.expected_cluster_version_) {}

    bool ok() const {
        return code_ == StatusCode::OK;
@@ -50,17 +56,22 @@ class KineticStatus {
        return message_;
    }

    int64_t expected_cluster_version() const {
      return expected_cluster_version_;
    }

    void operator=(const KineticStatus& other) {
        code_ = other.code_;
        message_ = other.message_;
        expected_cluster_version_ = other.expected_cluster_version_;
    }

    private:
    StatusCode code_;
    string message_;
    int64_t expected_cluster_version_;
};

} // namespace kinetic

#endif  // KINETIC_CPP_CLIENT_KINETIC_STATUS_H_
+4 −4
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ using std::move;
using std::make_pair;


KineticStatus GetKineticStatus(StatusCode code) {
KineticStatus GetKineticStatus(StatusCode code, int64_t expected_cluster_version) {
    switch (code) {
        case StatusCode::CLIENT_IO_ERROR:
            return KineticStatus(code, "IO error");
@@ -45,7 +45,7 @@ KineticStatus GetKineticStatus(StatusCode code) {
        case StatusCode::REMOTE_NOT_AUTHORIZED:
            return KineticStatus(code, "Not authorized");
        case StatusCode::REMOTE_CLUSTER_VERSION_MISMATCH:
            return KineticStatus(code, "Cluster version mismatch");
            return KineticStatus(code, "Cluster version mismatch", expected_cluster_version);
        case StatusCode::REMOTE_INTERNAL_ERROR:
            return KineticStatus(code, "Remote internal error");
        case StatusCode::REMOTE_HEADER_REQUIRED:
@@ -170,7 +170,7 @@ NonblockingPacketServiceStatus NonblockingReceiver::Receive() {
            handler_->Handle(response_, move(value_));
        } else {
            handler_->Error(GetKineticStatus(ConvertFromProtoStatus(
                    response_.command().status().code())));
                    response_.command().status().code()), response_.command().header().clusterversion()));
        }

        handler_.reset();