Commit da45203a authored by plensing's avatar plensing
Browse files

Merge pull request #27 from plensing/master

Proto 3.0.0
parents c3d8a644 b0fc6630
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -52,8 +52,8 @@ set(EXTERNAL_PREFIX "${kinetic_cpp_client_BINARY_DIR}/vendor")

include(ExternalProject)

set(KINETIC_PROTO_VERSION "2.0.4")
set(KINETIC_PROTO_MD5 "3ebdb728273b4919ab00a795ffdc91b3")
set(KINETIC_PROTO_VERSION "3.0.0")
set(KINETIC_PROTO_MD5 "85ca027b870811a297c1f6d792498934")

ExternalProject_add(
    kinetic-proto
+1 −1
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@ This repo contains code for producing C and C++ kinetic clients.

Protocol Version
=================
The client is using version `2.0.4` of the [Kinetic-Protocol](https://github.com/Seagate/kinetic-protocol/releases/tag/2.0.4).
The client is using version `3.0.0` of the [Kinetic-Protocol](https://github.com/Seagate/kinetic-protocol).


Dependencies
+49 −64
Original line number Diff line number Diff line
@@ -21,77 +21,56 @@
#ifndef KINETIC_CPP_CLIENT_BLOCKING_KINETIC_CONNECTION_H_
#define KINETIC_CPP_CLIENT_BLOCKING_KINETIC_CONNECTION_H_

#include <memory>

#include "kinetic/blocking_kinetic_connection_interface.h"
#include "kinetic/nonblocking_kinetic_connection.h"
#include "kinetic/status.h"
#include "kinetic/kinetic_connection.h"
#include "kinetic/key_range_iterator.h"
#include "kinetic/common.h"


namespace kinetic {

using std::shared_ptr;
using std::unique_ptr;
using std::string;
using std::vector;
class BlockingKineticConnection : public BlockingKineticConnectionInterface {

class KeyRangeIterator;
class BlockingCallbackState;

class BlockingKineticConnection {
    public:
    /// Takes ownership of the given NonblockingKineticConnection
    /// @param[in] nonblocking_connection   The underlying connection that will be used
    /// @param[in] network_timeout_seconds  If an operation goes more than network_timeout_seconds
    ///                                     seconds without receiving data the operation will fail
    explicit BlockingKineticConnection(
            shared_ptr<NonblockingKineticConnection> nonblocking_connection,
        unsigned int network_timeout_seconds);

     explicit BlockingKineticConnection(
            unique_ptr<NonblockingKineticConnection> nonblocking_connection,
            unsigned int network_timeout_seconds);

    virtual ~BlockingKineticConnection();
    ~BlockingKineticConnection();

    /// If the drive has a non-zero cluster version, requests will fail unless the developer
    /// tells the client the correct cluster version using this method.
    virtual void SetClientClusterVersion(int64_t cluster_version);
    void SetClientClusterVersion(int64_t cluster_version);

    virtual KineticStatus NoOp();
    KineticStatus NoOp();

    virtual KineticStatus Get(
    KineticStatus Get(
            const shared_ptr<const string> key,
            unique_ptr<KineticRecord>& record);

    virtual KineticStatus Get(const string& key, unique_ptr<KineticRecord>& record);
    KineticStatus Get(const string& key, unique_ptr<KineticRecord>& record);

    virtual KineticStatus GetNext(
    KineticStatus GetNext(
            const shared_ptr<const string> key,
            unique_ptr<string>& actual_key,
            unique_ptr<KineticRecord>& record);

    virtual KineticStatus GetNext(
    KineticStatus GetNext(
            const string& key,
            unique_ptr<string>& actual_key,
            unique_ptr<KineticRecord>& record);

    virtual KineticStatus GetPrevious(const shared_ptr<const string> key,
    KineticStatus GetPrevious(const shared_ptr<const string> key,
            unique_ptr<string>& actual_key,
            unique_ptr<KineticRecord>& record);

    virtual KineticStatus GetPrevious(const string& key,
    KineticStatus GetPrevious(const string& key,
            unique_ptr<string>& actual_key,
            unique_ptr<KineticRecord>& record);

    virtual KineticStatus GetVersion(const shared_ptr<const string> key,
    KineticStatus GetVersion(const shared_ptr<const string> key,
            unique_ptr<string>& version);

    virtual KineticStatus GetVersion(const string& key, unique_ptr<string>& version);
    KineticStatus GetVersion(const string& key, unique_ptr<string>& version);

    virtual KineticStatus GetKeyRange(const shared_ptr<const string> start_key,
    KineticStatus GetKeyRange(const shared_ptr<const string> start_key,
            bool start_key_inclusive,
            const shared_ptr<const string> end_key,
            bool end_key_inclusive,
@@ -99,7 +78,7 @@ class BlockingKineticConnection {
            int32_t max_results,
            unique_ptr<vector<string>>& keys);

    virtual KineticStatus GetKeyRange(const string& start_key,
    KineticStatus GetKeyRange(const string& start_key,
            bool start_key_inclusive,
            const string& end_key,
            bool end_key_inclusive,
@@ -107,70 +86,76 @@ class BlockingKineticConnection {
            int32_t max_results,
            unique_ptr<vector<string>>& keys);


    virtual KeyRangeIterator IterateKeyRange(const shared_ptr<const string> start_key,
    KeyRangeIterator IterateKeyRange(const shared_ptr<const string> start_key,
            bool start_key_inclusive,
            const shared_ptr<const string> end_key,
            bool end_key_inclusive,
            unsigned int frame_size);

    virtual KeyRangeIterator IterateKeyRange(const string& start_key,
    KeyRangeIterator IterateKeyRange(const string& start_key,
            bool start_key_inclusive,
            const string& end_key,
            bool end_key_inclusive,
            unsigned int frame_size);

    virtual KineticStatus Put(const shared_ptr<const string> key,
    KineticStatus Put(const shared_ptr<const string> key,
            const shared_ptr<const string> current_version, WriteMode mode,
            const shared_ptr<const KineticRecord> record,
            PersistMode persistMode);

    virtual KineticStatus Put(const string& key,
    KineticStatus Put(const string& key,
            const string& current_version, WriteMode mode,
            const KineticRecord& record,
            PersistMode persistMode);

    virtual KineticStatus Put(const shared_ptr<const string> key,
    KineticStatus Put(const shared_ptr<const string> key,
            const shared_ptr<const string> current_version, WriteMode mode,
            const shared_ptr<const KineticRecord> record);

    virtual KineticStatus Put(const string& key,
    KineticStatus Put(const string& key,
            const string& current_version, WriteMode mode,
            const KineticRecord& record);

    virtual KineticStatus Delete(const shared_ptr<const string> key,
    KineticStatus Delete(const shared_ptr<const string> key,
            const shared_ptr<const string> version, WriteMode mode, PersistMode persistMode);

    virtual KineticStatus Delete(const string& key, const string& version,
    KineticStatus Delete(const string& key, const string& version,
            WriteMode mode, PersistMode persistMode);

    virtual KineticStatus Delete(const shared_ptr<const string> key,
    KineticStatus Delete(const shared_ptr<const string> key,
            const shared_ptr<const string> version, WriteMode mode);

    virtual KineticStatus Delete(const string& key, const string& version, WriteMode mode);

    virtual KineticStatus InstantSecureErase(const shared_ptr<string> pin);
    KineticStatus Delete(const string& key, const string& version, WriteMode mode);

    virtual KineticStatus InstantSecureErase(const string& pin);
    KineticStatus GetLog(unique_ptr<DriveLog>& drive_log);

    virtual KineticStatus SetClusterVersion(int64_t cluster_version);
    KineticStatus GetLog(const vector<Command_GetLog_Type>& types, unique_ptr<DriveLog>& drive_log);

    virtual KineticStatus GetLog(unique_ptr<DriveLog>& drive_log);
    KineticStatus P2PPush(const P2PPushRequest& push_request,
            unique_ptr<vector<KineticStatus>>& operation_statuses);

    virtual KineticStatus UpdateFirmware(const shared_ptr<const string> new_firmware);
    KineticStatus P2PPush(const shared_ptr<const P2PPushRequest> push_request,
            unique_ptr<vector<KineticStatus>>& operation_statuses);

    virtual KineticStatus SetACLs(const shared_ptr<const list<ACL>> acls);
    KineticStatus SetClusterVersion(int64_t cluster_version);
    KineticStatus UpdateFirmware(const shared_ptr<const string> new_firmware);
    KineticStatus SetACLs(const shared_ptr<const list<ACL>> acls);

    virtual KineticStatus SetPin(const shared_ptr<const string> new_pin,
    KineticStatus SetErasePIN(const shared_ptr<const string> new_pin,
            const shared_ptr<const string> current_pin = make_shared<string>());
    KineticStatus SetErasePIN(const string& new_pin, const string& current_pin);
    KineticStatus SetLockPIN(const shared_ptr<const string> new_pin,
            const shared_ptr<const string> current_pin = make_shared<string>());
    KineticStatus SetLockPIN(const string& new_pin, const string& current_pin);
    KineticStatus InstantErase(const shared_ptr<string> pin);
    KineticStatus InstantErase(const string& pin);
    KineticStatus SecureErase(const shared_ptr<string> pin);
    KineticStatus SecureErase(const string& pin);
    KineticStatus LockDevice(const shared_ptr<string> pin);
    KineticStatus LockDevice(const string& pin);
    KineticStatus UnlockDevice(const shared_ptr<string> pin);
    KineticStatus UnlockDevice(const string& pin);

    virtual KineticStatus SetPin(const string& new_pin, const string& current_pin);

    virtual KineticStatus P2PPush(const P2PPushRequest& push_request,
            unique_ptr<vector<KineticStatus>>& operation_statuses);

    virtual KineticStatus P2PPush(const shared_ptr<const P2PPushRequest> push_request,
            unique_ptr<vector<KineticStatus>>& operation_statuses);

    private:
    KineticStatus RunOperation(shared_ptr<BlockingCallbackState> callback, HandlerKey handler_key);
@@ -178,7 +163,7 @@ class BlockingKineticConnection {
    /// Helper method for translating a StatusCode from the drive into an API client KineticStatus
    /// object
    KineticStatus GetKineticStatus(StatusCode code);
    shared_ptr<NonblockingKineticConnection> nonblocking_connection_;
    unique_ptr<NonblockingKineticConnection> nonblocking_connection_;
    const unsigned int network_timeout_seconds_;
    DISALLOW_COPY_AND_ASSIGN(BlockingKineticConnection);
    };
+149 −0
Original line number Diff line number Diff line
/*
 * kinetic-cpp-client
 * Copyright (C) 2014 Seagate Technology.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 */

#ifndef BLOCKING_KINETIC_CONNECTION_INTERFACE_H_
#define BLOCKING_KINETIC_CONNECTION_INTERFACE_H_

#include "kinetic/status.h"
#include "kinetic/kinetic_connection.h"
#include "kinetic/key_range_iterator.h"
#include "kinetic/common.h"
#include "kinetic/nonblocking_kinetic_connection.h"
#include <memory>
#include <string>
#include <vector>

namespace kinetic {

using std::shared_ptr;
using std::unique_ptr;
using std::string;
using std::vector;

class KeyRangeIterator;
class BlockingCallbackState;


class BlockingKineticConnectionInterface {
    public:
    virtual ~BlockingKineticConnectionInterface(){};

    virtual void SetClientClusterVersion(int64_t cluster_version) = 0;

    virtual KineticStatus NoOp() = 0;
    virtual KineticStatus Get(
            const shared_ptr<const string> key,
            unique_ptr<KineticRecord>& record) = 0;
    virtual KineticStatus Get(const string& key, unique_ptr<KineticRecord>& record) = 0;
    virtual KineticStatus GetNext(
            const shared_ptr<const string> key,
            unique_ptr<string>& actual_key,
            unique_ptr<KineticRecord>& record) = 0;
    virtual KineticStatus GetNext(
            const string& key,
            unique_ptr<string>& actual_key,
            unique_ptr<KineticRecord>& record) = 0;
    virtual KineticStatus GetPrevious(const shared_ptr<const string> key,
            unique_ptr<string>& actual_key,
            unique_ptr<KineticRecord>& record) = 0;
    virtual KineticStatus GetPrevious(const string& key,
            unique_ptr<string>& actual_key,
            unique_ptr<KineticRecord>& record) = 0;
    virtual KineticStatus GetVersion(const shared_ptr<const string> key,
            unique_ptr<string>& version) = 0;
    virtual KineticStatus GetVersion(const string& key, unique_ptr<string>& version) = 0;
    virtual KineticStatus GetKeyRange(const shared_ptr<const string> start_key,
            bool start_key_inclusive,
            const shared_ptr<const string> end_key,
            bool end_key_inclusive,
            bool reverse_results,
            int32_t max_results,
            unique_ptr<vector<string>>& keys) = 0;
    virtual KineticStatus GetKeyRange(const string& start_key,
            bool start_key_inclusive,
            const string& end_key,
            bool end_key_inclusive,
            bool reverse_results,
            int32_t max_results,
            unique_ptr<vector<string>>& keys) = 0;
    virtual KeyRangeIterator IterateKeyRange(const shared_ptr<const string> start_key,
            bool start_key_inclusive,
            const shared_ptr<const string> end_key,
            bool end_key_inclusive,
            unsigned int frame_size) = 0;
    virtual KeyRangeIterator IterateKeyRange(const string& start_key,
            bool start_key_inclusive,
            const string& end_key,
            bool end_key_inclusive,
            unsigned int frame_size) = 0;
    virtual KineticStatus Put(const shared_ptr<const string> key,
            const shared_ptr<const string> current_version, WriteMode mode,
            const shared_ptr<const KineticRecord> record,
            PersistMode persistMode) = 0;
    virtual KineticStatus Put(const string& key,
            const string& current_version, WriteMode mode,
            const KineticRecord& record,
            PersistMode persistMode) = 0;
    virtual KineticStatus Put(const shared_ptr<const string> key,
            const shared_ptr<const string> current_version, WriteMode mode,
            const shared_ptr<const KineticRecord> record) = 0;
    virtual KineticStatus Put(const string& key,
            const string& current_version, WriteMode mode,
            const KineticRecord& record) = 0;
    virtual KineticStatus Delete(const shared_ptr<const string> key,
            const shared_ptr<const string> version, WriteMode mode, PersistMode persistMode) = 0;
    virtual KineticStatus Delete(const string& key, const string& version,
            WriteMode mode, PersistMode persistMode) = 0;
    virtual KineticStatus Delete(const shared_ptr<const string> key,
            const shared_ptr<const string> version, WriteMode mode) = 0;
    virtual KineticStatus Delete(const string& key, const string& version, WriteMode mode) = 0;
    virtual KineticStatus GetLog(unique_ptr<DriveLog>& drive_log) = 0;
    virtual KineticStatus GetLog(const vector<Command_GetLog_Type>& types, unique_ptr<DriveLog>& drive_log) = 0;
    virtual KineticStatus P2PPush(const P2PPushRequest& push_request,
            unique_ptr<vector<KineticStatus>>& operation_statuses) = 0;
    virtual KineticStatus P2PPush(const shared_ptr<const P2PPushRequest> push_request,
            unique_ptr<vector<KineticStatus>>& operation_statuses) = 0;

    virtual KineticStatus SetClusterVersion(int64_t cluster_version) = 0;
    virtual KineticStatus UpdateFirmware(const shared_ptr<const string> new_firmware) = 0;
    virtual KineticStatus SetACLs(const shared_ptr<const list<ACL>> acls) = 0;

    virtual KineticStatus SetErasePIN(const shared_ptr<const string> new_pin,
            const shared_ptr<const string> current_pin = make_shared<string>()) = 0;
    virtual KineticStatus SetErasePIN(const string& new_pin, const string& current_pin) = 0;
    virtual KineticStatus SetLockPIN(const shared_ptr<const string> new_pin,
            const shared_ptr<const string> current_pin = make_shared<string>()) = 0;
    virtual KineticStatus SetLockPIN(const string& new_pin, const string& current_pin) = 0;
    virtual KineticStatus InstantErase(const shared_ptr<string> pin) = 0;
    virtual KineticStatus InstantErase(const string& pin) = 0;
    virtual KineticStatus SecureErase(const shared_ptr<string> pin) = 0;
    virtual KineticStatus SecureErase(const string& pin) = 0;
    virtual KineticStatus LockDevice(const shared_ptr<string> pin) = 0;
    virtual KineticStatus LockDevice(const string& pin) = 0;
    virtual KineticStatus UnlockDevice(const shared_ptr<string> pin) = 0;
    virtual KineticStatus UnlockDevice(const string& pin) = 0;

};

} // namespace kinetic



#endif /* BLOCKING_KINETIC_CONNECTION_INTERFACE_H_ */
+1 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@

#include <string>
#include <vector>
#include <memory>

#include "kinetic/blocking_kinetic_connection.h"

Loading