ebb_worker.erl 692 B

123456789101112131415161718192021222324252627282930313233
  1. -module(ebb_worker).
  2. -export([start_link/3, start_link/4, stop/1]).
  3. -export([worker/3, worker/4]).
  4. start_link(Func, Args, Receiver) ->
  5. try
  6. spawn_link(?MODULE, worker, [Func, Args, Receiver])
  7. of
  8. Pid -> {ok, Pid}
  9. catch
  10. Error -> Error
  11. end.
  12. start_link(Node, Func, Args, Receiver) ->
  13. try
  14. spawn_link(Node, ?MODULE, worker, [Node, Func, Args, Receiver])
  15. of
  16. Pid -> {ok, Pid}
  17. catch
  18. Error -> Error
  19. end.
  20. worker(Func, Args, Receiver) ->
  21. ebb_event:return(Receiver, apply(Func, Args)).
  22. worker(Node, Func, Args, Receiver) ->
  23. ebb_event:return(Receiver, apply(Func, Args)),
  24. ebb_work_manager:work_finished(Node).
  25. stop(Worker) ->
  26. exit(Worker, kill).