forked from Mirrors/freeswitch
21fcb16428
* s2util.h, s2time.c: added s2_timed_logger() Ignore-this: 504e7e5c1201b0b2d5c345c31d5d4b71 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12741 d0543943-73ff-0310-b7d9-9358b9ac24b2
75 lines
1.9 KiB
C
75 lines
1.9 KiB
C
/*
|
|
* This file is part of the Sofia-SIP package
|
|
*
|
|
* Copyright (C) 2009 Nokia Corporation.
|
|
*
|
|
* Contact: Pekka Pessi <pekka.pessi@nokia.com>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public License
|
|
* as published by the Free Software Foundation; either version 2.1 of
|
|
* the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
* 02110-1301 USA
|
|
*
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
#include "s2util.h"
|
|
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
|
|
/* -- Delay scenarios --------------------------------------------------- */
|
|
|
|
static unsigned long time_offset;
|
|
|
|
extern void (*_su_time)(su_time_t *tv);
|
|
|
|
static void _su_time_fast_forwarder(su_time_t *tv)
|
|
{
|
|
tv->tv_sec += time_offset;
|
|
}
|
|
|
|
void s2_fast_forward(unsigned long seconds,
|
|
su_root_t *root)
|
|
{
|
|
if (_su_time == NULL)
|
|
_su_time = _su_time_fast_forwarder;
|
|
|
|
time_offset += seconds;
|
|
|
|
if (root)
|
|
su_root_step(root, 0);
|
|
}
|
|
|
|
void
|
|
s2_timed_logger(void *stream, char const *fmt, va_list ap)
|
|
{
|
|
char buffer[4096];
|
|
su_time_t now = su_now();
|
|
size_t prefix, wrote;
|
|
int n;
|
|
|
|
snprintf(buffer, sizeof buffer,
|
|
"%02u:%02u:%02u.%06lu[+%lu] ",
|
|
(unsigned)(now.tv_sec / 3600 % 24),
|
|
(unsigned)(now.tv_sec / 60 % 60),
|
|
(unsigned)(now.tv_sec % 60),
|
|
now.tv_usec,
|
|
time_offset);
|
|
prefix = strlen(buffer);
|
|
n = vsnprintf(buffer + prefix, (sizeof buffer) - prefix, fmt, ap);
|
|
if (n > 0)
|
|
wrote = fwrite(buffer, prefix + n, 1, stream);
|
|
}
|