|
@@ -105,7 +105,7 @@ handle_cast({work_finished, Node}, State = #state{node_queue=Queue}) ->
|
|
State2 = State#state{node_queue=Queue2},
|
|
State2 = State#state{node_queue=Queue2},
|
|
{noreply, State2};
|
|
{noreply, State2};
|
|
handle_cast({add_node, Node}, State = #state{node_queue=Queue}) ->
|
|
handle_cast({add_node, Node}, State = #state{node_queue=Queue}) ->
|
|
- Queue2 = priority_queue:insert(0, Node, Queue),
|
|
|
|
|
|
+ Queue2 = new_node(Node, Queue),
|
|
State2 = State#state{node_queue=Queue2},
|
|
State2 = State#state{node_queue=Queue2},
|
|
{noreply, State2};
|
|
{noreply, State2};
|
|
handle_cast({remove_node, Node}, State = #state{node_queue=Queue}) ->
|
|
handle_cast({remove_node, Node}, State = #state{node_queue=Queue}) ->
|
|
@@ -113,8 +113,8 @@ handle_cast({remove_node, Node}, State = #state{node_queue=Queue}) ->
|
|
State2 = State#state{node_queue=Queue2},
|
|
State2 = State#state{node_queue=Queue2},
|
|
{noreply, State2};
|
|
{noreply, State2};
|
|
handle_cast(scavenge, State = #state{node_queue=Queue}) ->
|
|
handle_cast(scavenge, State = #state{node_queue=Queue}) ->
|
|
- % Scavenge nodes here
|
|
|
|
- Queue2 = Queue,
|
|
|
|
|
|
+ World = net_adm:world(),
|
|
|
|
+ Queue2 = new_nodes(World, Queue),
|
|
State2 = State#state{node_queue=Queue2},
|
|
State2 = State#state{node_queue=Queue2},
|
|
{noreply, State2}.
|
|
{noreply, State2}.
|
|
|
|
|
|
@@ -158,3 +158,13 @@ start_work_from_queue(Func, Args, Receiver, Queue) ->
|
|
_Error ->
|
|
_Error ->
|
|
start_work_from_queue(Func, Args, Receiver, Queue2)
|
|
start_work_from_queue(Func, Args, Receiver, Queue2)
|
|
end.
|
|
end.
|
|
|
|
+
|
|
|
|
+new_nodes(Nodes, Queue) ->
|
|
|
|
+ lists:foldl(fun(Node, Q) -> new_node(Node, Q) end,
|
|
|
|
+ Queue, Nodes).
|
|
|
|
+
|
|
|
|
+new_node(Node, Queue) ->
|
|
|
|
+ case priority_queue:find_value(Node, Queue) of
|
|
|
|
+ {_Priority, Node} -> Queue;
|
|
|
|
+ none -> priority_queue:insert(0, Node, Queue)
|
|
|
|
+ end.
|