%% %% %CopyrightBegin% %% %% Copyright Ericsson AB 2010-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in %% compliance with the License. You should have received a copy of the %% Erlang Public License along with this software. If not, it can be %% retrieved online at http://www.erlang.org/. %% %% 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. %% %% %CopyrightEnd% %% %% %% Types for function specifications, primarily in diameter.erl. This %% has nothing specifically to do with diameter_types.erl. %% -type evaluable() :: {module(), atom(), list()} | fun() | nonempty_improper_list(evaluable(), list()). %% [evaluable() | Args] -type app_alias() :: any(). -type service_name() :: any(). %% Diameter basic types -type 'OctetString'() :: iolist(). -type 'Integer32'() :: -2147483647..2147483647. -type 'Integer64'() :: -9223372036854775807..9223372036854775807. -type 'Unsigned32'() :: 0..4294967295. -type 'Unsigned64'() :: 0..18446744073709551615. -type 'Float32'() :: '-infinity' | float() | infinity. -type 'Float64'() :: '-infinity' | float() | infinity. -type 'Grouped'() :: list() | tuple(). %% Diameter derived types -type 'Address'() :: inet:ip_address() | string(). -type 'Time'() :: {{integer(), 1..12, 1..31}, {0..23, 0..59, 0..59}}. -type 'UTF8String'() :: iolist(). -type 'DiameterIdentity'() :: 'OctetString'(). -type 'DiameterURI'() :: 'OctetString'(). -type 'Enumerated'() :: 'Integer32'(). -type 'IPFilterRule'() :: 'OctetString'(). -type 'QoSFilterRule'() :: 'OctetString'(). %% Capabilities options/avps on start_service/2 and/or add_transport/2 -type capability() :: {'Origin-Host', 'DiameterIdentity'()} | {'Origin-Realm', 'DiameterIdentity'()} | {'Host-IP-Address', ['Address'()]} | {'Vendor-Id', 'Unsigned32'()} | {'Product-Name', 'UTF8String'()} | {'Supported-Vendor-Id', ['Unsigned32'()]} | {'Auth-Application-Id', ['Unsigned32'()]} | {'Vendor-Specific-Application-Id', ['Grouped'()]} | {'Firmware-Revision', 'Unsigned32'()}. %% Filters for call/4 -type peer_filter() :: none | host | realm | {host, any|'DiameterIdentity'()} | {realm, any|'DiameterIdentity'()} | {eval, evaluable()} | {neg, peer_filter()} | {all, [peer_filter()]} | {any, [peer_filter()]}. %% Options passed to start_service/2 -type service_opt() :: capability() | {application, [application_opt()]}. -type application_opt() :: {alias, app_alias()} | {dictionary, module()} | {module, app_module()} | {state, any()} | {call_mutates_state, boolean()} | {answer_errors, callback|report|discard}. -type app_module() :: module() | nonempty_improper_list(module(), list()). %% list with module() head %% Identifier returned by add_transport/2 -type transport_ref() :: reference(). %% Options passed to add_transport/2 -type transport_opt() :: {transport_module, atom()} | {transport_config, any()} | {applications, [app_alias()]} | {capabilities, [capability()]} | {watchdog_timer, 'Unsigned32'() | {module(), atom(), list()}} | {reconnect_timer, 'Unsigned32'()} | {private, any()}. %% Predicate passed to remove_transport/2 -type transport_pred() :: fun((reference(), connect|listen, list()) -> boolean()) | fun((reference(), list()) -> boolean()) | fun((list()) -> boolean()) | reference() | list() | {connect|listen, transport_pred()} | {atom(), atom(), list()}. %% Options passed to call/4 -type call_opt() :: {extra, list()} | {filter, peer_filter()} | {timeout, 'Unsigned32'()} | detach.