Build TOP Environments

開発者向け

前提

仕様について
C++言語の永続/非永続chmpx接続について
サンプルコードについて

C言語インタフェース

デバッグ関連(C I/F)
chmpx関連(C I/F)
Last Response Code関連(C I/F)
Get関連(C I/F)
Get Direct関連(C I/F)
Get Subkey関連(C I/F)
Get Attribute関連(C I/F)
Set関連(C I/F)
Set Direct関連(C I/F)
Set Subkey関連(C I/F)
Clear Subkey関連(C I/F)
Add Subkey関連(C I/F)
Set All関連(C I/F)
Remove Key関連(C I/F)
Remove Subkey関連(C I/F)
Rename Key関連(C I/F)
Queue(KeyQUeue) Push関連(C I/F)
Queue(KeyQUeue) Pop関連(C I/F)
Queue(KeyQUeue) Remove関連(C I/F)
CAS(Compare And Swap) Init関連(C I/F)
CAS(Compare And Swap) Get関連(C I/F)
CAS(Compare And Swap) Set関連(C I/F)
CAS(Compare And Swap) Increment/Decrement関連(C I/F)

C++言語インタフェース

デバッグ関連(C++ I/F)
コマンドクラスファクトリ関連(C++ I/F)
K2hdkcComGetクラス
K2hdkcComGetDirectクラス
K2hdkcComGetSubkeysクラス
K2hdkcComGetAttrsクラス
K2hdkcComGetAttrクラス
K2hdkcComSetクラス
K2hdkcComSetDirectクラス
K2hdkcComSetSubkeysクラス
K2hdkcComSetAllクラス
K2hdkcComAddSubkeysクラス
K2hdkcComAddSubkeyクラス
K2hdkcComDelクラス
K2hdkcComDelSubkeysクラス
K2hdkcComDelSubkeyクラス
K2hdkcComRenクラス
K2hdkcComQPushクラス
K2hdkcComQPopクラス
K2hdkcComQDelクラス
K2hdkcComCasInitクラス
K2hdkcComCasGetクラス
K2hdkcComCasSetクラス
K2hdkcComCasIncDecクラス
K2hdkcComStateクラス


前提

k2hdkcライブラリを利用したプログラムを作成するための前提条件を説明します。

仕様について

k2hdkcライブラリを利用する前に、k2hdkcライブラリの仕様の理解が必要となります。 k2hdkcクラスタは、通信ミドルウエア(CHMPX)とKey Value Store(KVS)ライブラリ(K2HASH)を組み合わせて実現されています。 k2hdkcクラスタへアクセスするためのプログラムをk2hdkcライブラリを利用し、作成することができます。

k2hdkcクラスタデータの各操作API(C言語/C++言語)は、k2hdkcクラスタにアクセスするため通信ミドルウエア(chmpx)を通して、内部通信コマンドを送受信します。 各APIは、この通信を行う際に以下の2種類の方法があります。

各APIの動作は同じですが、操作(k2hdkcクラスタへの通信)の前後でchmpxに対して、毎回接続する処理を行うか否かの違いがあります。 毎回接続するタイプは、クライアントプロセスが永続的な接続を維持できない場合に利用します。(例:HTTPプロセスのハンドラとして実装されている場合など) 永続的な接続を維持するタイプは、デーモンプロセスとして動作するクライアントプロセスのケースなどで利用できます。

C++言語の永続/非永続chmpx接続について

C++言語では、chmpxとの永続/非永続接続において、以下に示す手順の違いがあります。 ただし、それぞれにおいて手順は異なりますが、chmpxへの接続処理、切断処理を除く、通信コマンド(専用通信コマンドクラス)の処理はは同じです。 永続/非永続接続の違いは、専用通信コマンドクラスオブジェクトを作成するグローバルメソッド(マクロ)の呼び出しだけの違いとなっています。

非永続chmpx接続

C++言語ライブラリで、非永続chmpx接続を使う場合は、以下の手順でライブラリを呼び出します。

  1. グローバルメソッド(マクロ):GetOtSlaveK2hdkcCom…() を使い専用通信コマンドクラスオブジェクトを取得します。
  2. 専用通信コマンドクラスオブジェクトの CommandSend()系メソッドを呼び出し、処理を行います。
  3. 処理結果は、専用通信コマンドクラスオブジェクトのGetResponseData()メソッドで取得できます。(CommandSend()系メソッドでも同時取得可能)
  4. 最後に、専用通信コマンドクラスオブジェクトを破棄します。

永続chmpx接続

