diff options
author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2010-07-06 00:22:29 +0100 |
---|---|---|
committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2010-07-06 00:22:29 +0100 |
commit | bd82f6fd37569adcf1602ae01366cd3fef523416 (patch) | |
tree | d9bdf4199143c9e597ef1417493ab144c185651e | |
parent | d84e67b9e089c41eab143045f37183e87d46534d (diff) | |
download | rabbitmq-server-bd82f6fd37569adcf1602ae01366cd3fef523416.tar.gz |
moved common types rabbit_types; move net types to rabbit_networking
-rw-r--r-- | include/rabbit_backing_queue_spec.hrl | 14 | ||||
-rw-r--r-- | include/rabbit_exchange_type_spec.hrl | 2 | ||||
-rw-r--r-- | src/rabbit.erl | 54 | ||||
-rw-r--r-- | src/rabbit_access_control.erl | 16 | ||||
-rw-r--r-- | src/rabbit_amqqueue.erl | 42 | ||||
-rw-r--r-- | src/rabbit_basic.erl | 16 | ||||
-rw-r--r-- | src/rabbit_binary_generator.erl | 6 | ||||
-rw-r--r-- | src/rabbit_binary_parser.erl | 4 | ||||
-rw-r--r-- | src/rabbit_channel.erl | 16 | ||||
-rw-r--r-- | src/rabbit_exchange.erl | 18 | ||||
-rw-r--r-- | src/rabbit_misc.erl | 16 | ||||
-rw-r--r-- | src/rabbit_net.erl | 6 | ||||
-rw-r--r-- | src/rabbit_networking.erl | 24 | ||||
-rw-r--r-- | src/rabbit_persister.erl | 10 | ||||
-rw-r--r-- | src/rabbit_reader.erl | 6 | ||||
-rw-r--r-- | src/rabbit_router.erl | 2 | ||||
-rw-r--r-- | src/rabbit_types.erl | 89 | ||||
-rw-r--r-- | src/rabbit_writer.erl | 8 |
18 files changed, 194 insertions, 155 deletions
diff --git a/include/rabbit_backing_queue_spec.hrl b/include/rabbit_backing_queue_spec.hrl index 0cef2379..05dc1464 100644 --- a/include/rabbit_backing_queue_spec.hrl +++ b/include/rabbit_backing_queue_spec.hrl @@ -31,7 +31,7 @@ -type(fetch_result() :: %% Message, IsDelivered, AckTag, Remaining_Len - ('empty'|{rabbit:basic_message(), boolean(), ack(), non_neg_integer()})). + ('empty'|{rabbit_types:basic_message(), boolean(), ack(), non_neg_integer()})). -type(is_durable() :: boolean()). -type(attempt_recovery() :: boolean()). -type(purged_msg_count() :: non_neg_integer()). @@ -42,15 +42,15 @@ -spec(terminate/1 :: (state()) -> state()). -spec(delete_and_terminate/1 :: (state()) -> state()). -spec(purge/1 :: (state()) -> {purged_msg_count(), state()}). --spec(publish/2 :: (rabbit:basic_message(), state()) -> state()). +-spec(publish/2 :: (rabbit_types:basic_message(), state()) -> state()). -spec(publish_delivered/3 :: - (ack_required(), rabbit:basic_message(), state()) -> {ack(), state()}). + (ack_required(), rabbit_types:basic_message(), state()) -> {ack(), state()}). -spec(fetch/2 :: (ack_required(), state()) -> {fetch_result(), state()}). -spec(ack/2 :: ([ack()], state()) -> state()). --spec(tx_publish/3 :: (rabbit:txn(), rabbit:basic_message(), state()) -> state()). --spec(tx_ack/3 :: (rabbit:txn(), [ack()], state()) -> state()). --spec(tx_rollback/2 :: (rabbit:txn(), state()) -> {[ack()], state()}). --spec(tx_commit/3 :: (rabbit:txn(), fun (() -> any()), state()) -> {[ack()], state()}). +-spec(tx_publish/3 :: (rabbit_types:txn(), rabbit_types:basic_message(), state()) -> state()). +-spec(tx_ack/3 :: (rabbit_types:txn(), [ack()], state()) -> state()). +-spec(tx_rollback/2 :: (rabbit_types:txn(), state()) -> {[ack()], state()}). +-spec(tx_commit/3 :: (rabbit_types:txn(), fun (() -> any()), state()) -> {[ack()], state()}). -spec(requeue/2 :: ([ack()], state()) -> state()). -spec(len/1 :: (state()) -> non_neg_integer()). -spec(is_empty/1 :: (state()) -> boolean()). diff --git a/include/rabbit_exchange_type_spec.hrl b/include/rabbit_exchange_type_spec.hrl index dbbe74f0..5a010c0d 100644 --- a/include/rabbit_exchange_type_spec.hrl +++ b/include/rabbit_exchange_type_spec.hrl @@ -31,7 +31,7 @@ -ifdef(use_specs). -spec(description/0 :: () -> [{atom(), any()}]). --spec(publish/2 :: (rabbit_exchange:exchange(), rabbit:delivery()) +-spec(publish/2 :: (rabbit_exchange:exchange(), rabbit_types:delivery()) -> {rabbit_router:routing_result(), [pid()]}). -spec(validate/1 :: (rabbit_exchange:exchange()) -> 'ok'). -spec(create/1 :: (rabbit_exchange:exchange()) -> 'ok'). diff --git a/src/rabbit.erl b/src/rabbit.erl index 9f3481d2..3ebbd072 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -176,7 +176,6 @@ -include("rabbit_framing.hrl"). -include("rabbit.hrl"). --include_lib("kernel/include/inet.hrl"). -define(APPS, [os_mon, mnesia, rabbit]). @@ -184,60 +183,9 @@ -ifdef(use_specs). --export_type([txn/0, maybe/1, info/0, info_key/0, message/0, basic_message/0, - delivery/0, content/0, decoded_content/0, undecoded_content/0, - unencoded_content/0, encoded_content/0, vhost/0, ctag/0, - ip_port/0, hostname/0]). - --type(maybe(T) :: T | 'none'). --type(vhost() :: binary()). --type(ctag() :: binary()). - -%% TODO: make this more precise by tying specific class_ids to -%% specific properties --type(undecoded_content() :: - #content{class_id :: rabbit_framing:amqp_class_id(), - properties :: 'none', - properties_bin :: binary(), - payload_fragments_rev :: [binary()]} | - #content{class_id :: rabbit_framing:amqp_class_id(), - properties :: rabbit_framing:amqp_property_record(), - properties_bin :: 'none', - payload_fragments_rev :: [binary()]}). --type(unencoded_content() :: undecoded_content()). --type(decoded_content() :: - #content{class_id :: rabbit_framing:amqp_class_id(), - properties :: rabbit_framing:amqp_property_record(), - properties_bin :: rabbit:maybe(binary()), - payload_fragments_rev :: [binary()]}). --type(encoded_content() :: - #content{class_id :: rabbit_framing:amqp_class_id(), - properties :: rabbit:maybe(rabbit_framing:amqp_property_record()), - properties_bin :: binary(), - payload_fragments_rev :: [binary()]}). --type(content() :: undecoded_content() | decoded_content()). --type(basic_message() :: - #basic_message{exchange_name :: rabbit_exchange:name(), - routing_key :: rabbit_router:routing_key(), - content :: content(), - guid :: rabbit_guid:guid(), - is_persistent :: boolean()}). --type(message() :: basic_message()). --type(delivery() :: - #delivery{mandatory :: boolean(), - immediate :: boolean(), - txn :: rabbit:maybe(rabbit:txn()), - sender :: pid(), - message :: message()}). - -%% this is really an abstract type, but dialyzer does not support them --type(txn() :: rabbit_guid:guid()). +-type(file_suffix() :: binary()). %% this really should be an abstract type -type(log_location() :: 'tty' | 'undefined' | file:filename()). --type(file_suffix() :: binary()). - --type(info_key() :: atom()). --type(info() :: {info_key(), any()}). -spec(prepare/0 :: () -> 'ok'). -spec(start/0 :: () -> 'ok'). diff --git a/src/rabbit_access_control.erl b/src/rabbit_access_control.erl index f9fd2c31..973851a4 100644 --- a/src/rabbit_access_control.erl +++ b/src/rabbit_access_control.erl @@ -57,7 +57,7 @@ -spec(check_login/2 :: (binary(), binary()) -> user()). -spec(user_pass_login/2 :: (username(), password()) -> user()). --spec(check_vhost_access/2 :: (user(), rabbit:vhost()) -> 'ok'). +-spec(check_vhost_access/2 :: (user(), rabbit_types:vhost()) -> 'ok'). -spec(check_resource_access/3 :: (username(), rabbit_misc:r(atom()), permission_atom()) -> 'ok'). -spec(add_user/2 :: (username(), password()) -> 'ok'). @@ -66,16 +66,16 @@ -spec(list_users/0 :: () -> [username()]). -spec(lookup_user/1 :: (username()) -> {'ok', user()} | rabbit_misc:not_found()). --spec(add_vhost/1 :: (rabbit:vhost()) -> 'ok'). --spec(delete_vhost/1 :: (rabbit:vhost()) -> 'ok'). --spec(list_vhosts/0 :: () -> [rabbit:vhost()]). --spec(set_permissions/5 ::(username(), rabbit:vhost(), regexp(), +-spec(add_vhost/1 :: (rabbit_types:vhost()) -> 'ok'). +-spec(delete_vhost/1 :: (rabbit_types:vhost()) -> 'ok'). +-spec(list_vhosts/0 :: () -> [rabbit_types:vhost()]). +-spec(set_permissions/5 ::(username(), rabbit_types:vhost(), regexp(), regexp(), regexp()) -> 'ok'). --spec(clear_permissions/2 :: (username(), rabbit:vhost()) -> 'ok'). +-spec(clear_permissions/2 :: (username(), rabbit_types:vhost()) -> 'ok'). -spec(list_vhost_permissions/1 :: - (rabbit:vhost()) -> [{username(), regexp(), regexp(), regexp()}]). + (rabbit_types:vhost()) -> [{username(), regexp(), regexp(), regexp()}]). -spec(list_user_permissions/1 :: - (username()) -> [{rabbit:vhost(), regexp(), regexp(), regexp()}]). + (username()) -> [{rabbit_types:vhost(), regexp(), regexp(), regexp()}]). -endif. diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index e1bb413e..9e271c8e 100644 --- a/src/rabbit_amqqueue.erl +++ b/src/rabbit_amqqueue.erl @@ -66,38 +66,38 @@ #amqqueue{name :: name(), durable :: boolean(), auto_delete :: boolean(), - exclusive_owner :: rabbit:maybe(pid()), + exclusive_owner :: rabbit_types:maybe(pid()), arguments :: rabbit_framing:amqp_table(), - pid :: rabbit:maybe(pid())}). + pid :: rabbit_types:maybe(pid())}). -type(qlen() :: {'ok', non_neg_integer()}). -type(qfun(A) :: fun ((amqqueue()) -> A)). --type(qmsg() :: {name(), pid(), msg_id(), boolean(), rabbit:message()}). +-type(qmsg() :: {name(), pid(), msg_id(), boolean(), rabbit_types:message()}). -type(msg_id() :: non_neg_integer()). -type(ok_or_errors() :: 'ok' | {'error', [{'error' | 'exit' | 'throw', any()}]}). -spec(start/0 :: () -> 'ok'). -spec(declare/5 :: (name(), boolean(), boolean(), rabbit_framing:amqp_table(), - rabbit:maybe(pid())) -> {'new' | 'existing', amqqueue()}). + rabbit_types:maybe(pid())) -> {'new' | 'existing', amqqueue()}). -spec(lookup/1 :: (name()) -> {'ok', amqqueue()} | rabbit_misc:not_found()). -spec(with/2 :: (name(), qfun(A)) -> A | rabbit_misc:not_found()). -spec(with_or_die/2 :: (name(), qfun(A)) -> A). -spec(assert_equivalence/5 :: (amqqueue(), boolean(), boolean(), - rabbit_framing:amqp_table(), rabbit:maybe(pid)) + rabbit_framing:amqp_table(), rabbit_types:maybe(pid)) -> ok). -spec(check_exclusive_access/2 :: (amqqueue(), pid()) -> 'ok'). -spec(with_exclusive_access_or_die/3 :: (name(), pid(), qfun(A)) -> A). --spec(list/1 :: (rabbit:vhost()) -> [amqqueue()]). --spec(info_keys/0 :: () -> [rabbit:info_key()]). --spec(info/1 :: (amqqueue()) -> [rabbit:info()]). --spec(info/2 :: (amqqueue(), [rabbit:info_key()]) -> [rabbit:info()]). --spec(info_all/1 :: (rabbit:vhost()) -> [[rabbit:info()]]). --spec(info_all/2 :: (rabbit:vhost(), [rabbit:info_key()]) - -> [[rabbit:info()]]). --spec(consumers/1 :: (amqqueue()) -> [{pid(), rabbit:ctag(), boolean()}]). --spec(consumers_all/1 :: (rabbit:vhost()) - -> [{name(), pid(), rabbit:ctag(), boolean()}]). +-spec(list/1 :: (rabbit_types:vhost()) -> [amqqueue()]). +-spec(info_keys/0 :: () -> [rabbit_types:info_key()]). +-spec(info/1 :: (amqqueue()) -> [rabbit_types:info()]). +-spec(info/2 :: (amqqueue(), [rabbit_types:info_key()]) -> [rabbit_types:info()]). +-spec(info_all/1 :: (rabbit_types:vhost()) -> [[rabbit_types:info()]]). +-spec(info_all/2 :: (rabbit_types:vhost(), [rabbit_types:info_key()]) + -> [[rabbit_types:info()]]). +-spec(consumers/1 :: (amqqueue()) -> [{pid(), rabbit_types:ctag(), boolean()}]). +-spec(consumers_all/1 :: (rabbit_types:vhost()) + -> [{name(), pid(), rabbit_types:ctag(), boolean()}]). -spec(stat/1 :: (amqqueue()) -> {'ok', non_neg_integer(), non_neg_integer()}). -spec(delete/3 :: @@ -108,21 +108,21 @@ {'error', 'in_use'} | {'error', 'not_empty'}). -spec(purge/1 :: (amqqueue()) -> qlen()). --spec(deliver/2 :: (pid(), rabbit:delivery()) -> boolean()). +-spec(deliver/2 :: (pid(), rabbit_types:delivery()) -> boolean()). -spec(requeue/3 :: (pid(), [msg_id()], pid()) -> 'ok'). --spec(ack/4 :: (pid(), rabbit:maybe(rabbit:txn()), [msg_id()], pid()) +-spec(ack/4 :: (pid(), rabbit_types:maybe(rabbit_types:txn()), [msg_id()], pid()) -> 'ok'). --spec(commit_all/3 :: ([pid()], rabbit:txn(), pid()) -> ok_or_errors()). --spec(rollback_all/3 :: ([pid()], rabbit:txn(), pid()) -> 'ok'). +-spec(commit_all/3 :: ([pid()], rabbit_types:txn(), pid()) -> ok_or_errors()). +-spec(rollback_all/3 :: ([pid()], rabbit_types:txn(), pid()) -> 'ok'). -spec(notify_down_all/2 :: ([pid()], pid()) -> ok_or_errors()). -spec(limit_all/3 :: ([pid()], pid(), pid() | 'undefined') -> ok_or_errors()). -spec(basic_get/3 :: (amqqueue(), pid(), boolean()) -> {'ok', non_neg_integer(), qmsg()} | 'empty'). -spec(basic_consume/7 :: (amqqueue(), boolean(), pid(), pid() | 'undefined', - rabbit:ctag(), boolean(), any()) + rabbit_types:ctag(), boolean(), any()) -> 'ok' | {'error', 'exclusive_consume_unavailable'}). --spec(basic_cancel/4 :: (amqqueue(), pid(), rabbit:ctag(), any()) -> 'ok'). +-spec(basic_cancel/4 :: (amqqueue(), pid(), rabbit_types:ctag(), any()) -> 'ok'). -spec(notify_sent/2 :: (pid(), pid()) -> 'ok'). -spec(unblock/2 :: (pid(), pid()) -> 'ok'). -spec(flush_all/2 :: ([pid()], pid()) -> 'ok'). diff --git a/src/rabbit_basic.erl b/src/rabbit_basic.erl index fb6f85dd..b4e685b2 100644 --- a/src/rabbit_basic.erl +++ b/src/rabbit_basic.erl @@ -46,24 +46,24 @@ -type(publish_result() :: ({ok, rabbit_router:routing_result(), [pid()]} | rabbit_misc:not_found())). --spec(publish/1 :: (rabbit:delivery()) -> publish_result()). --spec(delivery/4 :: (boolean(), boolean(), rabbit:maybe(rabbit:txn()), - rabbit:message()) -> rabbit:delivery()). +-spec(publish/1 :: (rabbit_types:delivery()) -> publish_result()). +-spec(delivery/4 :: (boolean(), boolean(), rabbit_types:maybe(rabbit_types:txn()), + rabbit_types:message()) -> rabbit_types:delivery()). -spec(message/4 :: (rabbit_exchange:name(), rabbit_router:routing_key(), properties_input(), binary()) - -> (rabbit:message() | {'error', any()})). + -> (rabbit_types:message() | {'error', any()})). -spec(properties/1 :: (properties_input()) -> rabbit_framing:amqp_property_record()). -spec(publish/4 :: (rabbit_exchange:name(), rabbit_router:routing_key(), properties_input(), binary()) -> publish_result()). -spec(publish/7 :: (rabbit_exchange:name(), rabbit_router:routing_key(), boolean(), boolean(), - rabbit:maybe(rabbit:txn()), properties_input(), binary()) -> + rabbit_types:maybe(rabbit_types:txn()), properties_input(), binary()) -> publish_result()). -spec(build_content/2 :: - (rabbit_framing:amqp_property_record(), binary()) -> rabbit:content()). --spec(from_content/1 :: (rabbit:content()) + (rabbit_framing:amqp_property_record(), binary()) -> rabbit_types:content()). +-spec(from_content/1 :: (rabbit_types:content()) -> {rabbit_framing:amqp_property_record(), binary()}). -spec(is_message_persistent/1 :: - (rabbit:decoded_content()) -> (boolean() | {'invalid', non_neg_integer()})). + (rabbit_types:decoded_content()) -> (boolean() | {'invalid', non_neg_integer()})). -endif. diff --git a/src/rabbit_binary_generator.erl b/src/rabbit_binary_generator.erl index a2af46c9..7b43a6a7 100644 --- a/src/rabbit_binary_generator.erl +++ b/src/rabbit_binary_generator.erl @@ -60,15 +60,15 @@ (rabbit_channel:channel_number(), rabbit_framing:amqp_method_record()) -> frame()). -spec(build_simple_content_frames/3 :: - (rabbit_channel:channel_number(), rabbit:content(), non_neg_integer()) + (rabbit_channel:channel_number(), rabbit_types:content(), non_neg_integer()) -> [frame()]). -spec(build_heartbeat_frame/0 :: () -> frame()). -spec(generate_table/1 :: (rabbit_framing:amqp_table()) -> binary()). -spec(encode_properties/2 :: ([rabbit_framing:amqp_property_type()], [any()]) -> binary()). -spec(check_empty_content_body_frame_size/0 :: () -> 'ok'). --spec(ensure_content_encoded/1 :: (rabbit:content()) -> rabbit:encoded_content()). --spec(clear_encoded_content/1 :: (rabbit:content()) -> rabbit:unencoded_content()). +-spec(ensure_content_encoded/1 :: (rabbit_types:content()) -> rabbit_types:encoded_content()). +-spec(clear_encoded_content/1 :: (rabbit_types:content()) -> rabbit_types:unencoded_content()). -endif. diff --git a/src/rabbit_binary_parser.erl b/src/rabbit_binary_parser.erl index a8879bea..69e34440 100644 --- a/src/rabbit_binary_parser.erl +++ b/src/rabbit_binary_parser.erl @@ -46,9 +46,9 @@ -spec(parse_properties/2 :: ([rabbit_framing:amqp_property_type()], binary()) -> [any()]). -spec(ensure_content_decoded/1 :: - (rabbit:content()) -> rabbit:decoded_content()). + (rabbit_types:content()) -> rabbit_types:decoded_content()). -spec(clear_decoded_content/1 :: - (rabbit:content()) -> rabbit:undecoded_content()). + (rabbit_types:content()) -> rabbit_types:undecoded_content()). -endif. diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl index a0f09f4c..b5d4e2af 100644 --- a/src/rabbit_channel.erl +++ b/src/rabbit_channel.erl @@ -78,22 +78,22 @@ -spec(start_link/6 :: (channel_number(), pid(), pid(), rabbit_access_control:username(), - rabbit:vhost(), pid()) -> pid()). + rabbit_types:vhost(), pid()) -> pid()). -spec(do/2 :: (pid(), rabbit_framing:amqp_method_record()) -> 'ok'). -spec(do/3 :: (pid(), rabbit_framing:amqp_method_record(), - rabbit:maybe(rabbit:content())) -> 'ok'). + rabbit_types:maybe(rabbit_types:content())) -> 'ok'). -spec(shutdown/1 :: (pid()) -> 'ok'). -spec(send_command/2 :: (pid(), rabbit_framing:amqp_method()) -> 'ok'). --spec(deliver/4 ::(pid(), rabbit:ctag(), boolean(), rabbit_amqqueue:qmsg()) -> 'ok'). +-spec(deliver/4 ::(pid(), rabbit_types:ctag(), boolean(), rabbit_amqqueue:qmsg()) -> 'ok'). -spec(conserve_memory/2 :: (pid(), boolean()) -> 'ok'). -spec(flushed/2 :: (pid(), pid()) -> 'ok'). -spec(flow_timeout/2 :: (pid(), ref()) -> 'ok'). -spec(list/0 :: () -> [pid()]). --spec(info_keys/0 :: () -> [rabbit:info_key()]). --spec(info/1 :: (pid()) -> [rabbit:info()]). --spec(info/2 :: (pid(), [rabbit:info_key()]) -> [rabbit:info()]). --spec(info_all/0 :: () -> [[rabbit:info()]]). --spec(info_all/1 :: ([rabbit:info_key()]) -> [[rabbit:info()]]). +-spec(info_keys/0 :: () -> [rabbit_types:info_key()]). +-spec(info/1 :: (pid()) -> [rabbit_types:info()]). +-spec(info/2 :: (pid(), [rabbit_types:info_key()]) -> [rabbit_types:info()]). +-spec(info_all/0 :: () -> [[rabbit_types:info()]]). +-spec(info_all/1 :: ([rabbit_types:info_key()]) -> [[rabbit_types:info()]]). -endif. diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl index de29ccb3..ae45f64a 100644 --- a/src/rabbit_exchange.erl +++ b/src/rabbit_exchange.erl @@ -90,14 +90,14 @@ -spec(lookup/1 :: (name()) -> {'ok', exchange()} | rabbit_misc:not_found()). -spec(lookup_or_die/1 :: (name()) -> exchange()). --spec(list/1 :: (rabbit:vhost()) -> [exchange()]). --spec(info_keys/0 :: () -> [rabbit:info_key()]). --spec(info/1 :: (exchange()) -> [rabbit:info()]). --spec(info/2 :: (exchange(), [rabbit:info_key()]) -> [rabbit:info()]). --spec(info_all/1 :: (rabbit:vhost()) -> [[rabbit:info()]]). --spec(info_all/2 :: (rabbit:vhost(), [rabbit:info_key()]) - -> [[rabbit:info()]]). --spec(publish/2 :: (exchange(), rabbit:delivery()) +-spec(list/1 :: (rabbit_types:vhost()) -> [exchange()]). +-spec(info_keys/0 :: () -> [rabbit_types:info_key()]). +-spec(info/1 :: (exchange()) -> [rabbit_types:info()]). +-spec(info/2 :: (exchange(), [rabbit_types:info_key()]) -> [rabbit_types:info()]). +-spec(info_all/1 :: (rabbit_types:vhost()) -> [[rabbit_types:info()]]). +-spec(info_all/2 :: (rabbit_types:vhost(), [rabbit_types:info_key()]) + -> [[rabbit_types:info()]]). +-spec(publish/2 :: (exchange(), rabbit_types:delivery()) -> {rabbit_router:routing_result(), [pid()]}). -spec(add_binding/5 :: (name(), rabbit_amqqueue:name(), rabbit_router:routing_key(), @@ -106,7 +106,7 @@ (name(), rabbit_amqqueue:name(), rabbit_router:routing_key(), rabbit_framing:amqp_table(), inner_fun()) -> bind_res() | {'error', 'binding_not_found'}). --spec(list_bindings/1 :: (rabbit:vhost()) -> +-spec(list_bindings/1 :: (rabbit_types:vhost()) -> [{name(), rabbit_amqqueue:name(), rabbit_router:routing_key(), rabbit_framing:amqp_table()}]). -spec(delete_queue_bindings/1 :: diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl index 88a5e505..3d94d952 100644 --- a/src/rabbit_misc.erl +++ b/src/rabbit_misc.erl @@ -82,7 +82,7 @@ -type(not_found() :: {'error', 'not_found'}). -type(resource_name() :: binary()). -type(r(Kind) :: - #resource{virtual_host :: rabbit:vhost(), + #resource{virtual_host :: rabbit_types:vhost(), kind :: Kind, name :: resource_name()}). -type(thunk(T) :: fun(() -> T)). @@ -106,14 +106,14 @@ -spec(get_config/2 :: (atom(), A) -> A). -spec(set_config/2 :: (atom(), any()) -> 'ok'). -spec(dirty_read/1 :: ({atom(), any()}) -> {'ok', any()} | not_found()). --spec(r/3 :: (rabbit:vhost() | r(atom()), K, resource_name()) +-spec(r/3 :: (rabbit_types:vhost() | r(atom()), K, resource_name()) -> r(K) when is_subtype(K, atom())). --spec(r/2 :: (rabbit:vhost(), K) - -> #resource{virtual_host :: rabbit:vhost(), +-spec(r/2 :: (rabbit_types:vhost(), K) + -> #resource{virtual_host :: rabbit_types:vhost(), kind :: K, name :: '_'} when is_subtype(K, atom())). --spec(r_arg/4 :: (rabbit:vhost() | r(atom()), K, +-spec(r_arg/4 :: (rabbit_types:vhost() | r(atom()), K, rabbit_framing:amqp_table(), binary()) -> undefined | r(K) when is_subtype(K, atom())). -spec(rs/1 :: (r(atom())) -> string()). @@ -126,15 +126,15 @@ -spec(with_exit_handler/2 :: (thunk(A), thunk(A)) -> A). -spec(filter_exit_map/2 :: (fun ((A) -> B), [A]) -> [B]). -spec(with_user/2 :: (rabbit_access_control:username(), thunk(A)) -> A). --spec(with_vhost/2 :: (rabbit:vhost(), thunk(A)) -> A). +-spec(with_vhost/2 :: (rabbit_types:vhost(), thunk(A)) -> A). -spec(with_user_and_vhost/3 :: (rabbit_access_control:username(), - rabbit:vhost(), thunk(A)) -> A). + rabbit_types:vhost(), thunk(A)) -> A). -spec(execute_mnesia_transaction/1 :: (thunk(A)) -> A). -spec(ensure_ok/2 :: (ok_or_error(), atom()) -> 'ok'). -spec(makenode/1 :: ({string(), string()} | string()) -> node()). -spec(nodeparts/1 :: (node() | string()) -> {string(), string()}). -spec(cookie_hash/0 :: () -> string()). --spec(tcp_name/3 :: (atom(), inet:ip_address(), rabbit:ip_port()) -> atom()). +-spec(tcp_name/3 :: (atom(), inet:ip_address(), rabbit_networking:ip_port()) -> atom()). -spec(intersperse/2 :: (A, [A]) -> [A]). -spec(upmap/2 :: (fun ((A) -> B), [A]) -> [B]). -spec(map_in_order/2 :: (fun ((A) -> B), [A]) -> [B]). diff --git a/src/rabbit_net.erl b/src/rabbit_net.erl index 1892e498..5379d3a1 100644 --- a/src/rabbit_net.erl +++ b/src/rabbit_net.erl @@ -47,7 +47,7 @@ 'send_cnt' | 'send_max' | 'send_avg' | 'send_oct' | 'send_pend'). -type(error() :: {'error', any()}). -type(ssl_socket() :: #ssl_socket{}). --type(socket() :: rabbit:ip_port() | ssl_socket()). +-type(socket() :: rabbit_networking:ip_port() | ssl_socket()). -spec(async_recv/3 :: (socket(), integer(), timeout()) -> {'ok', any()}). -spec(close/1 :: (socket()) -> 'ok' | error()). @@ -55,9 +55,9 @@ -spec(port_command/2 :: (socket(), iolist()) -> 'true'). -spec(send/2 :: (socket(), binary() | iolist()) -> 'ok' | error()). -spec(peername/1 :: (socket()) -> - {'ok', {inet:ip_address(), rabbit:ip_port()}} | error()). + {'ok', {inet:ip_address(), rabbit_networking:ip_port()}} | error()). -spec(sockname/1 :: (socket()) -> - {'ok', {inet:ip_address(), rabbit:ip_port()}} | error()). + {'ok', {inet:ip_address(), rabbit_networking:ip_port()}} | error()). -spec(getstat/2 :: (socket(), [stat_option()]) -> {'ok', [{stat_option(), integer()}]} | error()). diff --git a/src/rabbit_networking.erl b/src/rabbit_networking.erl index 6213811c..d182810a 100644 --- a/src/rabbit_networking.erl +++ b/src/rabbit_networking.erl @@ -63,30 +63,32 @@ -ifdef(use_specs). +-export_type([ip_port/0, hostname/0]). + -type(connection() :: pid()). -type(listener() :: #listener{node :: node(), protocol :: atom(), - host :: rabbit:hostname(), - port :: rabbit:ip_port()}). + host :: hostname(), + port :: ip_port()}). -spec(start/0 :: () -> 'ok'). --spec(start_tcp_listener/2 :: (rabbit:hostname(), rabbit:ip_port()) -> 'ok'). --spec(start_ssl_listener/3 :: (rabbit:hostname(), rabbit:ip_port(), [rabbit:info()]) +-spec(start_tcp_listener/2 :: (hostname(), ip_port()) -> 'ok'). +-spec(start_ssl_listener/3 :: (hostname(), ip_port(), [rabbit_types:info()]) -> 'ok'). --spec(stop_tcp_listener/2 :: (rabbit:hostname(), rabbit:ip_port()) -> 'ok'). +-spec(stop_tcp_listener/2 :: (hostname(), ip_port()) -> 'ok'). -spec(active_listeners/0 :: () -> [listener()]). -spec(node_listeners/1 :: (node()) -> [listener()]). -spec(connections/0 :: () -> [connection()]). --spec(connection_info_keys/0 :: () -> [rabbit:info_key()]). --spec(connection_info/1 :: (connection()) -> [rabbit:info()]). --spec(connection_info/2 :: (connection(), [rabbit:info_key()]) -> [rabbit:info()]). --spec(connection_info_all/0 :: () -> [[rabbit:info()]]). --spec(connection_info_all/1 :: ([rabbit:info_key()]) -> [[rabbit:info()]]). +-spec(connection_info_keys/0 :: () -> [rabbit_types:info_key()]). +-spec(connection_info/1 :: (connection()) -> [rabbit_types:info()]). +-spec(connection_info/2 :: (connection(), [rabbit_types:info_key()]) -> [rabbit_types:info()]). +-spec(connection_info_all/0 :: () -> [[rabbit_types:info()]]). +-spec(connection_info_all/1 :: ([rabbit_types:info_key()]) -> [[rabbit_types:info()]]). -spec(close_connection/2 :: (pid(), string()) -> 'ok'). -spec(on_node_down/1 :: (node()) -> 'ok'). --spec(check_tcp_listener_address/3 :: (atom(), rabbit:hostname(), rabbit:ip_port()) -> +-spec(check_tcp_listener_address/3 :: (atom(), hostname(), ip_port()) -> {inet:ip_address(), atom()}). -endif. diff --git a/src/rabbit_persister.erl b/src/rabbit_persister.erl index 727fcd1b..ea290b37 100644 --- a/src/rabbit_persister.erl +++ b/src/rabbit_persister.erl @@ -69,19 +69,19 @@ -type(pmsg() :: {rabbit_amqqueue:name(), pkey()}). -type(work_item() :: - {publish, rabbit:message(), pmsg()} | + {publish, rabbit_types:message(), pmsg()} | {deliver, pmsg()} | {ack, pmsg()}). -spec(start_link/1 :: ([rabbit_amqqueue:name()]) -> {'ok', pid()} | 'ignore' | {'error', any()}). -spec(transaction/1 :: ([work_item()]) -> 'ok'). --spec(extend_transaction/2 :: ({rabbit:txn(), rabbit_amqqueue:name()}, [work_item()]) -> 'ok'). +-spec(extend_transaction/2 :: ({rabbit_types:txn(), rabbit_amqqueue:name()}, [work_item()]) -> 'ok'). -spec(dirty_work/1 :: ([work_item()]) -> 'ok'). --spec(commit_transaction/1 :: ({rabbit:txn(), rabbit_amqqueue:name()}) -> 'ok'). --spec(rollback_transaction/1 :: ({rabbit:txn(), rabbit_amqqueue:name()}) -> 'ok'). +-spec(commit_transaction/1 :: ({rabbit_types:txn(), rabbit_amqqueue:name()}) -> 'ok'). +-spec(rollback_transaction/1 :: ({rabbit_types:txn(), rabbit_amqqueue:name()}) -> 'ok'). -spec(force_snapshot/0 :: () -> 'ok'). --spec(queue_content/1 :: (rabbit_amqqueue:name()) -> [{rabbit:message(), boolean()}]). +-spec(queue_content/1 :: (rabbit_amqqueue:name()) -> [{rabbit_types:message(), boolean()}]). -endif. diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl index 81798c5a..e355cd26 100644 --- a/src/rabbit_reader.erl +++ b/src/rabbit_reader.erl @@ -138,9 +138,9 @@ -ifdef(use_specs). --spec(info_keys/0 :: () -> [rabbit:info_key()]). --spec(info/1 :: (pid()) -> [rabbit:info()]). --spec(info/2 :: (pid(), [rabbit:info_key()]) -> [rabbit:info()]). +-spec(info_keys/0 :: () -> [rabbit_types:info_key()]). +-spec(info/1 :: (pid()) -> [rabbit_types:info()]). +-spec(info/2 :: (pid(), [rabbit_types:info_key()]) -> [rabbit_types:info()]). -spec(shutdown/2 :: (pid(), string()) -> 'ok'). -spec(server_properties/0 :: () -> rabbit_framing:amqp_table()). diff --git a/src/rabbit_router.erl b/src/rabbit_router.erl index eb5beb2a..bc9b3891 100644 --- a/src/rabbit_router.erl +++ b/src/rabbit_router.erl @@ -46,7 +46,7 @@ -type(routing_key() :: binary()). -type(routing_result() :: 'routed' | 'unroutable' | 'not_delivered'). --spec(deliver/2 :: ([pid()], rabbit:delivery()) -> {routing_result(), [pid()]}). +-spec(deliver/2 :: ([pid()], rabbit_types:delivery()) -> {routing_result(), [pid()]}). -endif. diff --git a/src/rabbit_types.erl b/src/rabbit_types.erl new file mode 100644 index 00000000..b8c3884e --- /dev/null +++ b/src/rabbit_types.erl @@ -0,0 +1,89 @@ +%% 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-2010 LShift +%% Ltd. Portions created by Cohesive Financial Technologies LLC are +%% Copyright (C) 2007-2010 Cohesive Financial Technologies +%% LLC. Portions created by Rabbit Technologies Ltd are Copyright +%% (C) 2007-2010 Rabbit Technologies Ltd. +%% +%% All Rights Reserved. +%% +%% Contributor(s): ______________________________________. +%% + +-module(rabbit_types). + +-include("rabbit.hrl"). + +-ifdef(use_specs). + +-export_type([txn/0, maybe/1, info/0, info_key/0, message/0, basic_message/0, + delivery/0, content/0, decoded_content/0, undecoded_content/0, + unencoded_content/0, encoded_content/0, vhost/0, ctag/0]). + +-type(maybe(T) :: T | 'none'). +-type(vhost() :: binary()). +-type(ctag() :: binary()). + +%% TODO: make this more precise by tying specific class_ids to +%% specific properties +-type(undecoded_content() :: + #content{class_id :: rabbit_framing:amqp_class_id(), + properties :: 'none', + properties_bin :: binary(), + payload_fragments_rev :: [binary()]} | + #content{class_id :: rabbit_framing:amqp_class_id(), + properties :: rabbit_framing:amqp_property_record(), + properties_bin :: 'none', + payload_fragments_rev :: [binary()]}). +-type(unencoded_content() :: undecoded_content()). +-type(decoded_content() :: + #content{class_id :: rabbit_framing:amqp_class_id(), + properties :: rabbit_framing:amqp_property_record(), + properties_bin :: maybe(binary()), + payload_fragments_rev :: [binary()]}). +-type(encoded_content() :: + #content{class_id :: rabbit_framing:amqp_class_id(), + properties :: maybe(rabbit_framing:amqp_property_record()), + properties_bin :: binary(), + payload_fragments_rev :: [binary()]}). +-type(content() :: undecoded_content() | decoded_content()). +-type(basic_message() :: + #basic_message{exchange_name :: rabbit_exchange:name(), + routing_key :: rabbit_router:routing_key(), + content :: content(), + guid :: rabbit_guid:guid(), + is_persistent :: boolean()}). +-type(message() :: basic_message()). +-type(delivery() :: + #delivery{mandatory :: boolean(), + immediate :: boolean(), + txn :: maybe(txn()), + sender :: pid(), + message :: message()}). + +%% this is really an abstract type, but dialyzer does not support them +-type(txn() :: rabbit_guid:guid()). + +-type(info_key() :: atom()). +-type(info() :: {info_key(), any()}). + +-endif. % use_specs diff --git a/src/rabbit_writer.erl b/src/rabbit_writer.erl index 7c826d98..2b3082bc 100644 --- a/src/rabbit_writer.erl +++ b/src/rabbit_writer.erl @@ -56,20 +56,20 @@ -> pid()). -spec(send_command/2 :: (pid(), rabbit_framing:amqp_method_record()) -> 'ok'). -spec(send_command/3 :: - (pid(), rabbit_framing:amqp_method_record(), rabbit:content()) -> 'ok'). + (pid(), rabbit_framing:amqp_method_record(), rabbit_types:content()) -> 'ok'). -spec(send_command_and_signal_back/3 :: (pid(), rabbit_framing:amqp_method(), pid()) -> 'ok'). -spec(send_command_and_signal_back/4 :: - (pid(), rabbit_framing:amqp_method(), rabbit:content(), pid()) -> 'ok'). + (pid(), rabbit_framing:amqp_method(), rabbit_types:content(), pid()) -> 'ok'). -spec(send_command_and_notify/5 :: - (pid(), pid(), pid(), rabbit_framing:amqp_method_record(), rabbit:content()) + (pid(), pid(), pid(), rabbit_framing:amqp_method_record(), rabbit_types:content()) -> 'ok'). -spec(internal_send_command/3 :: (rabbit_net:socket(), rabbit_channel:channel_number(), rabbit_framing:amqp_method_record()) -> 'ok'). -spec(internal_send_command/5 :: (rabbit_net:socket(), rabbit_channel:channel_number(), rabbit_framing:amqp_method_record(), - rabbit:content(), non_neg_integer()) -> 'ok'). + rabbit_types:content(), non_neg_integer()) -> 'ok'). -endif. |