summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-06-01 16:39:00 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-06-01 16:39:00 +0100
commit06b44204c0fc6b0120db0925a8efba4fbb41ca98 (patch)
tree8f77f8eb671695fd37bdeccba4bed31cec554c4f
parentafe7b305578972e05de2f487b783aa6df33baebb (diff)
downloadrabbitmq-server-06b44204c0fc6b0120db0925a8efba4fbb41ca98.tar.gz
rabbit_exchange:peek_serial/1.
-rw-r--r--src/rabbit_exchange.erl11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index 84a44cd2..14b078c0 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -24,7 +24,7 @@
info_keys/0, info/1, info/2, info_all/1, info_all/2,
publish/2, delete/2]).
%% these must be run inside a mnesia tx
--export([maybe_auto_delete/1, serial/1]).
+-export([maybe_auto_delete/1, serial/1, peek_serial/1]).
%%----------------------------------------------------------------------------
@@ -75,7 +75,8 @@
-spec(maybe_auto_delete/1::
(rabbit_types:exchange())
-> 'not_deleted' | {'deleted', rabbit_binding:deletions()}).
--spec(serial/1:: (rabbit_types:exchange()) -> 'none' | pos_integer()).
+-spec(serial/1 :: (rabbit_types:exchange()) -> 'none' | pos_integer()).
+-spec(peek_serial/1 :: (name()) -> pos_integer()).
-endif.
@@ -330,6 +331,12 @@ next_serial(XName) ->
#exchange_serial{name = XName, next = Serial + 1}, write),
Serial.
+peek_serial(XName) ->
+ case mnesia:read({rabbit_exchange_serial, XName}) of
+ [#exchange_serial{next = Serial}] -> Serial;
+ _ -> exchange_already_deleted
+ end.
+
%% Used with atoms from records; e.g., the type is expected to exist.
type_to_module(T) ->
{ok, Module} = rabbit_registry:lookup_module(exchange, T),