summaryrefslogtreecommitdiff
path: root/src/delegate.erl
diff options
context:
space:
mode:
authorSimon MacMullen <simon@lshift.net>2010-04-12 11:37:21 +0100
committerSimon MacMullen <simon@lshift.net>2010-04-12 11:37:21 +0100
commitb77ef427b978d2a1ccb78f619bab0e8176edef78 (patch)
tree9105e7ed69287e871721e5c26f14f7cfdf8d9ebb /src/delegate.erl
parentecd46b56aaf59389b98466dbe9eb6e8a265710d4 (diff)
downloadrabbitmq-server-b77ef427b978d2a1ccb78f619bab0e8176edef78.tar.gz
Port various queue operations over to the new delegate system. Unfortunately this doesn't fix the underlying bug!
Diffstat (limited to 'src/delegate.erl')
-rw-r--r--src/delegate.erl25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/delegate.erl b/src/delegate.erl
index c72a7e5a..98075428 100644
--- a/src/delegate.erl
+++ b/src/delegate.erl
@@ -34,11 +34,16 @@
-behaviour(gen_server2).
--export([start_link/1, delegate_cast/2, delegate_call/2, server/1]).
+-export([start_link/1, delegate_cast/2, delegate_call/2,
+ delegate_gs2_call/3, delegate_gs2_pcall/4,
+ delegate_gs2_cast/2, delegate_gs2_pcast/3,
+ server/1]).
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
+%%----------------------------------------------------------------------------
+
%%----------------------------------------------------------------------------
@@ -46,6 +51,24 @@ start_link(Hash) ->
gen_server2:start_link({local, server(Hash)},
?MODULE, [], []).
+delegate_gs2_call(Pid, Msg, Timeout) ->
+ {Status, Res} =
+ delegate_call(Pid, fun(P) -> gen_server2:call(P, Msg, Timeout) end),
+ Res.
+
+delegate_gs2_pcall(Pid, Pri, Msg, Timeout) ->
+ {Status, Res} =
+ delegate_call(Pid,
+ fun(P) -> gen_server2:pcall(P, Pri, Msg, Timeout) end),
+ Res.
+
+delegate_gs2_cast(Pid, Msg) ->
+ delegate_cast(Pid, fun(P) -> gen_server2:cast(P, Msg) end).
+
+delegate_gs2_pcast(Pid, Pri, Msg) ->
+ delegate_cast(Pid, fun(P) -> gen_server2:pcast(P, Pri, Msg) end).
+
+
delegate_call(Node, Thunk) when is_atom(Node) ->
gen_server2:call({server(), Node}, {thunk, Thunk}, infinity);