Connext DDS實體的GUID構成

2021-09-16 12:09:47 字數 1603 閱讀 8567

在rti connext dds部署中,每個實體 - 本地或遠端 - 都可以通過其guid進行單一標識, guid是全球唯一識別符號的首字母縮寫。 這樣

應用程式可以使用標識來忽略某些實體,識別發布某個樣本的人員,或者檢測哪個實體已更改其狀態。

在rti connext中, guid實現為128位值(16個八位位元組),並且可以以不同方式訪問它。

instancehandle是rti connext用於標識不同例項的128位值。 在rti connext中,dds_instancehandle_t等同於dds_guid_t型別,因為兩者都包含 

16個八位位元組。 

dds_entity::get_instance_handle()方法可用於訪問 rti connext實體的dds_instancehandle_t。 例如: 

在c:

dds_instancehandle_t handle = dds_handle_nil; 

handle =dds_entity_get_instance_handle((dds_entity *) participant );

或者在c ++中: 

dds_instancehandle_t handle; 

/* create participant and publications */

...

handle = participant->get_instance_handle();

獲得實體的例項控制代碼後,可以使用以下**將其輕鬆轉換為dds_guid_t: 

memcpy(guid->value, (dds_octet *)instancehandle->keyhash->value, 16);
在rti connnext中,還可以使用兩種不同的方法訪問遠端實體的guid:

dds_builtintopickey_t包含與dds_guid_t型別相同的資訊,但使用不同的表示:在dds_builtintopickey_t的情況下,金鑰儲存為四個32位整數,在dds_guid_t的情況下,它包含16個八位位元組的陣列。 因此,如果我們擁有遠端實體的金鑰,那麼從乙個實體轉換到另乙個實體是非常簡單的。 唯一需要考慮的是機器在必要時交換位元組的位元組順序,如下面的**所示:

#include ...

void dds_builtintopickey_to_guid(struct dds_guid_t *guid /* out */ , dds_builtintopickey_t *buitintopickey /* in */ )

#else /* big endian */

memcpy(guid->value, (dds_octet *)buitintopickey->value, 16);

#endif

}

SQLSERVER如何使用遞增排序的GUID做主鍵

場景 產品表資料量較大想用guid做表的主鍵,並在此字段上建立聚簇索引。因為guid是隨機生成的,生成的值大小是不確定的,每次生成的數可能很大,也可能很小。這樣會影響插入的效率 1.newsequentialid和newid 的區別 newsequentialid 和 newid 都可以產生uniq...

實體與實體之間的聯絡

單張表的缺點 表的結構不清晰 造成資料冗餘 表的可擴充套件性差 一對多關係 多對多關係 1.修改表的完整語句 1.修改表名 alter table 表名 rename 新錶名 2.增加字段 alter table 表名 add 欄位名 資料型別 完整性約束條件 add 欄位名 資料型別 完整性約束條...

Fedora10下開啟root的自動GUI登陸

fedora10預設是不允許root賬號進行gui登陸的,下面是解決方式。首先以使用者賬號進入終端,允許root賬號登陸 首先su 然後vi etc pam.d gdm 刪除其中的一行 auth required pam succeed if.so user root quiet 然後wq儲存並退出...