C++言語ライブラリで、永続chmpx接続を使う場合は、以下の手順でライブラリを呼び出します。

  1. K2hdkcSlaveクラスインスタンスを作成し、Initialize()メソッドで初期化します。
  2. K2hdkcSlaveクラスインスタンスのOpen()メソッドを呼び出し、chmpxへ接続します。
  3. グローバルメソッド(マクロ):GetPmSlaveK2hdkcCom…() にK2hdkcSlaveクラスインスタンスを渡し、専用通信コマンドクラスオブジェクトを取得します。
  4. 専用通信コマンドクラスオブジェクトの CommandSend()系メソッドを呼び出し、処理を行います。
  5. 処理結果は、専用通信コマンドクラスオブジェクトのGetResponseData()メソッドで取得できます。(CommandSend()系メソッドでも同時取得可能)
  6. 専用通信コマンドクラスオブジェクトを破棄します。
  7. 上記、3~6の繰り返し
  8. K2hdkcSlaveクラスインスタンスのClose()メソッドを呼び出し、chmpxから切断します。

サンプルについて

k2hdkcライブラリインターフェースのC、C++ APIの説明には、簡単なサンプルコードが付属しています。 詳細な使い方はk2hdkcテストツール(k2hdkclinetool)のソースコードを参照することをお勧めします。 このテストツールには、ほぼ全てのサンプルコードに匹敵するコードが含まれています。 このソースコード内で目的の関数、メソッドの検索をすることでサンプルコードとして利用できます。


C言語インタフェース

C言語用のインタフェースです。 開発時には以下のヘッダファイルをインクルードしてください。

#include <k2hdkc/k2hdkc.h>

リンク時には以下をオプションとして指定してください。

-lk2hdkc

以下にC言語用の関数の説明をします。 ***

デバッグ関連(C I/F)

k2hdkcライブラリは、内部動作およびAPIの動作の確認をするためにメッセージ出力を行うことができます。 本関数群は、メッセージ出力を制御するための関数群です。

書式

説明

パラメータ

返り値

k2hdkc_set_debug_file、k2hdkc_unset_debug_file、k2hdkc_load_debug_env、k2hdkc_is_enable_comlogは成功した場合には、trueを返します。失敗した場合にはfalseを返します。

注意

環境変数DKCDBGMODE、DKCDBGFILEについては、環境変数を参照してください。

サンプル

k2hdkc_bump_debug_level();
k2hdkc_set_debug_file("/var/log/k2hdkc/error.log");
k2hdkc_set_debug_level_message();

chmpx関連(C I/F)

本関数群は、CHMPXに永続的に接続してk2hdkcライブラリを利用する場合に必要となるchmpxへの接続を行います。 本関数群で返されるk2hdkc_chmpx_hハンドルは、他のk2hdkcライブラリC APIで利用することができるハンドルです。

書式

説明

パラメータ

返り値

サンプル

k2hdkc_chmpx_h    chmpxhandle;
if(K2HDKC_INVALID_HANDLE == (chmpxhandle = k2hdkc_open_chmpx_ex(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, isCleanupBup))){
    exit(EXIT_FAILURE);
}
...
...
...

if(!k2hdkc_close_chmpx_ex(chmpxhandle, isCleanupBup)){
    fprintf(stderr, "Could not close(leave and close msgid) slave node chmpx, but continue for cleanup...\n");
}
chmpxhandle = K2HDKC_INVALID_HANDLE;        // force

Last Response Code関連(C I/F)

k2hdkcライブラリのC APIを利用後、APIのレスポンスコードを取得することができます。 レスポンスコードは、64ビットであり上位32ビットで成功、失敗を示し、下位32ビット(サブコード)で詳細なエラーコードを示しています。 エラーコードの判別などには、マクロが準備されています。(k2hdkccomstructure.hを参照) エラーコードについては、C言語のerrnoと同等の取り扱いとなります。

書式

説明

パラメータ

返り値

サンプル

// get response code
dkcres_type_t    rescode = k2hdkc_get_lastres_code();

// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

Get関連(C I/F)

k2hdkcクラスタからキーを指定して、値を取得する関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下4種類となっています。

上記の4種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

さらに、以下のタイプが上記までのタイプに加え、以下の形式が存在します。

パラメータ

返り値

サンプル

// do command
unsigned char* pval = NULL;
size_t         vallength = 0;
bool           result = k2hdkc_ex_get_value(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, pkey, keylength, &pval, &vallength);
dkcres_type_t  rescode = k2hdkc_get_lastres_code();

// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}
free(pval);

Get Direct関連(C I/F)

k2hdkcクラスタからキーを指定して、値を取得する関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下4種類となっています。

上記の4種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

パラメータ

返り値

注意

Get Direct系にはGet系のように、属性チェック(パーミッションチェック)を行わないタイプ、パスフレーズを指定するタイプのI/Fはありません。

サンプル

// get direct
unsigned char**    ppval    = NULL;
size_t        vallen    = 0;
bool        result    = k2hdkc_ex_da_get_value(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, pkey, keylen, offset, length, ppval, &vallen);
dkcres_type_t    rescode    = k2hdkc_get_lastres_code();

// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

Get Subkey関連(C I/F)

k2hdkcクラスタからキーを指定して、Subkeyリストを取得する関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下4種類となっています。

上記の4種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

さらに、以下のタイプが上記までのタイプに加えて(積算)、存在します。

パラメータ

返り値

構造体について

引数および返り値に指定されるK2HDKCKEYPCK構造体について説明します。 この構造体は、K2HASHにて定義されており、k2hdkcでtypedefされた構造体です。実態は以下のようになっています。 また、領域確保されたこの構造体へのポインタ、構造体の配列へのポインタの開放については、以下のマクロ(k2hdkc提供)もしくはK2HASHのAPIを利用してください。

// structure
typedef struct k2h_key_pack{
    unsigned char*    pkey;
    size_t            length;
}K2HKEYPCK, *PK2HKEYPCK;
 
// typedefs by k2hdkc
typedef K2HKEYPCK                   K2HDKCKEYPCK;
typedef PK2HKEYPCK                  PK2HDKCKEYPCK;
 
// Free function
extern bool k2h_free_keypack(PK2HKEYPCK pkeys, int keycnt);
extern bool k2h_free_keyarray(char** pkeys);
 
// Free macro presented by k2hdkc
#define    DKC_FREE_KEYPACK            k2h_free_keypack
#define    DKC_FREE_KEYARRAY           k2h_free_keyarray

サンプル

PK2HDKCKEYPCK    pskeypck = NULL;
int        skeypckcnt = 0;
bool        result = k2hdkc_ex_get_subkeys(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, pkey, keylength, &pskeypck, &skeypckcnt);
dkcres_type_t    rescode = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

Get Attribute関連(C I/F)

k2hdkcクラスタからキーを指定して、属性(Attribute)を取得する関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下4種類となっています。

上記の3種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

パラメータ

返り値

構造体について

引数および返り値に指定されるK2HDKCATTRPCK構造体について説明します。 この構造体は、K2HASHにて定義されており、k2hdkcでtypedefされた構造体です。実態は以下のようになっています。 また、領域確保されたこの構造体へのポインタ、構造体の配列へのポインタの開放については、以下のマクロ(k2hdkc提供)もしくはK2HASHのAPIを利用してください。

// for attributes list
typedef struct k2h_attr_pack{
    unsigned char*    pkey;
    size_t            keylength;
    unsigned char*    pval;
    size_t            vallength;
}K2HATTRPCK, *PK2HATTRPCK;
 
// typedefs by k2hdkc
typedef K2HATTRPCK                    K2HDKCATTRPCK;
typedef PK2HATTRPCK                    PK2HDKCATTRPCK;
 
// Free attributes array
extern bool k2h_free_attrpack(PK2HATTRPCK pattrs, int attrcnt);
 
// Free attributes macro presented by k2hdkc
#define    DKC_FREE_ATTRPACK    k2h_free_attrpack

サンプル

PK2HDKCATTRPCK    pattrspck    = NULL;
int        attrspckcnt    = 0;
bool        result = k2hdkc_ex_get_attrs(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, reinterpret_cast<const unsigned char*>(strKey.c_str()), strKey.length() + 1, &pattrspck, &attrspckcnt);
dkcres_type_t    rescode= k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
    DKC_FREE_ATTRPACK(pattrspck, attrspckcnt);
}

Set関連(C I/F)

k2hdkcクラスタからキーを指定して、値を設定する関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類となっています。

上記の2種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

さらに、以下のタイプが上記までのタイプに加えて(積算)、存在します。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

サンプル

bool        result = k2hdkc_ex_set_value(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, pKey, KeyLen, pVal, ValLen);
dkcres_type_t    rescode = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

Set Direct関連(C I/F)

k2hdkcクラスタからキーを指定して、値を設定する関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類となっています。

上記の2種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

サンプル

bool        result    = k2hdkc_ex_da_set_value(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, pkey, keylen, pval, vallen, offset);
dkcres_type_t    rescode    = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

Set Subkey関連(C I/F)

k2hdkcクラスタからキーを指定して、サブキーリストを設定する関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類となっています。

上記の2種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

サンプル

bool        result    = k2hdkc_ex_set_subkeys(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, pPKey, PKeyLen, pskeypck, skeypckcnt);
dkcres_type_t    rescode = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

Clear Subkey関連(C I/F)

k2hdkcクラスタからキーを指定して、サブキーリストをクリアする関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類となっています。

上記の2種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

サンプル

bool        result    = k2hdkc_ex_clear_subkeys(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, pPKey, PKeyLen);
dkcres_type_t    rescode = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

Add Subkey関連(C I/F)

k2hdkcクラスタから親キー、サブキーを指定して、サブキーの作成・設定する関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類となっています。

上記の2種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

さらに、以下のタイプが上記までのタイプに加えて(積算)、存在します。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

