1%%
2%% %CopyrightBegin%
3%%
4%% Copyright Ericsson AB 2010-2020. All Rights Reserved.
5%%
6%% Licensed under the Apache License, Version 2.0 (the "License");
7%% you may not use this file except in compliance with the License.
8%% You may obtain a copy of the License at
9%%
10%%     http://www.apache.org/licenses/LICENSE-2.0
11%%
12%% Unless required by applicable law or agreed to in writing, software
13%% distributed under the License is distributed on an "AS IS" BASIS,
14%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15%% See the License for the specific language governing permissions and
16%% limitations under the License.
17%%
18%% %CopyrightEnd%
19%%
20
21-module(client_cb).
22
23-include_lib("diameter/include/diameter.hrl").
24
25%% diameter callbacks
26-export([peer_up/3,
27         peer_down/3,
28         pick_peer/4,
29         prepare_request/3,
30         prepare_retransmit/3,
31         handle_answer/4,
32         handle_error/4,
33         handle_request/3]).
34
35%% peer_up/3
36
37peer_up(_SvcName, _Peer, State) ->
38    State.
39
40%% peer_down/3
41
42peer_down(_SvcName, _Peer, State) ->
43    State.
44
45%% pick_peer/4
46
47pick_peer([Peer | _], _, _SvcName, _State) ->
48    {ok, Peer}.
49
50%% prepare_request/3
51
52prepare_request(#diameter_packet{msg = [Name | Avps]}, _, {_, Caps}) ->
53    #diameter_caps{origin_host = {OH, _},
54                   origin_realm = {OR, _}}
55        = Caps,
56    {send, [Name | Avps#{'Origin-Host' => OH, 'Origin-Realm' => OR}]}.
57
58%% prepare_retransmit/3
59
60prepare_retransmit(Pkt, _SvcName, _Peer) ->
61    {send, Pkt}.
62
63%% handle_answer/4
64
65handle_answer(#diameter_packet{msg = Msg}, _Request, _SvcName, _Peer) ->
66    {ok, Msg}.
67
68%% handle_error/4
69
70handle_error(Reason, _Request, _SvcName, _Peer) ->
71    {error, Reason}.
72
73%% handle_request/3
74
75handle_request(_Packet, _SvcName, _Peer) ->
76    {answer_message, 3001}.  %% DIAMETER_COMMAND_UNSUPPORTED
77