Resource[IO, ServerBinding]
который стартует сервер на инициализации и останавливает на освобождении
вы делаете дальше
val startServerStr: Resource[IO, (String, String)] =
startServer.map(binding => (binding.host.toString, binding.port.toString))
теперь что должна делать гипотетическая функция, которая разделяет этот ресурс на два, так что один отдельно стартует и останавливает только часть сервера связанную с хостом, другой - отдельно связанную с портом?
у меня проще пример Resource[IO, (HttpClient[IO], HttpServer[IO])], где HttpServer[IO](client: HttpClient[IO])
Ну кажется, что этот пример проще, но совершенно неизвестно какой набор общих ресурсов есть внутри этой структуры. Может, там общий тредпуд блокирующий, может быть настройки трейсинга, может ещё что-то. Даже если есть что-то, что выглядит логично, разрезать постфактум этот ресурс на два вы уже не сможете. Если это действительно возможно, вам нужно переписать код так чтобы он инициализировал клиент и сервер отдельно.
Обсуждают сегодня