./ct_report/coverage/mongoose_transport.COVER.html

1 %%%----------------------------------------------------------------------
2 %%% File : mongoose_transport.erl
3 %%% Author : Piotr Nosek <piotr.nosek@erlang-solutions.com>
4 %%% Purpose : TransportMod behaviour
5 %%% Created : 18 Jan 2017
6 %%%----------------------------------------------------------------------
7
8 -module(mongoose_transport).
9 -author('piotr.nosek@erlang-solutions.com').
10
11 -include_lib("public_key/include/public_key.hrl").
12 %%----------------------------------------------------------------------
13 %% Types
14 %%----------------------------------------------------------------------
15
16 -type t() :: any().
17 -type send_xml_input() :: {xmlstreamelement, exml:element()}
18 | jlib:xmlstreamstart()
19 | jlib:xmlstreamend().
20 -type peer() :: {inet:ip_address(), inet:port_number()}.
21 -type peername_return() :: {ok, peer()} | {error, inet:posix()}.
22 -type peercert_return() :: no_peer_cert | {ok, #'Certificate'{}}.
23
24 -export_type([t/0, send_xml_input/0, peer/0, peername_return/0, peercert_return/0]).
25
26 %%----------------------------------------------------------------------
27 %% Callback declarations
28 %%----------------------------------------------------------------------
29
30 -callback starttls(Transport :: t(), TLSOpts :: list()) -> t().
31
32 -callback starttls(Transport :: t(), TLSOpts :: list(), Data :: binary()) -> t().
33
34 -callback monitor(Transport :: t()) -> MonitorRef :: reference().
35
36 -callback send_xml(Transport :: t(), Data :: send_xml_input()) -> ok.
37
38 -callback peername(Transport :: t()) -> peername_return().
39
40 %%----------------------------------------------------------------------
41 %% API
42 %%----------------------------------------------------------------------
43
44 -export([starttls/3, starttls/4, monitor/2, send_xml/3, peername/2,
45 get_peer_certificate/2]).
46
47 -ignore_xref([behaviour_info/1]).
48
49 -spec starttls(TransportMod :: module(), Transport :: t(), TLSOpts :: list()) -> t().
50 964 starttls(TransportMod, Transport, TLSOpts) -> TransportMod:starttls(Transport, TLSOpts).
51
52 -spec starttls(TransportMod :: module(), Transport :: t(), TLSOpts :: list(), binary()) -> t().
53 91 starttls(TransportMod, Transport, TLSOpts, Data) -> TransportMod:starttls(Transport, TLSOpts, Data).
54
55 -spec monitor(TransportMod :: module(), Transport :: t()) -> reference().
56 5209 monitor(TransportMod, Transport) -> TransportMod:monitor(Transport).
57
58 -spec send_xml(TransportMod :: module(), Transport :: t(), Data :: send_xml_input()) -> ok.
59 1269 send_xml(TransportMod, Transport, Data) -> TransportMod:send_xml(Transport, Data).
60
61 -spec peername(TransportMod :: module(), Transport :: t()) -> peername_return().
62 5675 peername(TransportMod, Transport) -> TransportMod:peername(Transport).
63
64 -spec get_peer_certificate(TransportMod :: module(), Transport :: t()) -> peercert_return().
65 4964 get_peer_certificate(TransportMod, Transport) -> TransportMod:get_peer_certificate(Transport).
Line Hits Source