From c59325f2a24e6ca3217c660fa328a00cf440e58d Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Sun, 30 Apr 2017 10:08:54 +0200 Subject: Restore diameter_codec:decode/2, update diameter_codec(3) The documentation has been out of date since the string_decode option was added in commit 1590920c. The optionless decode/2 was removed in the commit that removed the use of the process dictionary in decode. --- lib/diameter/doc/src/diameter_codec.xml | 19 ++++++++++--------- lib/diameter/src/base/diameter_codec.erl | 24 ++++++++++++++++++++---- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/lib/diameter/doc/src/diameter_codec.xml b/lib/diameter/doc/src/diameter_codec.xml index 91e96058dd..0117c1c88a 100644 --- a/lib/diameter/doc/src/diameter_codec.xml +++ b/lib/diameter/doc/src/diameter_codec.xml @@ -13,7 +13,8 @@
-20122016 +2012 +2017 Ericsson AB. All Rights Reserved. @@ -53,17 +54,17 @@ communicated to &man_app; callbacks. Similarly, outgoing Diameter messages are encoded into binary() before being passed to the appropriate &man_transport; module for transmission. -The functions in this module implement this encode/decode.

+The functions documented here implement the default encode/decode.

- +

-Calls to this module are made by diameter itself as a consequence of -configuration passed to &mod_start_service;. -The encode/decode functions may also be useful for other purposes (eg. -test) but the diameter user does not need to call them explicitly when +The diameter user does not need to call functions here explicitly when sending and receiving messages using &mod_call; and the callback -interface documented in &man_app;.

-
+interface documented in &man_app;: diameter itself provides encode/decode +as a consequence of configuration passed to &mod_start_service;, and +the results may differ from those returned by the functions documented +here, depending on configuration.

+

The &header; and &packet; records below diff --git a/lib/diameter/src/base/diameter_codec.erl b/lib/diameter/src/base/diameter_codec.erl index a4d816db4e..82fa796e69 100644 --- a/lib/diameter/src/base/diameter_codec.erl +++ b/lib/diameter/src/base/diameter_codec.erl @@ -20,10 +20,8 @@ -module(diameter_codec). --export([encode/2, - encode/3, - decode/3, - decode/4, +-export([encode/2, encode/3, + decode/2, decode/3, decode/4, collect_avps/1, decode_header/1, sequence_numbers/1, @@ -68,6 +66,10 @@ %%% # encode/2 %%% --------------------------------------------------------------------------- +%% The representative encode documented in diameter_codec(3). As of +%% the options that affect encode (eg. ordered_encode), it's no longer +%% *the* encode. + encode(Mod, Msg) -> encode(Mod, #{ordered_encode => true}, Msg). @@ -276,6 +278,20 @@ rec2msg(_, [Name|_]) rec2msg(Mod, Rec) -> Mod:rec2msg(element(1, Rec)). +%%% --------------------------------------------------------------------------- +%%% # decode/2 +%%% --------------------------------------------------------------------------- + +%% The representative default decode documented in diameter_codec(3). +%% As of the options that affect decode (eg. string_decode), it's no +%% longer *the* decode. + +decode(Mod, Pkt) -> + Opts = #{string_decode => true, + strict_mbit => true, + rfc => 6733}, + decode(Mod, Opts, Pkt). + %%% --------------------------------------------------------------------------- %%% # decode/3 %%% --------------------------------------------------------------------------- -- cgit v1.2.3