Commit 17e7eb5a authored by Manuel Wudka-Robles's avatar Manuel Wudka-Robles
Browse files

Merge pull request #10 from Seagate/features/status-converter

Conversion from StatusCode -> Protobuf Status
parents 54fe2a1f 05493f89
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -134,6 +134,7 @@ add_library(kinetic_client
    src/main/socket_wrapper.cc
    src/main/blocking_kinetic_connection.cc
    src/main/threadsafe_blocking_kinetic_connection.cc
    src/main/status_code.cc

    src/main/key_range_iterator.cc
)
+6 −0
Original line number Diff line number Diff line
@@ -21,8 +21,11 @@
#ifndef KINETIC_CPP_CLIENT_STATUS_CODE_H_
#define KINETIC_CPP_CLIENT_STATUS_CODE_H_

#include "kinetic_client.pb.h"

namespace kinetic {

using com::seagate::kinetic::client::proto::Message_Status_StatusCode;
using std::string;

enum class StatusCode {
@@ -50,6 +53,9 @@ enum class StatusCode {
    PROTOCOL_ERROR_RESPONSE_NO_ACKSEQUENCE
};

StatusCode ConvertFromProtoStatus(Message_Status_StatusCode status);
Message_Status_StatusCode ConvertToProtoStatus(StatusCode status);

} // namespace kinetic

#endif  // KINETIC_CPP_CLIENT_STATUS_CODE_H_
+1 −1
Original line number Diff line number Diff line
@@ -214,7 +214,7 @@ void P2PPushHandler::Handle(const Message& response, unique_ptr<const string> va
        Message_Status const &status = p2pop.operation(i).status();

        statuses->push_back(
                KineticStatus(ConvertProtoStatus(status.code()), status.statusmessage()));
                KineticStatus(ConvertFromProtoStatus(status.code()), status.statusmessage()));
    }

    callback_->Success(move(statuses));
+1 −60
Original line number Diff line number Diff line
@@ -22,25 +22,7 @@

namespace kinetic {

using com::seagate::kinetic::client::proto::Message_Status_StatusCode;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_INVALID_STATUS_CODE;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_HMAC_FAILURE;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_NOT_AUTHORIZED;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_NOT_FOUND;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_INTERNAL_ERROR;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_HEADER_REQUIRED;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_SUCCESS;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_VERSION_FAILURE;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_VERSION_MISMATCH;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_SERVICE_BUSY;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_EXPIRED;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_DATA_ERROR;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_PERM_DATA_ERROR;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_REMOTE_CONNECTION_ERROR;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_NO_SPACE;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_NO_SUCH_HMAC_ALGORITHM;
using com::seagate::kinetic::client::proto::Message_Status_StatusCode_INVALID_REQUEST;

using std::string;
using std::shared_ptr;
using std::unique_ptr;
@@ -48,47 +30,6 @@ using std::move;
using std::make_pair;


StatusCode ConvertProtoStatus(Message_Status_StatusCode status) {
    switch (status) {
        case Message_Status_StatusCode_SUCCESS:
            return StatusCode::OK;
        case Message_Status_StatusCode_HMAC_FAILURE:
            return StatusCode::REMOTE_HMAC_ERROR;
        case Message_Status_StatusCode_NOT_AUTHORIZED:
            return StatusCode::REMOTE_NOT_AUTHORIZED;
        case Message_Status_StatusCode_VERSION_FAILURE:
            return StatusCode::REMOTE_CLUSTER_VERSION_MISMATCH;
        case Message_Status_StatusCode_INTERNAL_ERROR:
            return StatusCode::REMOTE_INTERNAL_ERROR;
        case Message_Status_StatusCode_HEADER_REQUIRED:
            return StatusCode::REMOTE_HEADER_REQUIRED;
        case Message_Status_StatusCode_NOT_FOUND:
            return StatusCode::REMOTE_NOT_FOUND;
        case Message_Status_StatusCode_VERSION_MISMATCH:
            return StatusCode::REMOTE_VERSION_MISMATCH;
        case Message_Status_StatusCode_SERVICE_BUSY:
            return StatusCode::REMOTE_SERVICE_BUSY;
        case Message_Status_StatusCode_EXPIRED:
            return StatusCode::REMOTE_EXPIRED;
        case Message_Status_StatusCode_DATA_ERROR:
            return StatusCode::REMOTE_DATA_ERROR;
        case Message_Status_StatusCode_PERM_DATA_ERROR:
            return StatusCode::REMOTE_PERM_DATA_ERROR;
        case Message_Status_StatusCode_REMOTE_CONNECTION_ERROR:
            return StatusCode::REMOTE_REMOTE_CONNECTION_ERROR;
        case Message_Status_StatusCode_NO_SPACE:
            return StatusCode::REMOTE_NO_SPACE;
        case Message_Status_StatusCode_NO_SUCH_HMAC_ALGORITHM:
            return StatusCode::REMOTE_NO_SUCH_HMAC_ALGORITHM;
        case Message_Status_StatusCode_INVALID_REQUEST:
            return StatusCode::REMOTE_INVALID_REQUEST;
        case Message_Status_StatusCode_INVALID_STATUS_CODE:
            return StatusCode::CLIENT_INTERNAL_ERROR;
        default:
            return StatusCode::REMOTE_OTHER_ERROR;
    }
}

KineticStatus GetKineticStatus(StatusCode code) {
    switch (code) {
        case StatusCode::CLIENT_IO_ERROR:
@@ -228,7 +169,7 @@ NonblockingPacketServiceStatus NonblockingReceiver::Receive() {
        if (response_.command().status().code() == Message_Status_StatusCode_SUCCESS) {
            handler_->Handle(response_, move(value_));
        } else {
            handler_->Error(GetKineticStatus(ConvertProtoStatus(
            handler_->Error(GetKineticStatus(ConvertFromProtoStatus(
                    response_.command().status().code())));
        }

+0 −2
Original line number Diff line number Diff line
@@ -46,8 +46,6 @@ using std::deque;
using std::pair;
using std::unordered_map;

StatusCode ConvertProtoStatus(Message_Status_StatusCode status);

enum NonblockingPacketServiceStatus {
    kIdle,      // nothing to do
    kIoWait,    // waiting for I/O to become possible
Loading