サンプル

bool        result    = k2hdkc_ex_set_subkeys(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, pPKey, PKeyLen, pskeypck, skeypckcnt);
dkcres_type_t    rescode = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

Set All関連(C I/F)

k2hdkcクラスタからキーを指定して、値を設定する関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類となっています。

上記の2種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

さらに、以下のタイプが上記までのタイプに加えて(積算)、存在します。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

サンプル

bool        result = k2hdkc_ex_set_all(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, pKey, KeyLen, pVal, ValLen, NULL, 0);
dkcres_type_t    rescode = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

Remove Key関連(C I/F)

k2hdkcクラスタからキーを指定して、キー(およびキーに属するサブキー)を削除する関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類(4タイプ)となっています。

上記の2種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

サンプル

bool        result = k2hdkc_ex_remove(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, pkey, keylen);
dkcres_type_t    rescode = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

Remove Subkey関連(C I/F)

k2hdkcクラスタから親キーを指定して、サブキーを削除する関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類となっています。

上記の4種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

さらに、以下のタイプが上記までのタイプに加えて(積算)、存在します。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

サンプル

bool        result = k2hdkc_ex_remove_subkey(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, pkey, keylen, pbukey, subkeylen, true);
dkcres_type_t    rescode = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

Rename Key関連(C I/F)

k2hdkcクラスタからキーを指定して、キーをリネームする関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類(4タイプ)となっています。

上記の2種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

さらに、以下のタイプが上記までのタイプに加えて(積算)、存在します。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

注意

サンプル

bool        result = k2hdkc_ex_rename_with_parent(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, pOldKey, OldKeyLen, pNewKey, NewkeyLen, pParentKey, pParentKeyLen);
dkcres_type_t    rescode = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

Queue(KeyQUeue) Push関連(C I/F)

k2hdkcクラスタからキューを指定して、キューにPUSHする関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類(4タイプ)となっています。

上記の2種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

さらに、以下のタイプが上記までのタイプに加えて(積算)、存在します。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

サンプル

bool        result = k2hdkc_ex_keyq_push(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, pName, NameLen, reinterpret_cast<const unsigned char*>(strKey.c_str()), strKey.length() + 1, reinterpret_cast<const unsigned char*>(strValue.c_str()), strValue.length() + 1, is_Fifo);
dkcres_type_t    rescode = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

Queue(KeyQUeue) Pop関連(C I/F)

k2hdkcクラスタからキューを指定して、キューからPOPする関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類(4タイプ)となっています。

上記の2種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

さらに、以下のタイプが上記までのタイプに加えて(積算)、存在します。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

サンプル

unsigned char*    pkey        = NULL;
size_t        keylength    = 0;
unsigned char*    pval        = NULL;
size_t        vallength    = 0;
bool        result        = k2hdkc_ex_keyq_pop(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, pName, NameLen, is_Fifo, &pkey, &keylength, &pval, &vallength);
dkcres_type_t    rescode        = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

Queue(KeyQUeue) Remove関連(C I/F)

k2hdkcクラスタからキューを指定して、キューから指定した数蓄積データを削除する関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類(4タイプ)となっています。

上記の2種類に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

さらに、以下のタイプが上記までのタイプに加えて(積算)、存在します。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

サンプル

bool        result = k2hdkc_ex_keyq_remove(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, pName, NameLen, RmCount, is_Fifo);
dkcres_type_t    rescode = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

CAS(Compare And Swap) Init関連(C I/F)

k2hdkcクラスタにキー名を指定して、そのキーをCAS(Comapre And Swap)コマンドとして利用できるように初期化する関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類となっています。

上記の2種類は、それぞれデータ長に応じて、以下の4種類に分化しています。

上記の2種類×4データ長に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

さらに、以下のタイプが上記までのタイプに加えて(積算)、存在します。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

サンプル

bool        result    = k2hdkc_ex_cas64_init(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, reinterpret_cast<const unsigned char*>(strKey.c_str()), strKey.length() + 1, val);
dkcres_type_t    rescode = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

CAS(Compare And Swap) Get関連(C I/F)

k2hdkcクラスタにキー名を指定して、そのキーの値を取得する関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類となっています。

上記の2種類は、それぞれデータ長に応じて、以下の4種類に分化しています。

上記の2種類×4データ長に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

さらに、以下のタイプが上記までのタイプに加えて(積算)、存在します。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

サンプル

uint64_t    val64    = 0;
bool        result    = k2hdkc_ex_cas64_get(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, reinterpret_cast<const unsigned char*>(strKey.c_str()), strKey.length() + 1, &val64);
dkcres_type_t    rescode = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

CAS(Compare And Swap) Set関連(C I/F)

k2hdkcクラスタにキー名と期待する値を指定して、期待する値と同じであれば、新たな値でキーの値を設定する関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類となっています。

