kv_put_with_options()

#include <kvstore.h>

kv_error_t
kv_put_with_options(kv_store_t *store,
                    const kv_key_t *key,
                    const kv_value_t *value,
                    const kv_version_t *if_version,kv_presence_enum if_presence,
                    kv_version_t **new_version,
                    kv_value_t **previous_value,kv_return_value_version_enum return_info,
                    kv_durability_t durability,
                    kv_timeout_t timeout_ms)

key/valueペアをストアに書き込み、必要に応じて挿入または上書きします。

パラメータ

  • store

    storeパラメータは、key/valueペアを書き込むストアへのハンドルです。

  • key

    keyパラメータは、ストアに書き込むキーです。これは、kv_create_key()またはkv_create_key_from_uri()を使用して作成します。

  • value

    valueパラメータは、ストアに書き込む値です。これは、kv_create_value()を使用して作成されます。

  • if_version

    if_versionパラメータは、既存の値がこのパラメータに指定されたバージョンと一致する場合のみレコードをPUTする必要があることを示します。このパラメータは、値を更新するとき、値が最後に読み取られた後に変更されていないことを確認するために使用します。バージョンは、kv_get_version()関数を使用して取得されます。

  • if_presence

    if_presenceパラメータは、ストア内のレコードの有無に基づいてレコードをPUTできる条件を示します。たとえば、KV_IF_PRESENTは、レコードのバージョンがそこにすでに存在する場合のみ、レコードをストアに書き込むことができることを意味します。

    使用可能なすべてのプレゼンス・オプションのリストについては、kv_presence_enumを参照してください。

  • new_version

    new_versionパラメータは、key/valueペアの新しいバージョン情報のコピー先となるメモリーを参照します。このポインタがNULLとなるのは、この関数がゼロ以外の戻りコードを生成した場合か、return_infoKV_RETURN_VALUE_ALLまたはKV_RETURN_VALUE_VERSIONでない場合です。

    バージョン・データ構造で使用されるリソースは、kv_release_version ()を使用して解放します。

  • previous_value

    previous_valueパラメータは、指定したキーに関連付けられた以前の値のコピー先とするメモリーを参照します。前の値がなかった(操作によって既存のレコードを更新するのではなく、新しいレコードを挿入する)場合、またはreturn_infoKV_RETURN_VALUE_ALLまたはKV_RETURN_VALUE_VALUEでない場合は、NULLを戻します。

    kv_release_value()を使用して、このパラメータによって使用されるリソースを解放します。

  • return_info

    return_infoパラメータは、この操作の一環として返されるバージョンおよび値の情報を示します。使用可能なオプションのリストについては、kv_return_value_version_enumを参照してください。

  • durability

    durabilityパラメータは、この書込み操作で使用する永続性を保証します。永続性保証は、kv_create_durability()を使用して作成します。

  • timeout_ms

    timeout_msパラメータは、操作を処理するための時間間隔の上限を指定します。指定された限度を超えないよう最善が尽くされます。ゼロの場合は、デフォルトの要求タイムアウトが使用されます。デフォルトの要求タイムアウトは、kv_config_set_timeouts()を使用して設定されます。