diff options
author | Simon MacMullen <simon@lshift.net> | 2010-04-12 11:37:21 +0100 |
---|---|---|
committer | Simon MacMullen <simon@lshift.net> | 2010-04-12 11:37:21 +0100 |
commit | b77ef427b978d2a1ccb78f619bab0e8176edef78 (patch) | |
tree | 9105e7ed69287e871721e5c26f14f7cfdf8d9ebb /src/delegate.erl | |
parent | ecd46b56aaf59389b98466dbe9eb6e8a265710d4 (diff) | |
download | rabbitmq-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.erl | 25 |
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); |