上記の2種類は、それぞれデータ長に応じて、以下の4種類に分化しています。

上記の2種類×4データ長に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

さらに、以下のタイプが上記までのタイプに加えて(積算)、存在します。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

サンプル

bool        result    = k2hdkc_ex_cas64_set(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, reinterpret_cast<const unsigned char*>(strKey.c_str()), strKey.length() + 1, oldval, newval);
dkcres_type_t    rescode = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

CAS(Compare And Swap) Increment/Decrement関連(C I/F)

k2hdkcクラスタにキー名を指定して、その値をインクリメント/デクリメントする関数群です。

書式

説明

関数は、以下の規則に沿って展開されており、基本は以下2種類(4タイプ)となっています。

上記の2種類(4タイプ)に対して、以下の規則でそれぞれのタイプに対して引数などの違いのある類似関数があります。

さらに、以下のタイプが上記までのタイプに加えて(積算)、存在します。

パラメータ

返り値

成功した場合にはtrue、失敗した場合にはfalseを返します。

サンプル

bool        result = k2hdkc_ex_cas_increment_wa(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin, reinterpret_cast<const unsigned char*>(strKey.c_str()), strKey.length() + 1, (PassPhrase.empty() ? NULL : PassPhrase.c_str()), (-1 == Expire ? NULL : &Expire));
dkcres_type_t    rescode = k2hdkc_get_lastres_code();
 
// check result
if(!result){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}else if(DKC_RES_SUBCODE_NOTHING != GET_DKC_RES_SUBCODE(rescode)){
    printf("RESULT CODE(%s - %s)\n", STR_DKCRES_RESULT_TYPE(rescode), STR_DKCRES_SUBCODE_TYPE(rescode));
}

C++言語インタフェース

C++言語用のインタフェースです。 開発時には以下のヘッダファイルをインクルードしてください。

#include <k2hdkc/k2hdkcslave.h>

リンク時には以下をオプションとして指定してください。

-lk2hdkc

以下にC++言語用の利用方法、クラス、メソッドの説明をします。 ***

デバッグ関連(C++ I/F)

k2hdkcライブラリは、内部動作およびAPIの動作の確認をするためにメッセージ出力を行うことができます。 本関数群は、メッセージ出力を制御するためのC++言語用の関数群です。

書式

説明

パラメータ

返り値

注意

環境変数DKCDBGMODE、DKCDBGFILEについては、環境変数を参照してください。


コマンドクラスファクトリ関連(C++ I/F)

クラスファクトリは、通信コマンドクラスオブジェクトを作成します。 クラスファクトリには、非永続chmpx接続用と永続chmpx接続用の2種類があります。

説明

2つのクラスファクトリは、非永続chmpx接続用と永続chmpx接続用となっています。(これらのクラスファクトリは、実装はマクロであり、実装処理は隠蔽しています。) クラスファクトリタイプの種類と、返される通信コマンドクラスについて以下にまとめます。

非永続chmpx接続用クラスファクトリ

これらの関数(マクロ)は、GetOt…のプレフィックスを持っています。

永続chmpx接続用クラスファクトリ

これらの関数(マクロ)は、GetPm…のプレフィックスを持っています。

パラメータ

返り値

対応する通信コマンドクラスオブジェクトへのポインタを返します。
返されたクラスオブジェクトは不要になった時点で、破棄(delete)してください。

サンプル

