Commit 61a0fc81 authored by Manuel Wudka-Robles's avatar Manuel Wudka-Robles
Browse files

Merge pull request #14 from Seagate/features/handler-key

Features/handler key
parents 45012796 d3140e92
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ cmake_install.cmake
*.build/
*.xcodeproj/
vendor/
/tmp

# binaries

+1 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ else(USE_LOCAL_KINETIC_CLIENT)
        kinetic_cpp_client
        PREFIX "vendor"
        GIT_REPOSITORY "git@github.com:Seagate/Kinetic-C-Client.git"
        GIT_TAG "510bc7dea3ab162abc87ac87c2e933ea0833a7bc"
        GIT_TAG "f994d581aa0193dc1a8bfc6a83067caaa70f0b3a"
        BUILD_IN_SOURCE 1
        INSTALL_COMMAND ""
    )
+17 −3
Original line number Diff line number Diff line
@@ -24,7 +24,8 @@ using std::string;

class Callback : public GetCallbackInterface {
public:
    Callback(char* buffer, unsigned int expected_length, int* remaining) : buffer_(buffer), expected_length_(expected_length), remaining_(remaining) {};
    Callback(char* buffer, unsigned int expected_length, int* remaining) : buffer_(buffer),
        expected_length_(expected_length), remaining_(remaining) {};
    void Success(const std::string &key, std::unique_ptr<KineticRecord> record) {
        if(expected_length_ != record->value()->size()) {
            printf("Received value chunk of wrong size\n");
@@ -36,7 +37,7 @@ public:
        (*remaining_)--;
    }
    void Failure(StatusCode error) {
        printf("Error!\n");
        printf("Error: %d\n", static_cast<int>(error));
        exit(1);
    }
private:
@@ -122,7 +123,20 @@ int main(int argc, char* argv[]) {

    connection->nonblocking().Run(&read_fds, &write_fds, &num_fds);
    while (remaining > 0) {
        while(select(num_fds + 1, &read_fds, &write_fds, NULL, NULL) <= 0);
        struct timeval tv;
        tv.tv_sec = 10;
        tv.tv_usec = 0;

        int number_ready_fds = select(num_fds + 1, &read_fds, &write_fds, NULL, &tv);
        if (number_ready_fds < 0) {
            // select() returned an error
            printf("i/o error: %s\n", strerror(errno));
            return 1;
        } else if (number_ready_fds == 0) {
            printf("connection timed out\n");
            return 1;
        }

        connection->nonblocking().Run(&read_fds, &write_fds, &num_fds);
    }

+10 −7
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ using com::seagate::kinetic::proto::Message_Algorithm_SHA1;
using kinetic::KineticConnectionFactory;
using kinetic::BlockingKineticConnection;
using kinetic::Status;
using kinetic::KineticStatus;
using kinetic::KineticRecord;
using kinetic::ConnectionOptions;
using kinetic::ConnectionHandle;
@@ -129,18 +130,20 @@ void put_range(int64_t start, int64_t end, int64_t total_size, const char* kinet

        std::string key(key_buffer);
        std::string value(inputfile_data + i, value_size);
        if(!handle->blocking().Put(
        KineticStatus status = handle->blocking().Put(
                    key,
                    "",
                    kinetic::IGNORE_VERSION,
                KineticRecord(value, "", "", Message_Algorithm_SHA1)).ok()) {
            printf("Unable to write chunk\n");
                    KineticRecord(value, "", "", Message_Algorithm_SHA1));
        if(!status.ok()) {
            printf("Unable to write chunk: %d %s\n", static_cast<int>(status.statusCode()),
                status.message().c_str());
            return;
        }
        printf(".");
        fflush(stdout);
    }
    printf("\n");
    printf("\nThread done\n");

    if (close(file)) {
        printf("Unable to close file\n");