summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Garnock-Jones <tonyg@kcbbs.gen.nz>2009-01-15 14:13:25 +1300
committerTony Garnock-Jones <tonyg@kcbbs.gen.nz>2009-01-15 14:13:25 +1300
commit3111476762c0206c18d77ffc56745fcdeb5da26b (patch)
tree0b18b430a7100e67587344c6cbf5e0128b16f335
parent148f266ab03fd1b84a556df064cb5ff5cc0883ae (diff)
downloadrabbitmq-server-3111476762c0206c18d77ffc56745fcdeb5da26b.tar.gz
Add "amq.match" builtin exchange; accept "headers" in exchange.declare; and
stub out routing implementation for headers exchanges.
-rw-r--r--src/rabbit_access_control.erl1
-rw-r--r--src/rabbit_exchange.erl5
2 files changed, 6 insertions, 0 deletions
diff --git a/src/rabbit_access_control.erl b/src/rabbit_access_control.erl
index b73090fc..e2d96c71 100644
--- a/src/rabbit_access_control.erl
+++ b/src/rabbit_access_control.erl
@@ -186,6 +186,7 @@ add_vhost(VHostPath) ->
[{<<"">>, direct},
{<<"amq.direct">>, direct},
{<<"amq.topic">>, topic},
+ {<<"amq.match">>, headers},
{<<"amq.fanout">>, fanout}]],
ok;
[_] ->
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index 925c335c..03478a4d 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -145,6 +145,8 @@ check_type(<<"direct">>) ->
direct;
check_type(<<"topic">>) ->
topic;
+check_type(<<"headers">>) ->
+ headers;
check_type(T) ->
rabbit_misc:protocol_error(
command_invalid, "invalid exchange type '~s'", [T]).
@@ -252,6 +254,9 @@ route(#exchange{name = Name, type = topic}, RoutingKey) ->
topic_matches(BindingKey, RoutingKey)]
end);
+route(X = #exchange{type = headers}, _RoutingKey) ->
+ exit(headers_unimplemented);
+
route(X = #exchange{type = fanout}, _) ->
route_internal(X, '_');