Commit 84c214f2 authored by Kevin.Liu's avatar Kevin.Liu Committed by plensing
Browse files

Develop (#34)

* Implemented Mediascan and Mediaoptimize skeleton.

* Refactored MediaRequest struct.

* Typedef MediaScanRequest and MediaOptimizeRequest.

* Change RequestPriority as a parameter of MediaScan and MediaOptimize insteadinf of a field of MediaScan or MediaOptimize Request.

* Changed the corresponding kinetic protocol version to 3.0.5.

* Report failed keys for mediascan operation. Report last processed key for scan and optimize operations.
Changed signatures to be more consistent with existing interfaces. Increased minor version to reflect interface update.

* Added max_results paramter to MediaScan call. Setting command priority automatically. Adding start_key_inclusive and end_key_inclusive parameters to MediaScan and MediaOptimize to correspond to GetKeyRange interface. Cleaned up code-style.

* Removed erroneous move statements.
parent 40fa9516
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ execute_process(
        OUTPUT_STRIP_TRAILING_WHITESPACE
)
set(PROJECT_VERSION_MAJOR 0)
set(PROJECT_VERSION_MINOR 2)
set(PROJECT_VERSION_MINOR 3)
set(PROJECT_VERSION_PATCH ${GIT_COMMITS})
set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
message(STATUS "Project version set to ${PROJECT_VERSION}")
@@ -166,7 +166,7 @@ set(GENERATED_SOURCES_PATH ${kinetic_cpp_client_SOURCE_DIR}/src/main/generated)
ExternalProject_add(kinetic-proto
        PREFIX proto
        GIT_REPOSITORY https://github.com/Seagate/kinetic-protocol
        GIT_TAG 3.0.0
        GIT_TAG 3.0.5
        UPDATE_COMMAND mkdir -p ${GENERATED_SOURCES_PATH}
        CONFIGURE_COMMAND ""
        BUILD_IN_SOURCE 1
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ This repository contains a C++ kinetic client implementation.

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


Dependencies
+135 −83
Original line number Diff line number Diff line
@@ -24,10 +24,8 @@
namespace kinetic {

class BlockingKineticConnection : public BlockingKineticConnectionInterface {

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

    ~BlockingKineticConnection();
@@ -38,19 +36,17 @@ class BlockingKineticConnection : public BlockingKineticConnectionInterface {

    KineticStatus NoOp();

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

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

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

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

@@ -65,7 +61,8 @@ class BlockingKineticConnection : public BlockingKineticConnectionInterface {
    KineticStatus GetVersion(const shared_ptr<const string> key,
                             unique_ptr<string> &version);

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

    KineticStatus GetKeyRange(const shared_ptr<const string> start_key,
                              bool start_key_inclusive,
@@ -95,38 +92,78 @@ class BlockingKineticConnection : public BlockingKineticConnectionInterface {
                                     bool end_key_inclusive,
                                     unsigned int frame_size);

    KineticStatus MediaScan(const shared_ptr<const string> start_key,
                            bool start_key_inclusive,
                            const shared_ptr<const string> end_key,
                            bool end_key_inclusive,
                            int32_t max_results,
                            unique_ptr<string> &last_handled_key,
                            unique_ptr<vector<string>> &keys);

    KineticStatus MediaScan(const string &start_key,
                            bool start_key_inclusive,
                            const string &end_key,
                            bool end_key_inclusive,
                            int32_t max_results,
                            unique_ptr<string> &last_handled_key,
                            unique_ptr<vector<string>> &keys);

    KineticStatus MediaOptimize(const shared_ptr<const string> start_key,
                                bool start_key_inclusive,
                                const shared_ptr<const string> end_key,
                                bool end_key_inclusive,
                                unique_ptr<string> &last_handled_key);

    KineticStatus MediaOptimize(const string &start_key,
                                bool start_key_inclusive,
                                const string &end_key,
                                bool end_key_inclusive,
                                unique_ptr<string> &last_handled_key);

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

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

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

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

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

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

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

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

    KineticStatus GetLog(unique_ptr<DriveLog> &drive_log);

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

    KineticStatus P2PPush(const P2PPushRequest &push_request,
                          unique_ptr<vector<KineticStatus>> &operation_statuses);
@@ -137,34 +174,49 @@ class BlockingKineticConnection : public BlockingKineticConnectionInterface {
    KineticStatus Flush();

    KineticStatus SetClusterVersion(int64_t cluster_version);

    KineticStatus UpdateFirmware(const shared_ptr<const string> new_firmware);

    KineticStatus SetACLs(const shared_ptr<const list<ACL>> acls);

    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 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 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);

    KineticStatus UnlockDevice(const string &pin);

  private:
    KineticStatus RunOperation(shared_ptr<BlockingCallbackState> callback, HandlerKey handler_key);
    KineticStatus RunOperation(shared_ptr<BlockingCallbackState> callback,
                               HandlerKey handler_key);

    /// Helper method for translating a StatusCode from the drive into an API client KineticStatus
    /// object
    KineticStatus GetKineticStatus(StatusCode code);

    unique_ptr<NonblockingKineticConnection> nonblocking_connection_;
    const unsigned int network_timeout_seconds_;
    DISALLOW_COPY_AND_ASSIGN(BlockingKineticConnection);
    const unsigned int network_timeout_seconds_; DISALLOW_COPY_AND_ASSIGN(BlockingKineticConnection);
};

} // namespace kinetic
+154 −79
Original line number Diff line number Diff line
@@ -15,8 +15,8 @@
 * See www.openkinetic.org for more project information
 */

#ifndef BLOCKING_KINETIC_CONNECTION_INTERFACE_H_
#define BLOCKING_KINETIC_CONNECTION_INTERFACE_H_
#ifndef KINETIC_CPP_CLIENT_BLOCKING_KINETIC_CONNECTION_INTERFACE_H_
#define KINETIC_CPP_CLIENT_BLOCKING_KINETIC_CONNECTION_INTERFACE_H_

#include "kinetic/status.h"
#include "kinetic/kinetic_connection.h"
@@ -37,35 +37,42 @@ using std::vector;
class KeyRangeIterator;
class BlockingCallbackState;


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

    virtual void SetClientClusterVersion(int64_t cluster_version) = 0;

    virtual KineticStatus NoOp() = 0;
    virtual KineticStatus Get(
            const shared_ptr<const string> key,

    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,

    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,

    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 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,
@@ -73,6 +80,7 @@ class BlockingKineticConnectionInterface {
                                      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,
@@ -80,68 +88,135 @@ class BlockingKineticConnectionInterface {
                                      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 MediaScan(const shared_ptr<const string> start_key,
                                    bool start_key_inclusive,
                                    const shared_ptr<const string> end_key,
                                    bool end_key_inclusive,
                                    int32_t max_results,
                                    unique_ptr<string> &last_handled_key,
                                    unique_ptr<vector<string>> &keys) = 0;

    virtual KineticStatus MediaScan(const string &start_key,
                                    bool start_key_inclusive,
                                    const string &end_key,
                                    bool end_key_inclusive,
                                    int32_t max_results,
                                    unique_ptr<string> &last_handled_key,
                                    unique_ptr<vector<string>> &keys) = 0;

    virtual KineticStatus MediaOptimize(const shared_ptr<const string> start_key,
                                        bool start_key_inclusive,
                                        const shared_ptr<const string> end_key,
                                        bool end_key_inclusive,
                                        unique_ptr<string> &last_handled_key) = 0;

    virtual KineticStatus MediaOptimize(const string &start_key,
                                        bool start_key_inclusive,
                                        const string &end_key,
                                        bool end_key_inclusive,
                                        unique_ptr<string> &last_handled_key) = 0;

    virtual KineticStatus Put(const shared_ptr<const string> key,
            const shared_ptr<const string> current_version, WriteMode mode,
                              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 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 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 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;
                                 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;
                                 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 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 Flush() = 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 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 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;

    virtual KineticStatus UnlockDevice(const string &pin) = 0;
};

} // namespace kinetic



#endif /* BLOCKING_KINETIC_CONNECTION_INTERFACE_H_ */
#endif  // KINETIC_CPP_CLIENT_BLOCKING_KINETIC_CONNECTION_INTERFACE_H_
+189 −64

File changed.

Preview size limit exceeded, changes collapsed.

Loading