conn_mgr: bind to topo_group, DB node loading, configurable DIRECT timeout, tests
- conn_mgr_init(TOPO_GROUP* group) — работает внутри заданной группы - conn_mgr_connect_node: загрузка узла из SQLite если нет в BGP-таблице - topo_node_sqlite_node_load(): загрузка TOPO_NODE (ref=0) из БД - cm_start_phase_direct: db_loaded-ветка — перебор всех адресов без NAT-фильтра - cm_cleanup_db_node: удаление TOPO_NODEQ из группы при неудаче, только если нет путей - cm_start_phase_indirect: исправлено зависание при best_candidates==0 (cm_deliver_result) - conn_mgr_set_direct_timeout_ms(): конфигурируемый таймаут фазы DIRECT - conn_mgr_destroy до etcp_router_destroy (исправлен порядок) - test_conn_mgr: +2 сценария (DB-успех, DB-недоступен), проверка topo_group
This commit is contained in:
1 parent
852ce401e7
commit
f6b37a857b
13 files changed
+433
-85
No files matched your search
@@ -7,6 +7,7 @@
|
||||
#include <time.h>
|
||||
|
||||
struct TOPO_NODEQ;
|
||||
struct TOPO_GROUPS;
|
||||
|
||||
#define PEERS_JOIN_SIG_SIZE 64
|
||||
#define PEERS_JOIN_TS_SIZE 8
|
||||
@@ -56,4 +57,14 @@ int topo_node_sqlite_nodeinfo_updated(sqlite3* db, uint64_t node_id);
|
||||
/** Обновляет RTT узла: node_addresses.rtt и все peers_*.node_RTT */
|
||||
void topo_node_sqlite_update_rtt(sqlite3* db, uint64_t node_id, uint16_t rtt);
|
||||
|
||||
/**
|
||||
* @brief Загружает TOPO_NODE из SQLite (ref_count=0).
|
||||
* @param groups нужен для выделения адресов из memory_pool
|
||||
* @return TOPO_NODE* или NULL если узел не найден/нет адресов
|
||||
*
|
||||
* Загружает pubkey, name из nodes, IPv4/UDP-адреса из node_addresses.
|
||||
* Вызывающий должен передать владение через topo_node_registry_acquire().
|
||||
*/
|
||||
struct TOPO_NODE* topo_node_sqlite_node_load(sqlite3* db, struct TOPO_GROUPS* groups, uint64_t node_id);
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user