From 98836f68bd01ef82df5b9816a3ff065f02e50156 Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Thu, 4 Oct 2012 19:12:05 +0200 Subject: Document eval_packet --- lib/diameter/doc/src/diameter_app.xml | 67 +++++++++++++++++++++++++---------- 1 file changed, 49 insertions(+), 18 deletions(-) diff --git a/lib/diameter/doc/src/diameter_app.xml b/lib/diameter/doc/src/diameter_app.xml index 4a4b212787..98c8b8c807 100644 --- a/lib/diameter/doc/src/diameter_app.xml +++ b/lib/diameter/doc/src/diameter_app.xml @@ -325,32 +325,44 @@ or peer_down/3 callback.

Packet = packet() SvcName = diameter:service_name() Peer = peer() -Action = {send, packet() | message()} | {discard, Reason} | discard +Action = Send | Discard | {eval_packet, Action, PostF} +Send = {send, packet() + | message()} +Discard = {discard, Reason} | discard +PostF = + diameter:evaluable()}

Invoked to return a request for encoding and transport. -Allows the sender to access the selected peer's capabilities -in order to set (for example) Destination-Host and/or -Destination-Realm in the outgoing request, although the -callback need not be limited to this usage. +Allows the sender to use the selected peer's capabilities +to modify the outgoing request. Many implementations may simply want to return {send, Packet}

-A returned packet() should set the request to be encoded in its +A returned packet() should set the +request to be encoded in its msg field and can set the transport_data field in order -to pass information to the transport module. +to pass information to the transport process. Extra arguments passed to diameter:call/4 can be used to -communicate transport data to the callback. -A returned packet() can also set the header field to a -#diameter_header{} record in order to specify values that should -be preserved in the outgoing request, although this should typically -not be necessary and allows the callback to set header values -inappropriately. +communicate transport (or any other) data to the callback.

+ +

+A returned packet() can set +the header field to a +#diameter_header{} in order to specify values that should +be preserved in the outgoing request, values otherwise being those in +the header record contained in Packet. A returned length, cmd_code or application_id is ignored.

+

+A returned PostF will be evaluated on any encoded +#diameter_packet{} prior to transmission, the bin field +of this record containing the encoded binary. +The return value is ignored.

+

Returning {discard, Reason} causes the request to be aborted and the .

-Mod:prepare_retransmit(Packet, SvcName, Peer) -> Result +Mod:prepare_retransmit(Packet, SvcName, Peer) -> Action Return a request for encoding and retransmission. Packet = packet() SvcName = diameter:service_name() -Peer = peer() -Result = {send, packet() | message()} | {discard, Reason} | discard +Peer = peer() +Action = Send | Discard | {eval_packet, Action, PostF} +Send = {send, packet() + | message()} +Discard = {discard, Reason} | discard +PostF = + diameter:evaluable()}

@@ -484,7 +501,11 @@ callback returned false.

Packet = packet() SvcName = term() Peer = peer() -Action = Reply | {relay, [Opt]} | discard | {eval, Action, PostF} +Action = Reply + | {relay, [Opt]} + | discard + | {eval, Action, PostF} + | {eval_packet, Action, PostF} Reply = {reply, message()} | {protocol_error, 3000..3999} Opt = diameter:call_opt() @@ -610,7 +631,17 @@ Discard the request.

Handle the request as if Action has been returned and then -evaluate PostF in the request process.

+evaluate PostF in the request process. +The return value is ignored.

+
+ +{eval_packet, Action, PostF} + +

+Like eval but evaluate PostF on any encoded +#diameter_packet{} prior to transmission, the bin field +of this record containing the encoded binary. +The return value is ignored.

-- cgit v1.2.3