//-------------------------------------
// One time connection type
//-------------------------------------
K2hdkcComGet*    pComObj = GetOtSlaveK2hdkcComGet(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool        result = pComObj->CommandSend(pkey, keylength, !is_noattr, passphrase, &pconstval, &vallength, &rescode);
delete pComObj;
 
//-------------------------------------
// Permanent connection type
//-------------------------------------
// Open chmpx
K2hdkcSlave* pSlave = new K2hdkcSlave();
if(!pSlave->Initialize(strConfFile.c_str(), CntlPort, isAutoRejoin)){
    cerr << "Could not join slave node chmpx." << endl;
    delete pSlave;
    return false;
}
if(!pSlave->Open(isNoGiveupRejoin)){
    cerr << "Could not open msgid on slave node chmpx." << endl;
    delete pSlave;
    return false;
}
for(int cnt = 0; cnt < 10; ++cnt){    // loop for example
    K2hdkcComGet*    pComObj= GetPmSlaveK2hdkcComGet(pSlave);
    bool        result = pComObj->CommandSend(pkey, keylength, !is_noattr, passphrase, &pconstval, &vallength, &rescode);
    delete pComObj;
}
if(!pSlave->Clean(isCleanupBup)){
    cerr << "Could not leave slave node chmpx, but continue for cleanup..." << endl;
}
delete pSlave;

K2hdkcComGetクラス

キーを指定して、値を取得するクラスです。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComGet* pComObj = GetOtSlaveK2hdkcComGet(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool result = pComObj->CommandSend(pkey, keylength, !is_noattr, passphrase, &pconstval, &vallength, &rescode);

K2hdkcComGetDirectクラス

キーと値のオフセット、値長を指定して、値を取得するクラスです。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComGetDirect*    pComObj = GetOtSlaveK2hdkcComGetDirect(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool pComObj->CommandSend(pkey, keylen, offset, length, &pconstval, &vallen, &rescode);

K2hdkcComGetSubkeysクラス

キーを指定して、キーの持つサブキーリストを取得するクラスです。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。サブキーを持たない場合にもfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。
サブキーリストのクラスK2HSubKeysの操作方法については、K2HASHのドキュメントを参照してください。

サンプル

K2HSubKeys*           pSubKeys= NULL;
K2hdkcComGetSubkeys*  pComObj = GetOtSlaveK2hdkcComGetSubkeys(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool                  result  = pComObj->CommandSend(pkey, keylength, !is_noattr, &pSubKeys, &rescode);

K2hdkcComGetAttrsクラス

キーを指定して、キーの持つ属性情報を取得するクラスです。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。属性情報を持たない場合にもfalseを返します。
k2hdkcクラスタは常に属性情報のひとつであるMTIME情報を持つための属性情報を持たない返信はありません。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。
属性情報のクラスK2HAttrsの操作方法については、K2HASHのドキュメントを参照してください。

サンプル

K2HAttrs*            pAttrsObj    = NULL;
K2hdkcComGetAttrs*    pComObj     = GetOtSlaveK2hdkcComGetAttrs(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool            result = pComObj->CommandSend(reinterpret_cast<const unsigned char*>(strKey.c_str()), strKey.length() + 1, &pAttrsObj, &rescode);

K2hdkcComGetAttrクラス

キーと属性情報名(バイナリ列)を指定して、キーの持つ指定した属性情報を取得するクラスです。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。指定した属性情報を持たない場合にもfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComGetAttrs*    pComObj     = GetOtSlaveK2hdkcComGetAttr(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool            result = pComObj->CommandSend(reinterpret_cast<const unsigned char*>(strKey.c_str()), strKey.length() + 1, pattrname, attrnamelen, &pAttrval, attrvallen, &rescode);

K2hdkcComSetクラス

キーと値を指定して、キーに値を設定(新規作成含む)を行うクラスです。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。
本クラスには、他に2つのCommandSendメソッドがありますが、これは内部で利用しているメソッドであり、利用することはできません。

サンプル

K2hdkcComSet*    pComObj = GetOtSlaveK2hdkcComSet(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool            result = pComObj->CommandSend(pKey, KeyLen, pVal, ValLen, is_rmsublist, pPassPhrase, pExpire, &rescode);

K2hdkcComSetDirectクラス

キーと値、オフセットを指定して、キーに値を設定(新規作成含む)を行うクラスです。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComSetDirect*    pComObj = GetOtSlaveK2hdkcComSetDirect(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool            result = pComObj->CommandSend(pkey, keylen, pval, vallen, offset, &rescode);

K2hdkcComSetSubkeysクラス

キーに指定したサブキーリストを追加するクラスです。サブキーリストの全削除を行うこともできます。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。 ClearSubkeysCommandSend系は、サブキーリストをクリアするメソッドです。

サンプル

unsigned char*  psubkeys = NULL;
size_t        subkeyslength = 0;
K2HSubKeys    Subkeys;
Subkeys.insert(psubkey, subkeylength);        // Add one subkey
if(!Subkeys.Serialize(&psubkeys, &subkeyslength)){
    return false;
}
 
K2hdkcComSetSubkeys*    pComObj = GetOtSlaveK2hdkcComSetSubkeys(conffile, ctlport, is_auto_rejoin, no_giveup_rejoin);
bool            result = pComObj->CommandSend(pPKey, PKeyLen, psubkeys, subkeyslength , &rescode);
 
DKC_FREE(psubkeys);

K2hdkcComSetAllクラス

キーに指定した値、サブキーリスト、属性情報の全てを書き込むクラスです。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

unsigned char*  psubkeys = NULL;
size_t        subkeyslength = 0;
K2HSubKeys    Subkeys;
Subkeys.insert(psubkey, subkeylength);        // Add one subkey
if(!Subkeys.Serialize(&psubkeys, &subkeyslength)){
    return false;
}
 
K2hdkcComSetAll*    pComObj = GetOtSlaveK2hdkcComSetAll(conffile, ctlport, is_auto_rejoin, no_giveup_rejoin);
bool            result = pComObj->CommandSend(pPKey, PKeyLen, psubkeys, subkeyslength, NULL, 0, &rescode);
 
DKC_FREE(psubkeys);

K2hdkcComAddSubkeysクラス

キーの持つサブキーリストに指定したサブキーを追加するクラスです。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComAddSubkeys*    pComObj = GetOtSlaveK2hdkcComAddSubkeys(conffile, ctlport, is_auto_rejoin, no_giveup_rejoin);
bool            result = pComObj->CommandSend(pPKey, PKeyLen, psubkey, subkeylen, true, &rescode);

K2hdkcComAddSubkeyクラス

サブキーを作成し、指定したキーのサブキーとして登録するクラスです。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComAddSubkey*    pComObj = GetOtSlaveK2hdkcComAddSubkey(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool            result = pComObj->CommandSend(pParentKey, ParentKeyLen, pSubKey, SubKeyLen, pVal, ValLen, !is_noattr, pPassPhrase, pExpire, &rescode);

K2hdkcComDelクラス

キーを削除するクラスです。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComDel*    pComObj = GetOtSlaveK2hdkcComDel(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool            result = pComObj->CommandSend(pkey, keylen, is_subkeys, true, &rescode);

K2hdkcComDelSubkeysクラス

キーの持つサブキーリストから指定したサブキーを削除するクラスです。サブキー自体は削除されません。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComDelSubkeys*    pComObj = GetOtSlaveK2hdkcComDelSubkeys(conffile, ctlport, is_auto_rejoin, no_giveup_rejoin);
bool            result = pComObj->CommandSend(pPKey, PKeyLen, psubkey, subkeylen, true, &rescode);

K2hdkcComDelSubkeyクラス

指定したキーのサブキーを削除するクラスです。サブキー自体も削除します。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComDelSubkey*    pComObj = GetOtSlaveK2hdkcComDelSubkey(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool            result = pComObj->CommandSend(pParentKey, ParentKeyLen, pSubKey, SubKeyLen, pVal, ValLen, true, &rescode);

K2hdkcComRenクラス

指定したキー名をリネームするクラスです。親キーを指定して親キーのサブキーリスト中のキー名の変更も実行することができます。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComRen*    pComObj = GetOtSlaveK2hdkcComRen(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool            result = pComObj->CommandSend(pOldKey, OldKeyLen, pNewKey, NewkeyLen, pParentKey, pParentKeyLen, !is_noattr, (PassPhrase.empty() ? NULL : PassPhrase.c_str()), (-1 == Expire ? NULL : &Expire), &rescode);

K2hdkcComQPushクラス

キュー(値のみ、キーと値)にデータをPUSHするクラスです。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComQPush*    pComObj = GetOtSlaveK2hdkcComQPush(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool            result = pComObj->QueueCommandSend(pName, NameLen, reinterpret_cast<const unsigned char*>(strValue.c_str()), strValue.length() + 1, is_Fifo, NULL, 0UL, !is_noattr, (PassPhrase.empty() ? NULL : PassPhrase.c_str()), (-1 == Expire ? NULL : &Expire), &rescode);

K2hdkcComQPopクラス

キューからデータ(値のみ、キーと値)をPOPするクラスです。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComQPop*    pComObj = GetOtSlaveK2hdkcComQPop(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool            result = pComObj->KeyQueueCommandSend(pName, NameLen, is_Fifo, !is_noattr, (PassPhrase.empty() ? NULL : PassPhrase.c_str()), &pkeytmp, &keytmplen, &pvaltmp, &valtmplen, &rescode);

K2hdkcComQDelクラス

キューからデータ(値のみ、キーと値)を指定個数削除Pするクラスです。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComQDel*    pComObj = GetOtSlaveK2hdkcComQDel(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool            result = pComObj->QueueCommandSend(pName, NameLen, RmCount, is_Fifo, true, (PassPhrase.empty() ? NULL : PassPhrase.c_str()), &rescode);

K2hdkcComCasInitクラス

CAS(Compare And Swap)としてキーの値を初期化するクラスです。値のサイズ(8/16/32/64ビット)別にメソッドが存在します。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComCasInit*    pComObj = GetOtSlaveK2hdkcComCasInit(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool                 result  = pComObj->CommandSend(reinterpret_cast<const unsigned char*>(strKey.c_str()), strKey.length() + 1, val, (PassPhrase.empty() ? NULL : PassPhrase.c_str()), (-1 == Expire ? NULL : &Expire), &rescode);

K2hdkcComCasGetクラス

CAS(Compare And Swap)としてキーの値を取得するクラスです。値のサイズ(8/16/32/64ビット)別にメソッドが存在します。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComCasGet*    pComObj = GetOtSlaveK2hdkcComCasGet(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool                result = pComObj->CommandSend(reinterpret_cast<const unsigned char*>(strKey.c_str()), strKey.length() + 1, true, (PassPhrase.empty() ? NULL : PassPhrase.c_str()), &pval8, &rescode);

K2hdkcComCasSetクラス

CAS(Compare And Swap)としてキーの値を設定するクラスです。
CAS操作として動作するために、変更前の値の指定も行い、変更前の値と同じ値のときの場合のみ新しい値で上書きされます。また、値のサイズ(8/16/32/64ビット)別にメソッドが存在します。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComCasSet*    pComObj = GetOtSlaveK2hdkcComCasSet(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool                result  = pComObj->CommandSend(reinterpret_cast<const unsigned char*>(strKey.c_str()), strKey.length() + 1, oldval, newval, true, (PassPhrase.empty() ? NULL : PassPhrase.c_str()), (-1 == Expire ? NULL : &Expire), &rescode);

K2hdkcComCasIncDecクラス

CAS(Compare And Swap)としてキーの値をインクリメント/デクリメントするクラスです。
CASとしてのインクリメント/デクリメント操作を提供するため、k2hdkcクラスタへ同時にリクエストが発行されても確実に処理が行われることを保証します。また、値のサイズ(8/16/32/64ビット)別にメソッドが存在します。

書式

パラメータ

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

注意

CommandSendには、コマンド送信と結果取得を1度に行うメソッドタイプがあります。

サンプル

K2hdkcComCasIncDec* pComObj = GetOtSlaveK2hdkcComCasIncDec(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool                result  = pComObj->pComObj->IncrementCommandSend(reinterpret_cast<const unsigned char*>(strKey.c_str()), strKey.length() + 1, true, (PassPhrase.empty() ? NULL : PassPhrase.c_str()), (-1 == Expire ? NULL : &Expire), &rescode);

K2hdkcComStateクラス

k2hdkcクラスタの全サーバーノードの状態を取得するクラスです。
取得する内容は、chmpxのk2hdkcクラスタ内での番号(chmpxid、HASH値、他)および、そのサーバノードが管理しているk2hashデータのステータス情報です。

書式

パラメータ

構造体

取得するステータス情報は以下の構造体の配列として取得します。

typedef struct k2hdkc_nodestate{
    chmpxid_t       chmpxid;                // See: CHMPX in chmpx/chmstructure.h
    char            name[NI_MAXHOST];       //
    chmhash_t       base_hash;              //
    chmhash_t       pending_hash;           //
    K2HSTATE        k2hstate;               // See: k2hash/k2hash.h
}DKC_NODESTATE, *PDKC_NODESTATE;
 
typedef struct k2h_state{
    char            version[K2H_VERSION_LENGTH];            // Version string as K2hash file
    char            hash_version[K2H_HASH_FUNC_VER_LENGTH]; // Version string as Hash Function
    char            trans_version[K2H_HASH_FUNC_VER_LENGTH];// Version string as Transaction Function
    int             trans_pool_count;                       // Transaction plugin thread pool count
    k2h_hash_t      max_mask;                               // Muximum value for cur_mask
    k2h_hash_t      min_mask;                               // Minimum value for cur_mask
    k2h_hash_t      cur_mask;                               // Current mask value for hash(This value is changed automatically)
    k2h_hash_t      collision_mask;                         // Mask value for collision when masked hash value by cur_mask(This value is not changed)
    unsigned long   max_element_count;                      // Muximum count for elements in collision key index structure(Increasing cur_mask when this value is over)
    size_t          total_size;                             // Total size of k2hash
    size_t          page_size;                              // Paging size(system)
    size_t          file_size;                              // k2hash file(memory) size
    size_t          total_used_size;                        // Total using size in k2hash
    size_t          total_map_size;                         // Total mapping size for k2hash
    size_t          total_element_size;                     // Total element area size
    size_t          total_page_size;                        // Total page area size
    long            total_area_count;                       // Total mmap area count( = MAX_K2HAREA_COUNT)
    long            total_element_count;                    // Total element count in k2hash
    long            total_page_count;                       // Total page count in k2hash
    long            assigned_area_count;                    // Assigned area count
    long            assigned_key_count;                     // Assigned key index count
    long            assigned_ckey_count;                    // Assigned collision key index count
    long            assigned_element_count;                 // Assigned element count
    long            assigned_page_count;                    // Assigned page count
    long            unassigned_element_count;               // Unassigned element count(free element count)
    long            unassigned_page_count;                  // Unassigned page count(free page count)
    struct timeval  last_update;                            // Last update of data
    struct timeval  last_area_update;                       // Last update of expanding area
}K2HSTATE, *PK2HSTATE;

返り値

成功すればtureを返し、失敗した場合にはfalseを返します。

サンプル

K2hdkcComState*    pComObj = GetOtSlaveK2hdkcComState(strConfFile.c_str(), CntlPort, isAutoRejoin, isNoGiveupRejoin);
bool               result = pComObj->CommandSend(&ptmpstates, &tmpstatecount, &rescode);
Build TOP Environments