summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2010-02-03 16:15:12 +0000
committerMatthew Sackman <matthew@lshift.net>2010-02-03 16:15:12 +0000
commit3eff1b60a083a078015d483deceed34a5c878b39 (patch)
tree7c8a6dbc817d057380cfb2d69b6fdcac52590c7a
parentf48331a165fb2e9944a30f89403ad60b97c1b97e (diff)
downloadrabbitmq-server-3eff1b60a083a078015d483deceed34a5c878b39.tar.gz
rabbit_exchange_type.erl => rabbit_exchange_type_registry.erl; rabbit_exchange_behaviour.erl => rabbit_exchange_type.erl; rabbit_exchange_behaviour_spec.hrl => rabbit_exchange_type_spec.hrl. Plus associated changes
-rw-r--r--include/rabbit_exchange_type_spec.hrl (renamed from include/rabbit_exchange_behaviour_spec.hrl)0
-rw-r--r--src/rabbit.erl7
-rw-r--r--src/rabbit_exchange.erl4
-rw-r--r--src/rabbit_exchange_behaviour.erl49
-rw-r--r--src/rabbit_exchange_type.erl89
-rw-r--r--src/rabbit_exchange_type_direct.erl4
-rw-r--r--src/rabbit_exchange_type_fanout.erl4
-rw-r--r--src/rabbit_exchange_type_headers.erl4
-rw-r--r--src/rabbit_exchange_type_registry.erl105
-rw-r--r--src/rabbit_exchange_type_topic.erl4
10 files changed, 135 insertions, 135 deletions
diff --git a/include/rabbit_exchange_behaviour_spec.hrl b/include/rabbit_exchange_type_spec.hrl
index a32b09ab..a32b09ab 100644
--- a/include/rabbit_exchange_behaviour_spec.hrl
+++ b/include/rabbit_exchange_type_spec.hrl
diff --git a/src/rabbit.erl b/src/rabbit.erl
index 9fdef96b..51d8f9e0 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -53,10 +53,11 @@
[{mfa, {rabbit_mnesia, init, []}},
{enables, kernel_ready}]}).
--rabbit_boot_step({rabbit_exchange_type,
+-rabbit_boot_step({rabbit_exchange_type_registry,
[{description, "exchange type registry"},
- {mfa, {rabbit_sup, start_child, [rabbit_exchange_type]}},
- {enables, kernel_ready}]}).
+ {mfa, {rabbit_sup, start_child,
+ [rabbit_exchange_type_registry]}},
+ {enables, kernel_ready}]}).
-rabbit_boot_step({rabbit_log,
[{description, "logging server"},
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index 45236422..8dff8044 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -162,7 +162,7 @@ declare(ExchangeName, Type, Durable, AutoDelete, Args) ->
end.
type_to_module(T) ->
- case rabbit_exchange_type:lookup_module(T) of
+ case rabbit_exchange_type_registry:lookup_module(T) of
{ok, Module} -> Module;
{error, not_found} -> rabbit_misc:protocol_error(
command_invalid,
@@ -170,7 +170,7 @@ type_to_module(T) ->
end.
check_type(TypeBin) ->
- T = rabbit_exchange_type:binary_to_type(TypeBin),
+ T = rabbit_exchange_type_registry:binary_to_type(TypeBin),
Module = type_to_module(T),
case catch Module:description() of
{'EXIT', {undef, [{_, description, []} | _]}} ->
diff --git a/src/rabbit_exchange_behaviour.erl b/src/rabbit_exchange_behaviour.erl
deleted file mode 100644
index 66ebe383..00000000
--- a/src/rabbit_exchange_behaviour.erl
+++ /dev/null
@@ -1,49 +0,0 @@
-%% The contents of this file are subject to the Mozilla Public License
-%% Version 1.1 (the "License"); you may not use this file except in
-%% compliance with the License. You may obtain a copy of the License at
-%% http://www.mozilla.org/MPL/
-%%
-%% Software distributed under the License is distributed on an "AS IS"
-%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
-%% License for the specific language governing rights and limitations
-%% under the License.
-%%
-%% The Original Code is RabbitMQ.
-%%
-%% The Initial Developers of the Original Code are LShift Ltd,
-%% Cohesive Financial Technologies LLC, and Rabbit Technologies Ltd.
-%%
-%% Portions created before 22-Nov-2008 00:00:00 GMT by LShift Ltd,
-%% Cohesive Financial Technologies LLC, or Rabbit Technologies Ltd
-%% are Copyright (C) 2007-2008 LShift Ltd, Cohesive Financial
-%% Technologies LLC, and Rabbit Technologies Ltd.
-%%
-%% Portions created by LShift Ltd are Copyright (C) 2007-2009 LShift
-%% Ltd. Portions created by Cohesive Financial Technologies LLC are
-%% Copyright (C) 2007-2009 Cohesive Financial Technologies
-%% LLC. Portions created by Rabbit Technologies Ltd are Copyright
-%% (C) 2007-2009 Rabbit Technologies Ltd.
-%%
-%% All Rights Reserved.
-%%
-%% Contributor(s): ______________________________________.
-%%
-
--module(rabbit_exchange_behaviour).
-
--export([behaviour_info/1]).
-
-behaviour_info(callbacks) ->
- [
- {description, 0},
- {publish, 2},
-
- {validate, 1}, %% called BEFORE declaration, to check args etc; may exit with #amqp_error{}
- {create, 1}, %% called after declaration when previously absent
- {recover, 2}, %% called when recovering
- {delete, 2}, %% called after exchange deletion
- {add_binding, 2}, %% called after a binding has been added
- {delete_binding, 2} %% called after a binding has been deleted
- ];
-behaviour_info(_Other) ->
- undefined.
diff --git a/src/rabbit_exchange_type.erl b/src/rabbit_exchange_type.erl
index 585cc883..3ebb227d 100644
--- a/src/rabbit_exchange_type.erl
+++ b/src/rabbit_exchange_type.erl
@@ -31,76 +31,19 @@
-module(rabbit_exchange_type).
--behaviour(gen_server).
-
--export([start_link/0]).
-
--export([init/1, handle_call/3, handle_cast/2, handle_info/2,
- terminate/2, code_change/3]).
-
--export([register/2, binary_to_type/1, lookup_module/1]).
-
--define(SERVER, ?MODULE).
-
-%% TODO specs
-
-%%---------------------------------------------------------------------------
-
-start_link() ->
- gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
-
-%%---------------------------------------------------------------------------
-
-register(TypeName, ModuleName) ->
- gen_server:call(?SERVER, {register, TypeName, ModuleName}).
-
-binary_to_type(TypeBin) when is_binary(TypeBin) ->
- list_to_atom(binary_to_list(TypeBin)).
-
-lookup_module(T) when is_atom(T) ->
- case ets:lookup(rabbit_exchange_type_modules, T) of
- [{_, Module}] ->
- {ok, Module};
- [] ->
- {error, not_found}
- end.
-
-%%---------------------------------------------------------------------------
-
-internal_register(TypeName, ModuleName)
- when is_binary(TypeName), is_atom(ModuleName) ->
- true = ets:insert(rabbit_exchange_type_modules,
- {binary_to_type(TypeName), ModuleName}),
- ok.
-
-%%---------------------------------------------------------------------------
-
-init([]) ->
- rabbit_exchange_type_modules =
- ets:new(rabbit_exchange_type_modules, [protected, set, named_table]),
-
- %% TODO: split out into separate boot startup steps.
- ok = internal_register(<<"direct">>, rabbit_exchange_type_direct),
- ok = internal_register(<<"fanout">>, rabbit_exchange_type_fanout),
- ok = internal_register(<<"headers">>, rabbit_exchange_type_headers),
- ok = internal_register(<<"topic">>, rabbit_exchange_type_topic),
-
- {ok, none}.
-
-handle_call({register, TypeName, ModuleName}, _From, State) ->
- ok = internal_register(TypeName, ModuleName),
- {reply, ok, State};
-handle_call(Request, _From, State) ->
- {stop, {unhandled_call, Request}, State}.
-
-handle_cast(Request, State) ->
- {stop, {unhandled_cast, Request}, State}.
-
-handle_info(Message, State) ->
- {stop, {unhandled_info, Message}, State}.
-
-terminate(_Reason, _State) ->
- ok.
-
-code_change(_OldVsn, State, _Extra) ->
- {ok, State}.
+-export([behaviour_info/1]).
+
+behaviour_info(callbacks) ->
+ [
+ {description, 0},
+ {publish, 2},
+
+ {validate, 1}, %% called BEFORE declaration, to check args etc; may exit with #amqp_error{}
+ {create, 1}, %% called after declaration when previously absent
+ {recover, 2}, %% called when recovering
+ {delete, 2}, %% called after exchange deletion
+ {add_binding, 2}, %% called after a binding has been added
+ {delete_binding, 2} %% called after a binding has been deleted
+ ];
+behaviour_info(_Other) ->
+ undefined.
diff --git a/src/rabbit_exchange_type_direct.erl b/src/rabbit_exchange_type_direct.erl
index ed646fc2..d944e06f 100644
--- a/src/rabbit_exchange_type_direct.erl
+++ b/src/rabbit_exchange_type_direct.erl
@@ -32,11 +32,11 @@
-module(rabbit_exchange_type_direct).
-include("rabbit.hrl").
--behaviour(rabbit_exchange_behaviour).
+-behaviour(rabbit_exchange_type).
-export([description/0, publish/2]).
-export([validate/1, create/1, recover/2, delete/2, add_binding/2, delete_binding/2]).
--include("rabbit_exchange_behaviour_spec.hrl").
+-include("rabbit_exchange_type_spec.hrl").
description() ->
[{name, <<"direct">>},
diff --git a/src/rabbit_exchange_type_fanout.erl b/src/rabbit_exchange_type_fanout.erl
index fda40784..77061973 100644
--- a/src/rabbit_exchange_type_fanout.erl
+++ b/src/rabbit_exchange_type_fanout.erl
@@ -32,11 +32,11 @@
-module(rabbit_exchange_type_fanout).
-include("rabbit.hrl").
--behaviour(rabbit_exchange_behaviour).
+-behaviour(rabbit_exchange_type).
-export([description/0, publish/2]).
-export([validate/1, create/1, recover/2, delete/2, add_binding/2, delete_binding/2]).
--include("rabbit_exchange_behaviour_spec.hrl").
+-include("rabbit_exchange_type_spec.hrl").
description() ->
[{name, <<"fanout">>},
diff --git a/src/rabbit_exchange_type_headers.erl b/src/rabbit_exchange_type_headers.erl
index 88b88019..4afaf388 100644
--- a/src/rabbit_exchange_type_headers.erl
+++ b/src/rabbit_exchange_type_headers.erl
@@ -33,11 +33,11 @@
-include("rabbit.hrl").
-include("rabbit_framing.hrl").
--behaviour(rabbit_exchange_behaviour).
+-behaviour(rabbit_exchange_type).
-export([description/0, publish/2]).
-export([validate/1, create/1, recover/2, delete/2, add_binding/2, delete_binding/2]).
--include("rabbit_exchange_behaviour_spec.hrl").
+-include("rabbit_exchange_type_spec.hrl").
-ifdef(use_specs).
-spec(headers_match/2 :: (amqp_table(), amqp_table()) -> boolean()).
diff --git a/src/rabbit_exchange_type_registry.erl b/src/rabbit_exchange_type_registry.erl
new file mode 100644
index 00000000..11da75d1
--- /dev/null
+++ b/src/rabbit_exchange_type_registry.erl
@@ -0,0 +1,105 @@
+%% The contents of this file are subject to the Mozilla Public License
+%% Version 1.1 (the "License"); you may not use this file except in
+%% compliance with the License. You may obtain a copy of the License at
+%% http://www.mozilla.org/MPL/
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+%% License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% The Original Code is RabbitMQ.
+%%
+%% The Initial Developers of the Original Code are LShift Ltd,
+%% Cohesive Financial Technologies LLC, and Rabbit Technologies Ltd.
+%%
+%% Portions created before 22-Nov-2008 00:00:00 GMT by LShift Ltd,
+%% Cohesive Financial Technologies LLC, or Rabbit Technologies Ltd
+%% are Copyright (C) 2007-2008 LShift Ltd, Cohesive Financial
+%% Technologies LLC, and Rabbit Technologies Ltd.
+%%
+%% Portions created by LShift Ltd are Copyright (C) 2007-2009 LShift
+%% Ltd. Portions created by Cohesive Financial Technologies LLC are
+%% Copyright (C) 2007-2009 Cohesive Financial Technologies
+%% LLC. Portions created by Rabbit Technologies Ltd are Copyright
+%% (C) 2007-2009 Rabbit Technologies Ltd.
+%%
+%% All Rights Reserved.
+%%
+%% Contributor(s): ______________________________________.
+%%
+
+-module(rabbit_exchange_type_registry).
+
+-behaviour(gen_server).
+
+-export([start_link/0]).
+
+-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
+ terminate/2, code_change/3]).
+
+-export([register/2, binary_to_type/1, lookup_module/1]).
+
+-define(SERVER, ?MODULE).
+-define(ETS_NAME, ?MODULE).
+
+%% TODO specs
+
+%%---------------------------------------------------------------------------
+
+start_link() ->
+ gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
+
+%%---------------------------------------------------------------------------
+
+register(TypeName, ModuleName) ->
+ gen_server:call(?SERVER, {register, TypeName, ModuleName}).
+
+binary_to_type(TypeBin) when is_binary(TypeBin) ->
+ list_to_atom(binary_to_list(TypeBin)).
+
+lookup_module(T) when is_atom(T) ->
+ case ets:lookup(?ETS_NAME, T) of
+ [{_, Module}] ->
+ {ok, Module};
+ [] ->
+ {error, not_found}
+ end.
+
+%%---------------------------------------------------------------------------
+
+internal_register(TypeName, ModuleName)
+ when is_binary(TypeName), is_atom(ModuleName) ->
+ true = ets:insert(?ETS_NAME, {binary_to_type(TypeName), ModuleName}),
+ ok.
+
+%%---------------------------------------------------------------------------
+
+init([]) ->
+ ?ETS_NAME = ets:new(?ETS_NAME, [protected, set, named_table]),
+
+ %% TODO: split out into separate boot startup steps.
+ ok = internal_register(<<"direct">>, rabbit_exchange_type_direct),
+ ok = internal_register(<<"fanout">>, rabbit_exchange_type_fanout),
+ ok = internal_register(<<"headers">>, rabbit_exchange_type_headers),
+ ok = internal_register(<<"topic">>, rabbit_exchange_type_topic),
+
+ {ok, none}.
+
+handle_call({register, TypeName, ModuleName}, _From, State) ->
+ ok = internal_register(TypeName, ModuleName),
+ {reply, ok, State};
+handle_call(Request, _From, State) ->
+ {stop, {unhandled_call, Request}, State}.
+
+handle_cast(Request, State) ->
+ {stop, {unhandled_cast, Request}, State}.
+
+handle_info(Message, State) ->
+ {stop, {unhandled_info, Message}, State}.
+
+terminate(_Reason, _State) ->
+ ok.
+
+code_change(_OldVsn, State, _Extra) ->
+ {ok, State}.
diff --git a/src/rabbit_exchange_type_topic.erl b/src/rabbit_exchange_type_topic.erl
index 4bb3f4cb..d6424337 100644
--- a/src/rabbit_exchange_type_topic.erl
+++ b/src/rabbit_exchange_type_topic.erl
@@ -32,11 +32,11 @@
-module(rabbit_exchange_type_topic).
-include("rabbit.hrl").
--behaviour(rabbit_exchange_behaviour).
+-behaviour(rabbit_exchange_type).
-export([description/0, publish/2]).
-export([validate/1, create/1, recover/2, delete/2, add_binding/2, delete_binding/2]).
--include("rabbit_exchange_behaviour_spec.hrl").
+-include("rabbit_exchange_type_spec.hrl").
-export([topic_matches/2]).