[SR-Users] Computing a time difference when handling a stateless SIP request
Alex Balashov
abalashov at evaristesys.com
Fri Sep 25 21:22:13 CEST 2020
route {
$avp(proc_start) = $TV(Sn);
...
$avp(proc_start) = $TV(Sn);
$var(proc_diff) = (
(((
$(var(cur_time){s.select,0,.}{s.int}) -
$(avp(proc_start){s.select,0,.}{s.int})
) * 1000000)
+
(
$(var(cur_time){s.select,1,.}{s.int}) -
$(avp(proc_start){s.select,1,.}{s.int})
) / 1000) mod 1000
);
xlog("L_INFO", "Request processing time: $var(proc_diff) ms\n");
if(!t_relay())
sl_reply_error();
}
On 9/25/20 3:11 PM, Henning Westerholt wrote:
> Hello,
>
> you could probably combine some string transformation to get the desired
> result.
>
> If your requirements are related to accounting, the acc module might bei
> easier to use.
>
> Cheers,
>
> Henning
>
> --
> Henning Westerholt - https://skalatan.de/blog/
> Kamailio services - https://skalatan.de/services
> ------------------------------------------------------------------------
> *From:* sr-users <sr-users-bounces at lists.kamailio.org> on behalf of
> Chaigneau, Nicolas <nicolas.chaigneau at capgemini.com>
> *Sent:* Friday, September 25, 2020 6:34:30 PM
> *To:* Kamailio (SER) - Users Mailing List <sr-users at lists.kamailio.org>
> *Subject:* Re: [SR-Users] Computing a time difference when handling a
> stateless SIP request
>
>> >
>> > --snip
>> > I would like to compute a time difference (with microseconds
>> > precision) when handling a stateless SIP request.
>> > --snip
>>
>> Welcome!
>>
>> Take a look at:
>> https://www.kamailio.org/wiki/cookbooks/5.4.x/pseudovariables#timeval
>>
>> You can get down to the microsecond level.
>
>
> Thanks!
>
> Looking at src\modules\pv\pv_time.c, it seems TV functions just use
> "gettimeofday".
> I was looking for a time difference based on a monotonically increasing
> clock (to avoid possible NTP drifting imprecision).
>
> I've looked at the "benchmark" module which seems to do something like
> that, but I don't think I can use it for what I need...
>
>
>
> Anyhow, I have another question. Using the TV I've come up with the
> following.
> This works, except that I don't know how to convert an int to a string
> padded with zeroes (e.g. 51 => "051").
> Is there a transformation that allows to do that?
>
>
> $var(start_time) = $TV(Sn); # allows to cache $TV(s) and $TV(u)
>
> (...)
>
> $var(end_time) = $TV(Sn);
> $var(end_s) = $TV(sn);
> $var(end_us) = $TV(un);
> $var(diff_us) = $var(end_us) - $TV(u) + (1000000 * ($var(end_s)
> - $TV(s)));
>
> # convert this to ms (integer part) and us (fractional part)
> $var(diff_ms) = $var(diff_us) / 1000;
> $var(diff_us_f) = $var(diff_us) - (1000 * $var(diff_ms));
>
> $var(diff_ms_us) = $var(diff_ms) + "." + $var(diff_us_f); #
> need to format on 3 digits... can we do the equivalent of
> sprintf("%03u") somehow ?
>
>
>
>
> This message contains information that may be privileged or confidential
> and is the property of the Capgemini Group. It is intended only for the
> person to whom it is addressed. If you are not the intended recipient,
> you are not authorized to read, print, retain, copy, disseminate,
> distribute, or use this message or any part thereof. If you receive this
> message in error, please notify the sender immediately and delete all
> copies of this message.
>
>
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>
--
Alex Balashov | Principal | Evariste Systems LLC
Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free)
Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
More information about the sr-users
mailing list