summaryrefslogtreecommitdiff
path: root/src/rabbit_tests_event_receiver.erl
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-08-16 12:02:29 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-08-16 12:02:29 +0100
commit7de214e7104ec2a094b8b927e789dab5027165cb (patch)
treeadfb0356655c65b58a4275137d8ed37095956dae /src/rabbit_tests_event_receiver.erl
parentecc6796de925554b174020fc10d3df8917a29226 (diff)
downloadrabbitmq-server-7de214e7104ec2a094b8b927e789dab5027165cb.tar.gz
Don't drain events, instead get rabbit_tests_event_receiver to only forward on events we care about.
Diffstat (limited to 'src/rabbit_tests_event_receiver.erl')
-rw-r--r--src/rabbit_tests_event_receiver.erl35
1 files changed, 20 insertions, 15 deletions
diff --git a/src/rabbit_tests_event_receiver.erl b/src/rabbit_tests_event_receiver.erl
index dba03fdd..abcbe0b6 100644
--- a/src/rabbit_tests_event_receiver.erl
+++ b/src/rabbit_tests_event_receiver.erl
@@ -16,38 +16,43 @@
-module(rabbit_tests_event_receiver).
--export([start/2, stop/0]).
+-export([start/3, stop/0]).
-export([init/1, handle_call/2, handle_event/2, handle_info/2,
terminate/2, code_change/3]).
-start(Pid, Nodes) ->
+-include("rabbit.hrl").
+
+start(Pid, Nodes, Types) ->
Oks = [ok || _ <- Nodes],
{Oks, _} = rpc:multicall(Nodes, gen_event, add_handler,
- [rabbit_event, ?MODULE, [Pid]]).
+ [rabbit_event, ?MODULE, [Pid, Types]]).
stop() ->
gen_event:delete_handler(rabbit_event, ?MODULE, []).
%%----------------------------------------------------------------------------
-init([Pid]) ->
- {ok, Pid}.
+init([Pid, Types]) ->
+ {ok, {Pid, Types}}.
-handle_call(_Request, Pid) ->
- {ok, not_understood, Pid}.
+handle_call(_Request, State) ->
+ {ok, not_understood, State}.
-handle_event(Event, Pid) ->
- Pid ! Event,
- {ok, Pid}.
+handle_event(Event = #event{type = Type}, State = {Pid, Types}) ->
+ case lists:member(Type, Types) of
+ true -> Pid ! Event;
+ false -> ok
+ end,
+ {ok, State}.
-handle_info(_Info, Pid) ->
- {ok, Pid}.
+handle_info(_Info, State) ->
+ {ok, State}.
-terminate(_Arg, _Pid) ->
+terminate(_Arg, _State) ->
ok.
-code_change(_OldVsn, Pid, _Extra) ->
- {ok, Pid}.
+code_change(_OldVsn, State, _Extra) ->
+ {ok, State}.
%%----------------------------------------------------------------------------