kv_create_key_from_uri_copy()

#include <kvstore.h>

kv_error_t 
kv_create_key_from_uri_copy(kv_store_t *store,
                            kv_key_t **key,
                            const char *uri) 

URIに基づいてkey/valueストアにキーを作成します。この構造によって使用されるリソースを解放するには、kv_release_key()を使用します。

この関数は、kv_create_key_from_uri()とは異なり、関数に渡されたURI文字列の内容をコピーします。そのため、この文字列は、アプリケーションで必要などのような形式であれ、解放または変更し、再利用できます。

ここで使用するキー・パス文字列のフォーマットは、URIとURLを使用するように設計されています。これは、汎用目的の文字列識別子として使用することを目的としています。キー・パス・コンポーネントは、スラッシュ(/)デリミタで区切られます。メジャー・パスとマイナー・パスを区切るには、特殊なスラッシュ・ハイフン・スラッシュ形式のデリミタ(/-/)を使用します。URIパスに使用できない文字は、URI構文(%XX (XXは16進数))を使用してエンコードされます。この文字列の先頭には常にスラッシュが付き、URI相対パスとして扱われないようにします。次に例をいくつか示します。

  • /SingleComponentMajorPath

  • /MajorPathPart1/MajorPathPart2/-/MinorPathPart1/MinorPathPart2

  • /HasEncodedSlash:%2F,Zero:%00,AndSpace:%20

例1は、使用可能な最も単純なパスを示しています。先頭のスラッシュは常に必要であることに注意してください。

例2は、メジャー・パスとマイナー・パスの間の/-/セパレータを使用する方法を示します。単なるハイフンであるパス・コンポーネントがキーに含まれる場合、このキーはそのデリミタと区別するために、%2Dとしてエンコードされます。たとえば、/major/%2d/path/-/minor/%2d/pathのようになります。

例3は、パス・コンポーネントで使用できない文字のエンコーディングを示しています。URIの互換性のためにエンコードされる文字は、ASCIIスペースおよびその他のUnicodeセパレータ、ASCIIおよびUnicode制御文字、および15種類のASCII文字(" # % / < > ? [ \ ] ^ ` { | })です。ハイフン(-)は、前述のとおり、パス・コンポーネントの唯一の文字である場合にもエンコードされます。

キー・パス・コンポーネントでは任意のUnicode文字を使用できますが、実際には、Webユーザー・エージェント、プロキシなどですべての文字が許容されるわけではないため、制御文字を含めると問題が発生する可能性があります。エンコードはされますが、パス・コンポーネントにスラッシュを埋め込むことにも問題がある可能性があります。URIを処理する他のソフトウェアと互換性のある文字を使用する責任はアプリケーションにあります。

パラメータ

  • store

    storeパラメータは、キーが使用されるストアに対するハンドルです。ストア・ハンドルは、kv_open_store()を使用して取得されます。

  • key

    keyパラメータは、割り当てられたキーへのポインタのコピー先であるメモリーを参照します。

  • uri

    uriパラメータは、文字列として記述されるフル・キー・パス(メジャー・コンポーネントとマイナー・コンポーネントの両方)です。文字列のフォーマット方法については、このページの先頭にある説明を参照してください。

    ここで使用される文字列はコピーされることに注意してください。このメモリーの内容はkv_key_t構造によって所有されるメモリーにコピーされるため、必要に応じてこのメモリーを解放または変更できます。