Skip to content

DBusのメッセージ型

DBusにはメッセージの型がいくつかある。公式には以下で説明がある。

  • 文字列(string)
  • 整数(int16, int32, int64, uint32など)
  • 不動小数点(double)
  • 真偽値(boolean)
  • バイト(byte)
  • ファイルディスクリプタ(unix_fd)
  • オブジェクトパス(object_path)
  • シグネチャ(signature)

オブジェクトパスとシグネチャは文字列の特殊な形態だが、利用できる文字などの制約がある。例えばオブジェクトパスは / で開始されていなければならない。

  • 構造体(struct)
  • 配列(array)
  • バリアント(variant)
  • 辞書(dict_entry)

バリアントは任意の型を持つ値をひとつだけ保持するための型なので複数の値を持てないが、ひとつだけであればコンテナ型も保持できるのでコンテナ型を使えば良い。

それぞれの型を示す1文字がある。例えば int32i で、uint64t となる。構造体の場合も r が用意されているけれど、それよりはフィールドを () で囲んで表記する場合が多い。例えばフィールドの先頭から文字列、数値と2つのフィールドがある構造体を表記するなら (si) となる。別の例では、ネスト可能なので (s(ht)) のようにも書ける。

配列は a とその後に1文字を使って表記する。例えば int64 の配列は ax で示す。構造体の配列は a(x) となる。

バリアントは v で表記する。

辞書型はキーと値の2つを {} で囲んで表記するが、キーには基本型しか利用できない。そのため文字列をキーとして値が int16 の配列を表記する場合は {s(n)} となる。