Dbus中的数据类型


Dbus中也是类似于静态语言,使用了“强类型”数据格式.在Dbus上传递的所有数据都需要声明其对应的类型,下面整理了下,Dbus中的数据类型,以及在Dbus中声明的数据类型是什么意思.
Dbus类型
说明
試み对应类型声明
s
文字列字符串类型,可以声明 s
文字列
エー
アレイ数组,可以声明为 エー
[]インタフェース{}
V
バリアントvariant:<type>:<value> MakeVariantWithSignature(v interface{}, s Signature) Variant(
结构体,声明时为双括号中间的为类型,可以是多个,例如(SS)即这个结构体内包含两个字符串属性
構造
b
布尔值
ブール
署名
署名类型
Y
バイト
ディー
ダブル
t
UINT 64
int
X
INT 64
int
U
UInt 32
int

Int 32
int
q
UInt 16
int
n
INT 16
int
{ }
词典,这里声明为两个括号,中间为其对应的 キーバリュー例如 { SV }即 キー是字符串类型,値是変形类型.
マップ[インターフェース]
o
オブジェクトパス对象路径
  • a{sv} : 是一个数组,元素为一个键值对的词典,里面仅有一个
  • (ssssa{ss}as) 为一个结构体, 里面属性有6个 两个词典(数组),五个字符串类型 s s s s a{ss} as
  • (sssbsasa(ss)asba(ssss)asasasasa(ss)b) 这个类型拆开为下:共16个属性
    (
     s string
     s string
     s string
     b bool
     s string
     as array only one string
     a(ss) two string type in the array
     as array only one string
     b bool
     a(ssss) four string type in the array
     as array only one string
     as array only one string
     as array only one string
     as array only one string
     a(ss)  two string type in the array
     b bool
     )
    
    对上述类型,Python中就可以很灵活的声明
    ["", "", "", False, DEFAULT_ZONE_TARGET, [], [],
                             [], False, [], [], [], [], [], [], False]
    
    試み中就需要按照对应类型声明为不通的结构体,属性名称可以不为主,顺序需要一致.
    其Dbus收到的报文内容为
       struct {
          string ""
          string "Public" 
          string "For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted."
          boolean false
          string "default"
          array [
             string "ssh"
             string "dhcpv6-client"
          ]
          array [
             struct {
                string "55555-55557"
                string "tcp"
             }
          ]
          array [
             string "redirect"
             string "network-unknown"
          ]
          boolean true
          array [
             struct {
                string "1122"
                string "tcp"
                string "22"
                string "10.0.0.3"
             }
          ]
          array [
             string "eth0"
          ]
          array [
             string "10.0.0.1"
             string "10.0.0.2"
          ]
          array [
             string "rule family="ipv4" source address="192.168.1.101/32" service name="telnet" accept limit value="1/m""
          ]
          array [
             string "tcp"
             string "udp"
          ]
          array [
             struct {
                string "80"
                string "tcp"
             }
             struct {
                string "100"
                string "tcp"
             }
          ]
          boolean false
       }
    
  • ao : 配列里面元素仅为一个 object_path
  • ゴラン中声明一个 変形


    在試み中看到変形类型如下
    type Variant struct {
        sig   Signature
        value interface{}
    }
    
    可以通过 SignatureOf("short") 声明一个 Signature然后在通过: MakeVariantWithSignature(v interface{}, s Signature) Variant 声明 对应的 変形
    注:其他数据类型与ゴラン自己的数据类型一致,数组可以使用スライス类似Python , Python直接用数组替代即可更灵活)

    More Reference

    dbus data type

    dbus data type conparision perl