ntp_node_time: переход с etcp_router на raw ETCP (P2P)
- Добавлен ETCP_ID_NTP_TIME=0x04 (raw ETCP packet ID) - Удалён ETCP_RT_ID_NTP_TIME=0x12 (router-сервис) - ntp_node_time.c: etcp_router_bind/send → etcp_bind/etcp_send - send_time_sync() принимает ETCP_CONN* вместо dst_node_id - recv_cb разбирает raw dgram вместо SVC_ROUTE_HDR - Обновлены doc-файлы
This commit is contained in:
1 parent
2e7c32c893
commit
58df4d8571
4 files changed
+48
-35
No files matched your search
@@ -4,7 +4,7 @@
|
||||
Синхронизация времени между узлами uTun через ETCP-канал. Позволяет вычислять смещение часов относительно каждого соседа, обнаруживать дрейф и, если узел сам не синхронизирован с NTP, корректировать свои часы по времени синхронизированного соседа. Используется для точной координации событий между узлами (db_sync, timestamp-ы сообщений в чате).
|
||||
|
||||
## 2. Как пользоваться
|
||||
`ntp_node_time_init()` регистрирует callback на новые ETCP-соединения и callback на приём данных через `etcp_router` (service ID `ETCP_RT_ID_NTP_TIME = 0x12`). При установке нового соединения автоматически вызывается `ntp_node_on_conn_ready` — отправка `TIME_SYNC` соседу. При получении `TIME_SYNC` вычисляется per-peer offset, проверяется дрейф, и если мы не синхронизированы а сосед синхронизирован — корректируем свои часы и рассылаем коррекцию всем остальным соседям.
|
||||
`ntp_node_time_init()` регистрирует callback на новые ETCP-соединения и callback на приём данных через raw `etcp_bind` (packet ID `ETCP_ID_NTP_TIME = 0x04`, P2P без роутера). При установке нового соединения автоматически вызывается `ntp_node_on_conn_init` — отправка `TIME_SYNC` соседу. При получении `TIME_SYNC` вычисляется per-peer offset, проверяется дрейф, и если мы не синхронизированы а сосед синхронизирован — корректируем свои часы и рассылаем коррекцию всем остальным соседям.
|
||||
|
||||
`ntp_node_sync_peers()` — широковещательная рассылка `TIME_SYNC` всем активным соседям. Вызывается автоматически после успешной NTP-синхронизации из `ntp_time`.
|
||||
|
||||
@@ -20,6 +20,6 @@
|
||||
- `struct NTP_NODE_TIME` — фиксированный массив `peers[32]` + счётчик `peer_count`
|
||||
|
||||
**Функции:**
|
||||
- `ntp_node_time_init(inst)` — регистрирует bind в `etcp_router` (RT_ID 0x12) и callback на новые соединения
|
||||
- `ntp_node_time_init(inst)` — регистрирует bind в `etcp_bind` (ID 0x04) и callback на новые соединения
|
||||
- `ntp_node_time_destroy(inst)` — снимает регистрацию bind и callback, обнуляет peer_count
|
||||
- `ntp_node_sync_peers(inst)` — отправляет `TIME_SYNC` всем активным/initialized соседям (вызывается после NTP-синхронизации)
|
||||
Reference in new issue
Block a user