Loading .gitignore +1 −0 Original line number Diff line number Diff line Loading @@ -20,3 +20,4 @@ kinetic_cpp_client_examples.xcodeproj/ delete_file_nonblocking write_file_nonblocking /firmware_update blocking_example CMakeLists.txt +28 −22 Original line number Diff line number Diff line Loading @@ -8,32 +8,39 @@ set(CMAKE_CXX_FLAGS "-g --std=c++11 -Wall -Wextra -Werror -Wno-unknown-warning-o set(GENERATED_SOURCES_PATH ${kinetic_cpp_client_SOURCE_DIR}/src/main/generated) include(ExternalProject) option(USE_LOCAL_KINETIC_CLIENT "Uses the kinetic client at the KINETIC_CLIENT_PATH variable instead of downloading library from Git" off) if(USE_LOCAL_KINETIC_CLIENT) else(USE_LOCAL_KINETIC_CLIENT) set(KINETIC_CLIENT_PATH "${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client") ExternalProject_add( kinetic_cpp_client PREFIX "vendor" GIT_REPOSITORY "git@github.com:Seagate/Kinetic-C-Client.git" GIT_TAG "c9c578e88f76b4cffdd09ba49a334a7c84b8e8e6" GIT_TAG "7046918130914d97036e1aaf708fffa9f89ddbe0" BUILD_IN_SOURCE 1 INSTALL_COMMAND "" ) endif(USE_LOCAL_KINETIC_CLIENT) include_directories( vendor/src/kinetic_cpp_client/vendor/src/protobufutil/vendor/include vendor/src/kinetic_cpp_client/vendor/src/protobufutil/include vendor/src/kinetic_cpp_client/vendor/src/protobufutil/vendor/src/gmock/fused-src vendor/src/kinetic_cpp_client/src/main vendor/src/kinetic_cpp_client/src/main/generated vendor/src/kinetic_cpp_client/include ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/vendor/include ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/include ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/vendor/src/gmock/fused-src ${KINETIC_CLIENT_PATH}/src/main ${KINETIC_CLIENT_PATH}/src/main/generated ${KINETIC_CLIENT_PATH}/include ) set(LIBRARY_DEPENDENCIES ${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client/libkinetic_client.a ${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client/vendor/src/protobufutil/libprotobufutil.a ${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client/vendor/src/protobufutil/vendor/lib/libglog.a ${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client/vendor/src/protobufutil/vendor/lib/libgflags.a ${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client/vendor/src/protobufutil/vendor/lib/libssl.a ${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client/vendor/src/protobufutil/vendor/lib/libcrypto.a ${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client/vendor/src/protobufutil/vendor/lib/libprotobuf.a ${KINETIC_CLIENT_PATH}/libkinetic_client.a ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/libprotobufutil.a ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/vendor/lib/libglog.a ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/vendor/lib/libgflags.a ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/vendor/lib/libssl.a ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/vendor/lib/libcrypto.a ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/vendor/lib/libprotobuf.a ${CMAKE_THREAD_LIBS_INIT} dl ) Loading @@ -52,7 +59,6 @@ macro(add_example_target NAME) endmacro(add_example_target) add_example_target(kineticstat) add_example_target(async) add_example_target(ise) add_example_target(setclusterversion) add_example_target(setpin) Loading src/async.ccdeleted 100644 → 0 +0 −63 Original line number Diff line number Diff line // This is shows a minimal example of issuing an async request and processing the result #include <fcntl.h> #include <sys/select.h> #include "kinetic/kinetic_connection_factory.h" #include "socket_wrapper.h" #include "value_factory.h" using com::seagate::kinetic::HmacProvider; using com::seagate::kinetic::ValueFactory; using kinetic::ConnectionOptions; using kinetic::GetCallbackInterface; using kinetic::Message; using kinetic::NonblockingKineticConnection; using kinetic::NonblockingError; using palominolabs::protobufutil::MessageStreamFactory; class TestCallback : public GetCallbackInterface { public: void Success(const std::string &key, const std::string &value, const std::string &version, const std::string &tag) { printf("The callback got called!\n"); } virtual void Failure(NonblockingError error) { printf("Error!\n"); exit(1); } }; int main(int argc, char* argv[]) { ConnectionOptions options = { .host = "localhost", .port = 8123, .use_ssl = false, .user_id = 1, .hmac_key = "asdfasdf" }; HmacProvider hmac_provider; ValueFactory value_factory; MessageStreamFactory message_stream_factory(NULL, value_factory); kinetic::KineticConnectionFactory kinetic_connection_factory(hmac_provider, message_stream_factory); kinetic::NonblockingKineticConnection *connection; if(!kinetic_connection_factory.NewNonblockingConnection(options, &connection).ok()) { printf("Unable to connect"); return 1; } TestCallback *callback = new TestCallback; connection->Get("key", callback); fd_set read_fds, write_fds; int num_fds = 0; connection->Run(&read_fds, &write_fds, &num_fds); connection->Run(&read_fds, &write_fds, &num_fds); delete callback; delete connection; return 0; } src/delete_file_nonblocking.cc +19 −27 Original line number Diff line number Diff line // This deletes a file written using write_file_(non)blocking #include <stdio.h> #include <glog/logging.h> #include "protobufutil/message_stream.h" Loading @@ -15,7 +14,6 @@ using com::seagate::kinetic::proto::Message; using com::seagate::kinetic::proto::Message_MessageType_GET; using com::seagate::kinetic::proto::Message_Algorithm_SHA1; using com::seagate::kinetic::ValueFactory; using kinetic::KineticConnection; using kinetic::KineticConnectionFactory; using kinetic::KineticRecord; using kinetic::NonblockingError; Loading @@ -42,6 +40,7 @@ private: }; int main(int argc, char* argv[]) { google::InitGoogleLogging(argv[0]); if (argc != 3) { printf("%s: <host> <kinetic key>\n", argv[0]); Loading @@ -57,63 +56,56 @@ int main(int argc, char* argv[]) { options.user_id = 1; options.hmac_key = "asdfasdf"; HmacProvider hmac_provider; ValueFactory value_factory; MessageStreamFactory message_stream_factory(NULL, value_factory); kinetic::KineticConnectionFactory kinetic_connection_factory(hmac_provider, message_stream_factory); KineticConnectionFactory kinetic_connection_factory = kinetic::NewKineticConnectionFactory(); kinetic::KineticConnection* kinetic_connection; if(!kinetic_connection_factory.NewConnection(options, &kinetic_connection).ok()) { kinetic::ConnectionHandle* connection; if(!kinetic_connection_factory.NewConnection(options, &connection).ok()) { printf("Unable to connect\n"); return 1; } std::string value; if(!kinetic_connection->Get(kinetic_key, &value, NULL, NULL).ok()) { KineticRecord* record; if(!connection->blocking().Get(kinetic_key, &record).ok()) { printf("Unable to get metadata\n"); return 1; } unsigned int file_size = std::stoi(value); printf("Deleting file of size %d\n", file_size); delete kinetic_connection; kinetic::NonblockingKineticConnection* connection; kinetic_connection_factory.NewNonblockingConnection(options, &connection); long long file_size = std::stoll(record->value()); delete record; printf("Deleting file of size %llu\n", file_size); char key_buffer[100]; int remaining = 0; for (unsigned int i = 0; i < file_size; i += 1024*1024) { DeleteCallback callback(&remaining); for (int64_t i = 0; i < file_size; i += 1024*1024) { unsigned int block_length = 1024*1024; if (i + block_length > file_size) { block_length = file_size - i + 1; } sprintf(key_buffer, "%s-%10d", kinetic_key, i); sprintf(key_buffer, "%s-%10" PRId64, kinetic_key, i); remaining++; DeleteCallback* callback = new DeleteCallback(&remaining); std::string key(key_buffer); connection->Delete(key, "", true, callback); connection->nonblocking().Delete(key, "", true, &callback); } remaining++; connection->Delete(kinetic_key, "", true, new DeleteCallback(&remaining)); connection->nonblocking().Delete(kinetic_key, "", true, &callback); fd_set read_fds, write_fds; int num_fds = 0; connection->Run(&read_fds, &write_fds, &num_fds); connection->nonblocking().Run(&read_fds, &write_fds, &num_fds); while (remaining > 0) { connection->Run(&read_fds, &write_fds, &num_fds); connection->nonblocking().Run(&read_fds, &write_fds, &num_fds); } printf("\nDone!\n"); delete connection; google::protobuf::ShutdownProtobufLibrary(); google::ShutdownGoogleLogging(); google::ShutDownCommandLineFlags(); return 0; } src/firmware_update.cc +4 −9 Original line number Diff line number Diff line Loading @@ -14,7 +14,6 @@ using com::seagate::kinetic::proto::Message; using com::seagate::kinetic::proto::Message_MessageType_GET; using com::seagate::kinetic::proto::Message_Algorithm_SHA1; using com::seagate::kinetic::ValueFactory; using kinetic::KineticConnection; using kinetic::KineticConnectionFactory; using kinetic::Status; using kinetic::KineticRecord; Loading @@ -36,14 +35,10 @@ int main(int argc, char* argv[]) { options.user_id = 1; options.hmac_key = "asdfasdf"; HmacProvider hmac_provider; ValueFactory value_factory; MessageStreamFactory message_stream_factory(NULL, value_factory); kinetic::KineticConnectionFactory kinetic_connection_factory(hmac_provider, message_stream_factory); kinetic::KineticConnectionFactory kinetic_connection_factory = kinetic::NewKineticConnectionFactory(); kinetic::KineticConnection* kinetic_connection; if (!kinetic_connection_factory.NewConnection(options, &kinetic_connection).ok()) { kinetic::ConnectionHandle* connection; if (!kinetic_connection_factory.NewConnection(options, &connection).ok()) { printf("Unable to connect\n"); return 1; } Loading @@ -57,7 +52,7 @@ int main(int argc, char* argv[]) { contents << in.rdbuf(); } if (!kinetic_connection->FirmwareUpdate(contents.str()).ok()) { if (!connection->blocking().UpdateFirmware(contents.str()).ok()) { printf("Unable to send firmware\n"); return 1; } Loading Loading
.gitignore +1 −0 Original line number Diff line number Diff line Loading @@ -20,3 +20,4 @@ kinetic_cpp_client_examples.xcodeproj/ delete_file_nonblocking write_file_nonblocking /firmware_update blocking_example
CMakeLists.txt +28 −22 Original line number Diff line number Diff line Loading @@ -8,32 +8,39 @@ set(CMAKE_CXX_FLAGS "-g --std=c++11 -Wall -Wextra -Werror -Wno-unknown-warning-o set(GENERATED_SOURCES_PATH ${kinetic_cpp_client_SOURCE_DIR}/src/main/generated) include(ExternalProject) option(USE_LOCAL_KINETIC_CLIENT "Uses the kinetic client at the KINETIC_CLIENT_PATH variable instead of downloading library from Git" off) if(USE_LOCAL_KINETIC_CLIENT) else(USE_LOCAL_KINETIC_CLIENT) set(KINETIC_CLIENT_PATH "${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client") ExternalProject_add( kinetic_cpp_client PREFIX "vendor" GIT_REPOSITORY "git@github.com:Seagate/Kinetic-C-Client.git" GIT_TAG "c9c578e88f76b4cffdd09ba49a334a7c84b8e8e6" GIT_TAG "7046918130914d97036e1aaf708fffa9f89ddbe0" BUILD_IN_SOURCE 1 INSTALL_COMMAND "" ) endif(USE_LOCAL_KINETIC_CLIENT) include_directories( vendor/src/kinetic_cpp_client/vendor/src/protobufutil/vendor/include vendor/src/kinetic_cpp_client/vendor/src/protobufutil/include vendor/src/kinetic_cpp_client/vendor/src/protobufutil/vendor/src/gmock/fused-src vendor/src/kinetic_cpp_client/src/main vendor/src/kinetic_cpp_client/src/main/generated vendor/src/kinetic_cpp_client/include ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/vendor/include ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/include ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/vendor/src/gmock/fused-src ${KINETIC_CLIENT_PATH}/src/main ${KINETIC_CLIENT_PATH}/src/main/generated ${KINETIC_CLIENT_PATH}/include ) set(LIBRARY_DEPENDENCIES ${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client/libkinetic_client.a ${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client/vendor/src/protobufutil/libprotobufutil.a ${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client/vendor/src/protobufutil/vendor/lib/libglog.a ${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client/vendor/src/protobufutil/vendor/lib/libgflags.a ${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client/vendor/src/protobufutil/vendor/lib/libssl.a ${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client/vendor/src/protobufutil/vendor/lib/libcrypto.a ${kinetic_cpp_client_examples_SOURCE_DIR}/vendor/src/kinetic_cpp_client/vendor/src/protobufutil/vendor/lib/libprotobuf.a ${KINETIC_CLIENT_PATH}/libkinetic_client.a ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/libprotobufutil.a ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/vendor/lib/libglog.a ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/vendor/lib/libgflags.a ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/vendor/lib/libssl.a ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/vendor/lib/libcrypto.a ${KINETIC_CLIENT_PATH}/vendor/src/protobufutil/vendor/lib/libprotobuf.a ${CMAKE_THREAD_LIBS_INIT} dl ) Loading @@ -52,7 +59,6 @@ macro(add_example_target NAME) endmacro(add_example_target) add_example_target(kineticstat) add_example_target(async) add_example_target(ise) add_example_target(setclusterversion) add_example_target(setpin) Loading
src/async.ccdeleted 100644 → 0 +0 −63 Original line number Diff line number Diff line // This is shows a minimal example of issuing an async request and processing the result #include <fcntl.h> #include <sys/select.h> #include "kinetic/kinetic_connection_factory.h" #include "socket_wrapper.h" #include "value_factory.h" using com::seagate::kinetic::HmacProvider; using com::seagate::kinetic::ValueFactory; using kinetic::ConnectionOptions; using kinetic::GetCallbackInterface; using kinetic::Message; using kinetic::NonblockingKineticConnection; using kinetic::NonblockingError; using palominolabs::protobufutil::MessageStreamFactory; class TestCallback : public GetCallbackInterface { public: void Success(const std::string &key, const std::string &value, const std::string &version, const std::string &tag) { printf("The callback got called!\n"); } virtual void Failure(NonblockingError error) { printf("Error!\n"); exit(1); } }; int main(int argc, char* argv[]) { ConnectionOptions options = { .host = "localhost", .port = 8123, .use_ssl = false, .user_id = 1, .hmac_key = "asdfasdf" }; HmacProvider hmac_provider; ValueFactory value_factory; MessageStreamFactory message_stream_factory(NULL, value_factory); kinetic::KineticConnectionFactory kinetic_connection_factory(hmac_provider, message_stream_factory); kinetic::NonblockingKineticConnection *connection; if(!kinetic_connection_factory.NewNonblockingConnection(options, &connection).ok()) { printf("Unable to connect"); return 1; } TestCallback *callback = new TestCallback; connection->Get("key", callback); fd_set read_fds, write_fds; int num_fds = 0; connection->Run(&read_fds, &write_fds, &num_fds); connection->Run(&read_fds, &write_fds, &num_fds); delete callback; delete connection; return 0; }
src/delete_file_nonblocking.cc +19 −27 Original line number Diff line number Diff line // This deletes a file written using write_file_(non)blocking #include <stdio.h> #include <glog/logging.h> #include "protobufutil/message_stream.h" Loading @@ -15,7 +14,6 @@ using com::seagate::kinetic::proto::Message; using com::seagate::kinetic::proto::Message_MessageType_GET; using com::seagate::kinetic::proto::Message_Algorithm_SHA1; using com::seagate::kinetic::ValueFactory; using kinetic::KineticConnection; using kinetic::KineticConnectionFactory; using kinetic::KineticRecord; using kinetic::NonblockingError; Loading @@ -42,6 +40,7 @@ private: }; int main(int argc, char* argv[]) { google::InitGoogleLogging(argv[0]); if (argc != 3) { printf("%s: <host> <kinetic key>\n", argv[0]); Loading @@ -57,63 +56,56 @@ int main(int argc, char* argv[]) { options.user_id = 1; options.hmac_key = "asdfasdf"; HmacProvider hmac_provider; ValueFactory value_factory; MessageStreamFactory message_stream_factory(NULL, value_factory); kinetic::KineticConnectionFactory kinetic_connection_factory(hmac_provider, message_stream_factory); KineticConnectionFactory kinetic_connection_factory = kinetic::NewKineticConnectionFactory(); kinetic::KineticConnection* kinetic_connection; if(!kinetic_connection_factory.NewConnection(options, &kinetic_connection).ok()) { kinetic::ConnectionHandle* connection; if(!kinetic_connection_factory.NewConnection(options, &connection).ok()) { printf("Unable to connect\n"); return 1; } std::string value; if(!kinetic_connection->Get(kinetic_key, &value, NULL, NULL).ok()) { KineticRecord* record; if(!connection->blocking().Get(kinetic_key, &record).ok()) { printf("Unable to get metadata\n"); return 1; } unsigned int file_size = std::stoi(value); printf("Deleting file of size %d\n", file_size); delete kinetic_connection; kinetic::NonblockingKineticConnection* connection; kinetic_connection_factory.NewNonblockingConnection(options, &connection); long long file_size = std::stoll(record->value()); delete record; printf("Deleting file of size %llu\n", file_size); char key_buffer[100]; int remaining = 0; for (unsigned int i = 0; i < file_size; i += 1024*1024) { DeleteCallback callback(&remaining); for (int64_t i = 0; i < file_size; i += 1024*1024) { unsigned int block_length = 1024*1024; if (i + block_length > file_size) { block_length = file_size - i + 1; } sprintf(key_buffer, "%s-%10d", kinetic_key, i); sprintf(key_buffer, "%s-%10" PRId64, kinetic_key, i); remaining++; DeleteCallback* callback = new DeleteCallback(&remaining); std::string key(key_buffer); connection->Delete(key, "", true, callback); connection->nonblocking().Delete(key, "", true, &callback); } remaining++; connection->Delete(kinetic_key, "", true, new DeleteCallback(&remaining)); connection->nonblocking().Delete(kinetic_key, "", true, &callback); fd_set read_fds, write_fds; int num_fds = 0; connection->Run(&read_fds, &write_fds, &num_fds); connection->nonblocking().Run(&read_fds, &write_fds, &num_fds); while (remaining > 0) { connection->Run(&read_fds, &write_fds, &num_fds); connection->nonblocking().Run(&read_fds, &write_fds, &num_fds); } printf("\nDone!\n"); delete connection; google::protobuf::ShutdownProtobufLibrary(); google::ShutdownGoogleLogging(); google::ShutDownCommandLineFlags(); return 0; }
src/firmware_update.cc +4 −9 Original line number Diff line number Diff line Loading @@ -14,7 +14,6 @@ using com::seagate::kinetic::proto::Message; using com::seagate::kinetic::proto::Message_MessageType_GET; using com::seagate::kinetic::proto::Message_Algorithm_SHA1; using com::seagate::kinetic::ValueFactory; using kinetic::KineticConnection; using kinetic::KineticConnectionFactory; using kinetic::Status; using kinetic::KineticRecord; Loading @@ -36,14 +35,10 @@ int main(int argc, char* argv[]) { options.user_id = 1; options.hmac_key = "asdfasdf"; HmacProvider hmac_provider; ValueFactory value_factory; MessageStreamFactory message_stream_factory(NULL, value_factory); kinetic::KineticConnectionFactory kinetic_connection_factory(hmac_provider, message_stream_factory); kinetic::KineticConnectionFactory kinetic_connection_factory = kinetic::NewKineticConnectionFactory(); kinetic::KineticConnection* kinetic_connection; if (!kinetic_connection_factory.NewConnection(options, &kinetic_connection).ok()) { kinetic::ConnectionHandle* connection; if (!kinetic_connection_factory.NewConnection(options, &connection).ok()) { printf("Unable to connect\n"); return 1; } Loading @@ -57,7 +52,7 @@ int main(int argc, char* argv[]) { contents << in.rdbuf(); } if (!kinetic_connection->FirmwareUpdate(contents.str()).ok()) { if (!connection->blocking().UpdateFirmware(contents.str()).ok()) { printf("Unable to send firmware\n"); return 1; } Loading