summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2020-02-02 17:22:50 +0300
committerMichael Klishin <michael@clojurewerkz.org>2020-02-02 17:22:50 +0300
commit6eb7144387f89747e7d65b05a4dea42c20457e06 (patch)
treedb5afd4b4903a02cff42eb0a11fc447ce21c801c /src
parentde658de4a998dc3f205bb5882d06b5d1769c7db0 (diff)
downloadrabbitmq-server-git-6eb7144387f89747e7d65b05a4dea42c20457e06.tar.gz
rabbit_exchange:lookup/1: support lists of keys
like rabbit_amqqueue does
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_exchange.erl12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index 2f7ec54041..d5b96adff1 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -219,8 +219,16 @@ assert_args_equivalence(#exchange{ name = Name, arguments = Args },
-spec lookup
(name()) -> rabbit_types:ok(rabbit_types:exchange()) |
- rabbit_types:error('not_found').
-
+ rabbit_types:error('not_found');
+ ([name()]) ->
+ [rabbit_types:exchange()].
+
+lookup([]) -> [];
+lookup([Name]) -> ets:lookup(rabbit_exchange, Name);
+lookup(Names) when is_list(Names) ->
+ %% Normally we'd call mnesia:dirty_read/1 here, but that is quite
+ %% expensive for reasons explained in rabbit_misc:dirty_read/1.
+ lists:append([ets:lookup(rabbit_exchange, Name) || Name <- Names]);
lookup(Name) ->
rabbit_misc:dirty_read({rabbit_exchange, Name}).