Добавлен group_id в etcp_router и topo_group, удалён msg_transport
- etcp_router: SVC_ROUTE_HDR (+8B), ETCP_ROUTER_CONN/TRANSIT_QUEUE хеши расширены под group_id - Все caller'ы (proxy, routing, conn_mgr, nat, chatgui, tests) обновлены - topo_group: глобальный реестр TOPO_NODE по node_id, ref_count=0 при создании - BGP-обмен активируется для всех групп (а не только дефолтной) - Протокол: group_id добавлен в WITHDRAW/TABLE_REQ/TABLE_COMPLETE/ERR_GROUP_MISMATCH - Per-connection коллбэки заменены на instance-level conn_status - msg_transport полностью удалён из проекта 57/57 тестов
This commit is contained in:
1 parent
5265783164
commit
852ce401e7
37 files changed
+375
-1125
No files matched your search
@@ -252,8 +252,20 @@ struct TOPO_NODEQ {
|
||||
|
||||
struct TOPO_NODEQ* topo_node_find_by_id(struct TOPO_GROUP* group, uint64_t node_id);
|
||||
|
||||
// Владение TOPO_NODE: создаётся с ref_count=0. Владелец вызывает topo_node_ref() чтобы завладеть.
|
||||
// При отказе от владения — topo_node_unref(). При ref_count=0 узел удаляется.
|
||||
void topo_node_ref(struct TOPO_NODE* ni);
|
||||
void topo_node_unref(struct TOPO_NODE* ni);
|
||||
|
||||
// Глобальный реестр TOPO_NODE* (по node_id). Каждый узел хранится один раз.
|
||||
// При помещении в реестр и при получении из реестра владение берётся (ref++).
|
||||
// При освобождении из реестра владение возвращается (unref, при ref=0 — удаление).
|
||||
struct TOPO_NODE* topo_node_registry_acquire(struct TOPO_GROUPS* groups, struct TOPO_NODE* ni);
|
||||
void topo_node_registry_release(struct TOPO_GROUPS* groups, struct TOPO_NODE* ni);
|
||||
|
||||
// Освободить узел без учёта ref_count (для ошибок после deserialize, пока ref=0).
|
||||
void topo_node_free_raw(struct TOPO_GROUPS* groups, struct TOPO_NODE* ni);
|
||||
|
||||
void topo_node_free_lists(struct TOPO_GROUP* group, struct TOPO_NODEQ* nq);
|
||||
int topo_node_dyn_size(const struct TOPOMSG_NODE* msg);
|
||||
|
||||
|
||||
Reference in new issue
Block a user