-
Notifications
You must be signed in to change notification settings - Fork 2
UserManager
Derovi edited this page May 3, 2021
·
1 revision
NetworkService умеет отправлять сообщения по InetSocketAddress, дает возможность узнать доставлено ли оно.
Удобнее было бы отправлять сообщения, указывая UserID, чтобы логика получения InetSocketAddress была инкапсулирована. Эту возможность предоставляет UserManager.
Причины почему NetworkService не работает напрямую с UserID:
- SRP
- NetworkService умеет меньше зависимостей, его удобнее тестировать.
UserManager предоставляет такие же методы для отправки сообщений - sendGet, sendPost, но вместо InetSocketAddress они принимают UserID.
- Если в локальном хранилище (StorageService) для данного UserID уже записан InetSocketAddress, используется он
- Если в локальном хранилище нет UserID, отправляется запрос в DHT, полученный InetSocketAddress используется и записывается локально
- Если использован InetSocketAddress из локального хранилища, но сообщение не доставлено, происходит попытка использовать InetSocketAddress из DHT, обновляется локальный (если он совпадает с тем, что хранится локально, игнорируется)