Commit bc84928c authored by Marshall Pierce's avatar Marshall Pierce
Browse files

Merge pull request #6 from Seagate/features/persist-option

Features/persist option
parents 6af5878d b076890c
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -120,6 +120,16 @@ class BlockingKineticConnection {
            bool end_key_inclusive,
            unsigned int frame_size);

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

    virtual 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,
            const shared_ptr<const string> current_version, WriteMode mode,
            const shared_ptr<const KineticRecord> record);
@@ -128,6 +138,12 @@ class BlockingKineticConnection {
            const string& current_version, WriteMode mode,
            const KineticRecord& record);

    virtual 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,
            WriteMode mode, PersistMode persistMode);

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

+12 −2
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@

namespace kinetic {

typedef enum {
enum class WriteMode {
    /// If specified, PUTs will succeed even if the key already exists and has a different
    /// version
    IGNORE_VERSION,
@@ -31,7 +31,17 @@ typedef enum {
    /// Requires the existing version match the given expected value. This can be used to
    /// implement compare-and-swap type operations
    REQUIRE_SAME_VERSION
} WriteMode;
};

enum class PersistMode {
    /// This request is made persistent before returning
    WRITE_THROUGH,
    /// This request can be made persistent when the device chooses, or when a subsequent
    /// request with PersistMode FLUSH is issued on this connection
    WRITE_BACK,
    /// All pending information that has not been persisted will be before returning
    FLUSH
};

} // namespace kinetic

+19 −0
Original line number Diff line number Diff line
@@ -43,6 +43,8 @@ using com::seagate::kinetic::client::proto::Message_MessageType;

using com::seagate::kinetic::client::proto::Message_P2POperation;

using com::seagate::kinetic::client::proto::Message_Synchronization;

using std::shared_ptr;
using std::unique_ptr;
using std::string;
@@ -261,6 +263,21 @@ class NonblockingKineticConnection {
        const string current_version, WriteMode mode,
        const shared_ptr<const KineticRecord> record,
        const shared_ptr<PutCallbackInterface> callback);
    virtual HandlerKey Put(const shared_ptr<const string> key,
        const shared_ptr<const string> current_version, WriteMode mode,
        const shared_ptr<const KineticRecord> record,
        const shared_ptr<PutCallbackInterface> callback,
        PersistMode persistMode);
    virtual HandlerKey Put(const string key,
        const string current_version, WriteMode mode,
        const shared_ptr<const KineticRecord> record,
        const shared_ptr<PutCallbackInterface> callback,
        PersistMode persistMode);
    virtual HandlerKey Delete(const shared_ptr<const string> key,
            const shared_ptr<const string> version, WriteMode mode,
            const shared_ptr<SimpleCallbackInterface> callback, PersistMode persistMode);
    virtual HandlerKey Delete(const string key, const string version, WriteMode mode,
        const shared_ptr<SimpleCallbackInterface> callback, PersistMode persistMode);
    virtual HandlerKey Delete(const shared_ptr<const string> key,
            const shared_ptr<const string> version, WriteMode mode,
            const shared_ptr<SimpleCallbackInterface> callback);
@@ -295,9 +312,11 @@ class NonblockingKineticConnection {
    void PopulateP2PMessage(Message_P2POperation *mutable_p2pop,
        const shared_ptr<const P2PPushRequest> push_request);
    unique_ptr<Message> NewMessage(Message_MessageType message_type);
    Message_Synchronization GetSynchronizationForPersistMode(PersistMode persistMode);

    NonblockingPacketServiceInterface *service_;
    const shared_ptr<const string> empty_str_;

    int64_t cluster_version_;

    DISALLOW_COPY_AND_ASSIGN(NonblockingKineticConnection);
+3 −2
Original line number Diff line number Diff line
@@ -92,10 +92,11 @@ class ThreadsafeBlockingKineticConnection : public BlockingKineticConnection {

    KineticStatus Put(const shared_ptr<const string> key,
            const shared_ptr<const string> current_version, WriteMode mode,
            const shared_ptr<const KineticRecord> record);
            const shared_ptr<const KineticRecord> record,
            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, PersistMode persistMode);

    KineticStatus InstantSecureErase(const shared_ptr<string> pin);

+8 −3
Original line number Diff line number Diff line
@@ -70,9 +70,14 @@ class ThreadsafeNonblockingKineticConnection : public NonblockingKineticConnecti
    HandlerKey Put(const shared_ptr<const string> key,
        const shared_ptr<const string> current_version, WriteMode mode,
        const shared_ptr<const KineticRecord> record,
        const shared_ptr<PutCallbackInterface> callback);
    HandlerKey Delete(const shared_ptr<const string> key, const shared_ptr<const string> version,
        WriteMode mode, const shared_ptr<SimpleCallbackInterface> callback);
        const shared_ptr<PutCallbackInterface> callback,
        PersistMode persistMode);
    HandlerKey Delete(
            const shared_ptr<const string> key,
            const shared_ptr<const string> version,
            WriteMode mode,
            const shared_ptr<SimpleCallbackInterface> callback,
            PersistMode persistMode);
    HandlerKey InstantSecureErase(const shared_ptr<string> pin,
        const shared_ptr<SimpleCallbackInterface> callback);
    HandlerKey SetClusterVersion(int64_t new_cluster_version,
Loading