Lines Matching refs:Worker

55 release_worker(Pool, Worker) ->
56 ok = gen_server:cast(Pool, {release_worker, Worker}).
58 release_worker_sync(Pool, Worker) ->
59 ok = gen_server:call(Pool, {release_worker_sync, Worker}).
86 {ok, Worker} = couch_replicator_connection:acquire(Url, ProxyUrl),
88 workers = [Worker | Workers],
89 callers = monitor_client(Callers, Worker, From)
91 {reply, {ok, Worker}, NewState}
97 handle_call({release_worker_sync, Worker}, _From, State) ->
98 {reply, ok, release_worker_internal(Worker, State)}.
100 handle_cast({release_worker, Worker}, State) ->
101 {noreply, release_worker_internal(Worker, State)}.
121 {ok, Worker} = couch_replicator_connection:acquire(Url, ProxyUrl),
122 NewCallers1 = monitor_client(NewCallers0, Worker, From),
123 gen_server:reply(From, {ok, Worker}),
125 workers = [Worker | Workers2],
135 {value, {Worker, Ref}} ->
136 handle_cast({release_worker, Worker}, State);
158 monitor_client(Callers, Worker, {ClientPid, _}) ->
159 [{Worker, erlang:monitor(process, ClientPid)} | Callers].
161 demonitor_client(Callers, Worker) ->
162 case lists:keysearch(Worker, 1, Callers) of
163 {value, {Worker, MonRef}} ->
165 lists:keydelete(Worker, 1, Callers);
170 release_worker_internal(Worker, State) ->
172 NewCallers0 = demonitor_client(Callers, Worker),
173 case is_process_alive(Worker) andalso
174 lists:member(Worker, State#state.workers) of
179 couch_replicator_connection:release(Worker),
180 State#state.workers -- [Worker];
182 NewCallers1 = monitor_client(NewCallers0, Worker, From),
183 gen_server:reply(From, {ok, Worker}),