trick/trick_source/sim_services/Message/message_publish_standalone.cpp
Hong Chen eed8707638
Added sub second information to message time stamps. (#1773)
* Added sub second information to message time stamps.

* Removed "0." for sub-second portion of time stamp.
2024-09-17 11:03:40 -05:00

42 lines
1.3 KiB
C++

#include <unistd.h>
#include <stdio.h>
#include <stdarg.h>
#include <time.h>
#include <sys/time.h>
// message_publish when you don't have a message publisher class
#define MAX_MSG_HEADER_SIZE 256
#define MAX_MSG_SIZE 20480
extern "C" int message_publish_standalone(int level, const char * format_msg, ...) {
char msg_buf[MAX_MSG_SIZE];
char date_buf[MAX_MSG_HEADER_SIZE];
char hostname[64];
time_t date ;
// timeval contains both tv_sec and tv_usec
// tv_sec represents seconds since the epoch and is used for time stamp without sub-second.
// tv_usec are microseconds past the last second and is used for printing out sub-second.
struct timeval time_val;
va_list args;
va_start(args, format_msg);
(void) vsnprintf(msg_buf, MAX_MSG_SIZE, format_msg, args);
va_end(args);
gettimeofday(&time_val, NULL);
// tv_sec represents seconds since the epoch
date = time_val.tv_sec;
strftime(date_buf, (size_t) 20, "%Y/%m/%d,%H:%M:%S", localtime(&date));
(void) gethostname(hostname, (size_t) 48);
fprintf(stdout, "|L %d|%s.%06Lu| |%s|T %d|%.2f| %s" , level,
// so that we don't call any exec routines, use process id 0 and sim time 0.0
date_buf, time_val.tv_usec, hostname , 0, 0.0, msg_buf) ;
fflush(stdout) ;
return (0);
}