ceph主要資料結構解析1

2021-08-27 13:36:37 字數 3096 閱讀 2751

1.msgr.h檔案:定義訊息傳輸層的資料型別,以供ceph使用

(1)預設的監控埠:

#define ceph_mon_port    6789

(2)客戶端處理埠範圍定義:

#define ceph_port_first  6789//監控

#define ceph_port_start 6800 //開始

#define ceph_port_last 6900//結束

(3)tcp協議標識和版本資訊:

#define ceph_banner "ceph v027"

#define ceph_banner_max_len 30//最大長度

(4)ceph中的實體名稱:在網路傳輸中使用,例如mds0表示元資料伺服器0

struct ceph_entity_name  __attribute__ ((packed));//按照緊湊模式分配記憶體,而不是記憶體對齊

#define ceph_entity_type_mon 0x01//監控伺服器實體

#define ceph_entity_type_mds 0x02//元資料伺服器實體

#define ceph_entity_type_osd 0x04//物件儲存裝置實體

#define ceph_entity_type_client 0x08//客戶端實體

#define ceph_entity_type_auth 0x20//許可權實體

#define ceph_entity_type_any 0xff//任何

同時提供乙個函式用於將型別轉換為名字字串的函式如下:

const char *ceph_entity_type_name(int type)

}

(5)實體網路位址以及與名字實體的對應關係結構體

struct ceph_entity_addr  __attribute__ ((packed));

struct ceph_entity_inst __attribute__ ((packed));

(6)訊息交換協議定義:

#define ceph_msgr_tag_ready         1  /* server->client: ready for messages */

#define ceph_msgr_tag_resetsession 2 /* server->client: reset, try again */

#define ceph_msgr_tag_wait 3 /* server->client: wait for racing

incoming connection */

#define ceph_msgr_tag_retry_session 4 /* server->client + cseq: try again

with higher cseq */

#define ceph_msgr_tag_retry_global 5 /* server->client + gseq: try again

with higher gseq */

#define ceph_msgr_tag_close 6 /* closing pipe */

#define ceph_msgr_tag_msg 7 /* message */

#define ceph_msgr_tag_ack 8 /* message ack */

#define ceph_msgr_tag_keepalive 9 /* just a keepalive byte! */

#define ceph_msgr_tag_badprotover 10 /* bad protocol version */

#define ceph_msgr_tag_badauthorizer 11 /* bad authorizer */

#define ceph_msgr_tag_features 12 /* insufficient features */

#define ceph_msgr_tag_seq 13 /* 64-bit int follows with seen seq number */

(7)連線協商

struct ceph_msg_connect  __attribute__ ((packed));

struct ceph_msg_connect_reply __attribute__ ((packed));

#define ceph_msg_connect_lossy 1 /* messages i send may be safely dropped */

(8)訊息頭部結構:有老的

struct ceph_msg_header_old  __attribute__ ((packed));

struct ceph_msg_header __attribute__ ((packed));

#define ceph_msg_prio_low 64

#define ceph_msg_prio_default 127

#define ceph_msg_prio_high 196

#define ceph_msg_prio_highest 255

(9)資料有效載荷結構

struct ceph_msg_footer  __attribute__ ((packed));

#define ceph_msg_footer_complete (1<<0) /* msg wasn't aborted */

#define ceph_msg_footer_nocrc (1<<1) /* no data crc */

驅動主要資料結構

驅動物件 driver object typedef struct driver object driver object typedef struct driver object pdriver object n is 結構圖 裝置物件 deviceobject typedef struct de...

QuotationTool 主要資料結構

那麼我們希望讀出來的資料是這個什麼樣子呢?也就是資料結構是怎麼樣的?既然excel是個二維 那麼讀出來的數也放在乙個二維 裡面得了。我們乙個簡化版的例子來看,下面的 是從原始 中截出來的一部分。產品編碼 產品型號 數量標準價 rmb 0235a0w2 rt msr5660 250000 這樣的缺點在...

資料結構 1

線性結構 線性表,棧,佇列,串。線性結構特點 結構中的資料元素之間存在一對一的線性關係。線性表 線性表 最簡單 最基本 最常用的資料結構。操作不受限定。順序表 用順序儲存方式的線性表叫順序表。線性表的順序儲存方式 在記憶體中用一塊位址連續的空間一次存放線性表的資料元素。特點 表中相鄰的資料元素在記憶...