blob: 61eaab8bcd79a474444da98519b1d86ada070bc5 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
#include <assert.h>
#include <cstdio>
#include <string>
#include "pegasus/client.h"
#include "pegasus/error.h"
using namespace pegasus;
int main(int argc, const char *argv[])
{
if (!pegasus_client_factory::initialize("config.ini")) {
fprintf(stderr, "ERROR: init pegasus failed\n");
return -1;
}
if (argc != 3) {
fprintf(stderr, "USAGE: %s <cluster-name> <app-name>\n", argv[0]);
return -1;
}
// set
pegasus_client *client = pegasus_client_factory::get_client(argv[1], argv[2]);
std::string hash_key("pegasus_cpp_sample_hash_key");
std::string sort_key("pegasus_cpp_sample_sort_key");
std::string value("pegasus_cpp_sample_value");
int ret = client->set(hash_key, sort_key, value);
if (ret != PERR_OK) {
fprintf(stderr, "ERROR: set failed, error=%s\n", client->get_error_string(ret));
return -1;
} else {
fprintf(stdout, "INFO: set succeed\n");
}
// get
std::string get_value;
ret = client->get(hash_key, sort_key, get_value);
if (ret != PERR_OK) {
fprintf(stderr, "ERROR: get failed, error=%s\n", client->get_error_string(ret));
return -1;
} else {
fprintf(stdout, "INFO: get succeed, value=%s\n", get_value.c_str());
}
// hash scan
pegasus_client::pegasus_scanner *scanner = nullptr;
std::string start_sort_key("pegasus_cpp_sample");
std::string stop_sort_key(""); // empty string means scan to the end
pegasus_client::scan_options scan_options;
scan_options.start_inclusive = true;
scan_options.stop_inclusive = false;
ret = client->get_scanner(hash_key, start_sort_key, stop_sort_key, scan_options, scanner);
if (ret != PERR_OK) {
fprintf(stderr, "ERROR: get scanner failed, error=%s\n", client->get_error_string(ret));
return -1;
} else {
fprintf(stdout, "INFO: get scanner succeed\n");
}
assert(scanner != nullptr);
pegasus::pegasus_client::pegasus_scanner_wrapper scanner_wrapper(scanner);
std::string scan_hash_key;
std::string scan_sort_key;
std::string scan_value;
int i = 0;
while (scanner->next(scan_hash_key, scan_sort_key, scan_value) == PERR_OK) {
fprintf(stdout,
"INFO: scan(%d): [%s][%s] => %s\n",
i++,
scan_hash_key.c_str(),
scan_sort_key.c_str(),
scan_value.c_str());
}
// del
ret = client->del(hash_key, sort_key);
if (ret != PERR_OK) {
fprintf(stderr, "ERROR: del failed, error=%s\n", client->get_error_string(ret));
return -1;
} else {
fprintf(stdout, "INFO: del succeed\n");
}
return 0;
}