Может ли пользовательский диспетчер, созданный с @behavior GenStage.Dispatcher
, получить доступ к своим родительским модулям, который вызывает его как {:producer, state, dispatcher: CustomDispatcher}
?
Я понял, что диспетчер запускается в том же процессе, что и производитель.
Если я, например, попытаюсь запустить handle_call
от диспетчера к производителю, я получу:
GenStage.call(producer, :test)
** (exit) exited in: GenServer.call(#PID<0.1575.0>, :test, 5000)
** (EXIT) process attempted to call itself
(elixir) lib/gen_server.ex:917: GenServer.call/3
Итак, имея эту ошибку, есть ли другой очевидный способ доступа к методам производителя?
Я знаю, что вы можете инициализировать диспетчер с помощью params, но я хотел бы получить доступ к методам / состоянию производителя, потому что они изменены с помощью обратных вызовов производителя