У меня есть несколько параллельных Service
, выполнение которых я хочу контролировать. В частности, я хочу иметь возможность использовать все операции, которые предоставляет Fiber
, а также некоторые другие специфические для бизнеса c вещи. В настоящее время я подумываю просто унаследовать его от Fiber
. Вот он:
trait Svc[F[_]] extends Fiber[F, Unit]{
def usefulOp: F[Unit]
}
Используя такой подход, я добавил к сервису операции Fiber
join
и cancel
, а также использовал что-то, что связано с бизнес-логами c . Проблема, которую я вижу, заключается в том, что если Svc
отменяется и на нем вызывается usefulOp
, может возникнуть проблема.
Что могло бы быть решением проблемы? Наверное, запретить звонить usefulOp
на отмененный Svc
как-нибудь?