Skip to content

Commit da45203

Browse files
committed
Merge pull request #27 from plensing/master
Proto 3.0.0
2 parents c3d8a64 + b0fc663 commit da45203

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+2333
-1406
lines changed

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ set(EXTERNAL_PREFIX "${kinetic_cpp_client_BINARY_DIR}/vendor")
5252

5353
include(ExternalProject)
5454

55-
set(KINETIC_PROTO_VERSION "2.0.4")
56-
set(KINETIC_PROTO_MD5 "3ebdb728273b4919ab00a795ffdc91b3")
55+
set(KINETIC_PROTO_VERSION "3.0.0")
56+
set(KINETIC_PROTO_MD5 "85ca027b870811a297c1f6d792498934")
5757

5858
ExternalProject_add(
5959
kinetic-proto

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ This repo contains code for producing C and C++ kinetic clients.
55

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

1010

1111
Dependencies

include/kinetic/blocking_kinetic_connection.h

Lines changed: 49 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -21,164 +21,149 @@
2121
#ifndef KINETIC_CPP_CLIENT_BLOCKING_KINETIC_CONNECTION_H_
2222
#define KINETIC_CPP_CLIENT_BLOCKING_KINETIC_CONNECTION_H_
2323

24-
#include <memory>
25-
24+
#include "kinetic/blocking_kinetic_connection_interface.h"
2625
#include "kinetic/nonblocking_kinetic_connection.h"
27-
#include "kinetic/status.h"
28-
#include "kinetic/kinetic_connection.h"
29-
#include "kinetic/key_range_iterator.h"
30-
#include "kinetic/common.h"
31-
3226

3327
namespace kinetic {
3428

35-
using std::shared_ptr;
36-
using std::unique_ptr;
37-
using std::string;
38-
using std::vector;
39-
40-
class KeyRangeIterator;
41-
class BlockingCallbackState;
29+
class BlockingKineticConnection : public BlockingKineticConnectionInterface {
4230

43-
class BlockingKineticConnection {
4431
public:
45-
/// Takes ownership of the given NonblockingKineticConnection
46-
/// @param[in] nonblocking_connection The underlying connection that will be used
47-
/// @param[in] network_timeout_seconds If an operation goes more than network_timeout_seconds
48-
/// seconds without receiving data the operation will fail
49-
explicit BlockingKineticConnection(
50-
shared_ptr<NonblockingKineticConnection> nonblocking_connection,
51-
unsigned int network_timeout_seconds);
52-
53-
explicit BlockingKineticConnection(
32+
explicit BlockingKineticConnection(
5433
unique_ptr<NonblockingKineticConnection> nonblocking_connection,
5534
unsigned int network_timeout_seconds);
5635

57-
virtual ~BlockingKineticConnection();
36+
~BlockingKineticConnection();
5837

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

63-
virtual KineticStatus NoOp();
42+
KineticStatus NoOp();
6443

65-
virtual KineticStatus Get(
44+
KineticStatus Get(
6645
const shared_ptr<const string> key,
6746
unique_ptr<KineticRecord>& record);
6847

69-
virtual KineticStatus Get(const string& key, unique_ptr<KineticRecord>& record);
48+
KineticStatus Get(const string& key, unique_ptr<KineticRecord>& record);
7049

71-
virtual KineticStatus GetNext(
50+
KineticStatus GetNext(
7251
const shared_ptr<const string> key,
7352
unique_ptr<string>& actual_key,
7453
unique_ptr<KineticRecord>& record);
7554

76-
virtual KineticStatus GetNext(
55+
KineticStatus GetNext(
7756
const string& key,
7857
unique_ptr<string>& actual_key,
7958
unique_ptr<KineticRecord>& record);
8059

81-
virtual KineticStatus GetPrevious(const shared_ptr<const string> key,
60+
KineticStatus GetPrevious(const shared_ptr<const string> key,
8261
unique_ptr<string>& actual_key,
8362
unique_ptr<KineticRecord>& record);
8463

85-
virtual KineticStatus GetPrevious(const string& key,
64+
KineticStatus GetPrevious(const string& key,
8665
unique_ptr<string>& actual_key,
8766
unique_ptr<KineticRecord>& record);
8867

89-
virtual KineticStatus GetVersion(const shared_ptr<const string> key,
68+
KineticStatus GetVersion(const shared_ptr<const string> key,
9069
unique_ptr<string>& version);
9170

92-
virtual KineticStatus GetVersion(const string& key, unique_ptr<string>& version);
71+
KineticStatus GetVersion(const string& key, unique_ptr<string>& version);
9372

94-
virtual KineticStatus GetKeyRange(const shared_ptr<const string> start_key,
73+
KineticStatus GetKeyRange(const shared_ptr<const string> start_key,
9574
bool start_key_inclusive,
9675
const shared_ptr<const string> end_key,
9776
bool end_key_inclusive,
9877
bool reverse_results,
9978
int32_t max_results,
10079
unique_ptr<vector<string>>& keys);
10180

102-
virtual KineticStatus GetKeyRange(const string& start_key,
81+
KineticStatus GetKeyRange(const string& start_key,
10382
bool start_key_inclusive,
10483
const string& end_key,
10584
bool end_key_inclusive,
10685
bool reverse_results,
10786
int32_t max_results,
10887
unique_ptr<vector<string>>& keys);
10988

110-
111-
virtual KeyRangeIterator IterateKeyRange(const shared_ptr<const string> start_key,
89+
KeyRangeIterator IterateKeyRange(const shared_ptr<const string> start_key,
11290
bool start_key_inclusive,
11391
const shared_ptr<const string> end_key,
11492
bool end_key_inclusive,
11593
unsigned int frame_size);
11694

117-
virtual KeyRangeIterator IterateKeyRange(const string& start_key,
95+
KeyRangeIterator IterateKeyRange(const string& start_key,
11896
bool start_key_inclusive,
11997
const string& end_key,
12098
bool end_key_inclusive,
12199
unsigned int frame_size);
122100

123-
virtual KineticStatus Put(const shared_ptr<const string> key,
101+
KineticStatus Put(const shared_ptr<const string> key,
124102
const shared_ptr<const string> current_version, WriteMode mode,
125103
const shared_ptr<const KineticRecord> record,
126104
PersistMode persistMode);
127105

128-
virtual KineticStatus Put(const string& key,
106+
KineticStatus Put(const string& key,
129107
const string& current_version, WriteMode mode,
130108
const KineticRecord& record,
131109
PersistMode persistMode);
132110

133-
virtual KineticStatus Put(const shared_ptr<const string> key,
111+
KineticStatus Put(const shared_ptr<const string> key,
134112
const shared_ptr<const string> current_version, WriteMode mode,
135113
const shared_ptr<const KineticRecord> record);
136114

137-
virtual KineticStatus Put(const string& key,
115+
KineticStatus Put(const string& key,
138116
const string& current_version, WriteMode mode,
139117
const KineticRecord& record);
140118

141-
virtual KineticStatus Delete(const shared_ptr<const string> key,
119+
KineticStatus Delete(const shared_ptr<const string> key,
142120
const shared_ptr<const string> version, WriteMode mode, PersistMode persistMode);
143121

144-
virtual KineticStatus Delete(const string& key, const string& version,
122+
KineticStatus Delete(const string& key, const string& version,
145123
WriteMode mode, PersistMode persistMode);
146124

147-
virtual KineticStatus Delete(const shared_ptr<const string> key,
125+
KineticStatus Delete(const shared_ptr<const string> key,
148126
const shared_ptr<const string> version, WriteMode mode);
149127

150-
virtual KineticStatus Delete(const string& key, const string& version, WriteMode mode);
151-
152-
virtual KineticStatus InstantSecureErase(const shared_ptr<string> pin);
128+
KineticStatus Delete(const string& key, const string& version, WriteMode mode);
153129

154-
virtual KineticStatus InstantSecureErase(const string& pin);
130+
KineticStatus GetLog(unique_ptr<DriveLog>& drive_log);
155131

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

158-
virtual KineticStatus GetLog(unique_ptr<DriveLog>& drive_log);
134+
KineticStatus P2PPush(const P2PPushRequest& push_request,
135+
unique_ptr<vector<KineticStatus>>& operation_statuses);
159136

160-
virtual KineticStatus UpdateFirmware(const shared_ptr<const string> new_firmware);
137+
KineticStatus P2PPush(const shared_ptr<const P2PPushRequest> push_request,
138+
unique_ptr<vector<KineticStatus>>& operation_statuses);
161139

162-
virtual KineticStatus SetACLs(const shared_ptr<const list<ACL>> acls);
140+
KineticStatus SetClusterVersion(int64_t cluster_version);
141+
KineticStatus UpdateFirmware(const shared_ptr<const string> new_firmware);
142+
KineticStatus SetACLs(const shared_ptr<const list<ACL>> acls);
163143

164-
virtual KineticStatus SetPin(const shared_ptr<const string> new_pin,
144+
KineticStatus SetErasePIN(const shared_ptr<const string> new_pin,
165145
const shared_ptr<const string> current_pin = make_shared<string>());
146+
KineticStatus SetErasePIN(const string& new_pin, const string& current_pin);
147+
KineticStatus SetLockPIN(const shared_ptr<const string> new_pin,
148+
const shared_ptr<const string> current_pin = make_shared<string>());
149+
KineticStatus SetLockPIN(const string& new_pin, const string& current_pin);
150+
KineticStatus InstantErase(const shared_ptr<string> pin);
151+
KineticStatus InstantErase(const string& pin);
152+
KineticStatus SecureErase(const shared_ptr<string> pin);
153+
KineticStatus SecureErase(const string& pin);
154+
KineticStatus LockDevice(const shared_ptr<string> pin);
155+
KineticStatus LockDevice(const string& pin);
156+
KineticStatus UnlockDevice(const shared_ptr<string> pin);
157+
KineticStatus UnlockDevice(const string& pin);
166158

167-
virtual KineticStatus SetPin(const string& new_pin, const string& current_pin);
168-
169-
virtual KineticStatus P2PPush(const P2PPushRequest& push_request,
170-
unique_ptr<vector<KineticStatus>>& operation_statuses);
171-
172-
virtual KineticStatus P2PPush(const shared_ptr<const P2PPushRequest> push_request,
173-
unique_ptr<vector<KineticStatus>>& operation_statuses);
174159

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

178163
/// Helper method for translating a StatusCode from the drive into an API client KineticStatus
179164
/// object
180165
KineticStatus GetKineticStatus(StatusCode code);
181-
shared_ptr<NonblockingKineticConnection> nonblocking_connection_;
166+
unique_ptr<NonblockingKineticConnection> nonblocking_connection_;
182167
const unsigned int network_timeout_seconds_;
183168
DISALLOW_COPY_AND_ASSIGN(BlockingKineticConnection);
184169
};
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
/*
2+
* kinetic-cpp-client
3+
* Copyright (C) 2014 Seagate Technology.
4+
*
5+
* This program is free software; you can redistribute it and/or
6+
* modify it under the terms of the GNU General Public License
7+
* as published by the Free Software Foundation; either version 2
8+
* of the License, or (at your option) any later version.
9+
*
10+
* This program is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU General Public License
16+
* along with this program; if not, write to the Free Software
17+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18+
*
19+
*/
20+
21+
#ifndef BLOCKING_KINETIC_CONNECTION_INTERFACE_H_
22+
#define BLOCKING_KINETIC_CONNECTION_INTERFACE_H_
23+
24+
#include "kinetic/status.h"
25+
#include "kinetic/kinetic_connection.h"
26+
#include "kinetic/key_range_iterator.h"
27+
#include "kinetic/common.h"
28+
#include "kinetic/nonblocking_kinetic_connection.h"
29+
#include <memory>
30+
#include <string>
31+
#include <vector>
32+
33+
namespace kinetic {
34+
35+
using std::shared_ptr;
36+
using std::unique_ptr;
37+
using std::string;
38+
using std::vector;
39+
40+
class KeyRangeIterator;
41+
class BlockingCallbackState;
42+
43+
44+
class BlockingKineticConnectionInterface {
45+
public:
46+
virtual ~BlockingKineticConnectionInterface(){};
47+
48+
virtual void SetClientClusterVersion(int64_t cluster_version) = 0;
49+
50+
virtual KineticStatus NoOp() = 0;
51+
virtual KineticStatus Get(
52+
const shared_ptr<const string> key,
53+
unique_ptr<KineticRecord>& record) = 0;
54+
virtual KineticStatus Get(const string& key, unique_ptr<KineticRecord>& record) = 0;
55+
virtual KineticStatus GetNext(
56+
const shared_ptr<const string> key,
57+
unique_ptr<string>& actual_key,
58+
unique_ptr<KineticRecord>& record) = 0;
59+
virtual KineticStatus GetNext(
60+
const string& key,
61+
unique_ptr<string>& actual_key,
62+
unique_ptr<KineticRecord>& record) = 0;
63+
virtual KineticStatus GetPrevious(const shared_ptr<const string> key,
64+
unique_ptr<string>& actual_key,
65+
unique_ptr<KineticRecord>& record) = 0;
66+
virtual KineticStatus GetPrevious(const string& key,
67+
unique_ptr<string>& actual_key,
68+
unique_ptr<KineticRecord>& record) = 0;
69+
virtual KineticStatus GetVersion(const shared_ptr<const string> key,
70+
unique_ptr<string>& version) = 0;
71+
virtual KineticStatus GetVersion(const string& key, unique_ptr<string>& version) = 0;
72+
virtual KineticStatus GetKeyRange(const shared_ptr<const string> start_key,
73+
bool start_key_inclusive,
74+
const shared_ptr<const string> end_key,
75+
bool end_key_inclusive,
76+
bool reverse_results,
77+
int32_t max_results,
78+
unique_ptr<vector<string>>& keys) = 0;
79+
virtual KineticStatus GetKeyRange(const string& start_key,
80+
bool start_key_inclusive,
81+
const string& end_key,
82+
bool end_key_inclusive,
83+
bool reverse_results,
84+
int32_t max_results,
85+
unique_ptr<vector<string>>& keys) = 0;
86+
virtual KeyRangeIterator IterateKeyRange(const shared_ptr<const string> start_key,
87+
bool start_key_inclusive,
88+
const shared_ptr<const string> end_key,
89+
bool end_key_inclusive,
90+
unsigned int frame_size) = 0;
91+
virtual KeyRangeIterator IterateKeyRange(const string& start_key,
92+
bool start_key_inclusive,
93+
const string& end_key,
94+
bool end_key_inclusive,
95+
unsigned int frame_size) = 0;
96+
virtual KineticStatus Put(const shared_ptr<const string> key,
97+
const shared_ptr<const string> current_version, WriteMode mode,
98+
const shared_ptr<const KineticRecord> record,
99+
PersistMode persistMode) = 0;
100+
virtual KineticStatus Put(const string& key,
101+
const string& current_version, WriteMode mode,
102+
const KineticRecord& record,
103+
PersistMode persistMode) = 0;
104+
virtual KineticStatus Put(const shared_ptr<const string> key,
105+
const shared_ptr<const string> current_version, WriteMode mode,
106+
const shared_ptr<const KineticRecord> record) = 0;
107+
virtual KineticStatus Put(const string& key,
108+
const string& current_version, WriteMode mode,
109+
const KineticRecord& record) = 0;
110+
virtual KineticStatus Delete(const shared_ptr<const string> key,
111+
const shared_ptr<const string> version, WriteMode mode, PersistMode persistMode) = 0;
112+
virtual KineticStatus Delete(const string& key, const string& version,
113+
WriteMode mode, PersistMode persistMode) = 0;
114+
virtual KineticStatus Delete(const shared_ptr<const string> key,
115+
const shared_ptr<const string> version, WriteMode mode) = 0;
116+
virtual KineticStatus Delete(const string& key, const string& version, WriteMode mode) = 0;
117+
virtual KineticStatus GetLog(unique_ptr<DriveLog>& drive_log) = 0;
118+
virtual KineticStatus GetLog(const vector<Command_GetLog_Type>& types, unique_ptr<DriveLog>& drive_log) = 0;
119+
virtual KineticStatus P2PPush(const P2PPushRequest& push_request,
120+
unique_ptr<vector<KineticStatus>>& operation_statuses) = 0;
121+
virtual KineticStatus P2PPush(const shared_ptr<const P2PPushRequest> push_request,
122+
unique_ptr<vector<KineticStatus>>& operation_statuses) = 0;
123+
124+
virtual KineticStatus SetClusterVersion(int64_t cluster_version) = 0;
125+
virtual KineticStatus UpdateFirmware(const shared_ptr<const string> new_firmware) = 0;
126+
virtual KineticStatus SetACLs(const shared_ptr<const list<ACL>> acls) = 0;
127+
128+
virtual KineticStatus SetErasePIN(const shared_ptr<const string> new_pin,
129+
const shared_ptr<const string> current_pin = make_shared<string>()) = 0;
130+
virtual KineticStatus SetErasePIN(const string& new_pin, const string& current_pin) = 0;
131+
virtual KineticStatus SetLockPIN(const shared_ptr<const string> new_pin,
132+
const shared_ptr<const string> current_pin = make_shared<string>()) = 0;
133+
virtual KineticStatus SetLockPIN(const string& new_pin, const string& current_pin) = 0;
134+
virtual KineticStatus InstantErase(const shared_ptr<string> pin) = 0;
135+
virtual KineticStatus InstantErase(const string& pin) = 0;
136+
virtual KineticStatus SecureErase(const shared_ptr<string> pin) = 0;
137+
virtual KineticStatus SecureErase(const string& pin) = 0;
138+
virtual KineticStatus LockDevice(const shared_ptr<string> pin) = 0;
139+
virtual KineticStatus LockDevice(const string& pin) = 0;
140+
virtual KineticStatus UnlockDevice(const shared_ptr<string> pin) = 0;
141+
virtual KineticStatus UnlockDevice(const string& pin) = 0;
142+
143+
};
144+
145+
} // namespace kinetic
146+
147+
148+
149+
#endif /* BLOCKING_KINETIC_CONNECTION_INTERFACE_H_ */

include/kinetic/key_range_iterator.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
#include <string>
2525
#include <vector>
26+
#include <memory>
2627

2728
#include "kinetic/blocking_kinetic_connection.h"
2829

0 commit comments

Comments
 (0)