123#define getpid() _getpid() 
  124#define srandom(seed) srand(seed) 
  125#define random() rand() 
  129#if defined(R__LINUX) && !defined(R__WINGCC) 
  130#include <sys/sysinfo.h> 
  133#include <netinet/in.h> 
  147   uuid_time_t *time_last_ptr = TTHREAD_TLS_PTR(time_last);
 
  157         using namespace std::chrono;
 
  158         system_clock::time_point today = system_clock::now();
 
  159         seed = (
UInt_t)(system_clock::to_time_t ( today )) + ::getpid();
 
  163      clockseq = 1+(
UShort_t)(65536*random()/(RAND_MAX+1.0));
 
  173   if (
CmpTime(×tamp, time_last_ptr) == -1) {
 
  174      clockseq = (clockseq + 1) & 0x3FFF;
 
  175      if (clockseq == 0) clockseq++;
 
  178   Format(clockseq, timestamp);
 
  180   time_last = timestamp;
 
  197   if (
t1->high < t2->
high) 
return -1;
 
  198   if (
t1->high > t2->
high) 
return 1;
 
  199   if (
t1->low  < t2->
low)  
return -1;
 
  200   if (
t1->low  > t2->
low)  
return 1;
 
  213   int     timeHiAndVersion;
 
  214   int     clockSeqHiAndRes;
 
  218   sscanf(uuid, 
"%8lx-%4x-%4x-%2x%2x-%2x%2x%2x%2x%2x%2x",
 
  224          &node[0], &node[1], &node[2], &node[3], &node[4], &node[5]);
 
  256      Error(
"TUUID", 
"null string not allowed");
 
  266   Version_t version = TUUID::Class_Version();
 
  267   tobuf(buffer, version);
 
  273   for (
Int_t i = 0; i < 6; i++)
 
  289   for (
Int_t i = 0; i < 6; i++)
 
  305   for (
UInt_t i = 0; i < 6; i++) {
 
  332   const UShort_t uuids_per_tick = 1024;
 
  335   TTHREAD_TLS(
UShort_t)    uuids_this_tick(0);
 
  338   uuid_time_t *time_last_ptr = TTHREAD_TLS_PTR(time_last);
 
  342      uuids_this_tick = uuids_per_tick;
 
  352      if (
CmpTime(time_last_ptr, &time_now))  {
 
  357      if (uuids_this_tick < uuids_per_tick) {
 
  364   time_last = time_now;
 
  366   if (uuids_this_tick != 0) {
 
  367      if (time_now.
low & 0x80000000) {
 
  368         time_now.
low += uuids_this_tick;
 
  369         if (!(time_now.
low & 0x80000000))
 
  372         time_now.
low += uuids_this_tick;
 
  376   timestamp->
low  = time_now.
low;
 
  386   GetSystemTimeAsFileTime((FILETIME *)&time);
 
  392            (
unsigned __int64) (1000*1000*10)       
 
  393          * (
unsigned __int64) (60 * 60 * 24)       
 
  394          * (
unsigned __int64) (17+30+31+365*18+5); 
 
  396   timestamp->
high = time.HighPart;
 
  397   timestamp->
low  = time.LowPart;
 
  400   gettimeofday(&tp, 0);
 
  405                         0x01B21DD213814000LL;
 
  407   timestamp->
low  = (
UInt_t) (uuid_time & 0xFFFFFFFF);
 
  424         struct ifaddrs *ifAddrStruct = 
nullptr;
 
  425         struct ifaddrs *ifa = 
nullptr;
 
  427         if (getifaddrs(&ifAddrStruct) != 0) {
 
  430            for (ifa = ifAddrStruct; ifa != NULL; ifa = ifa->ifa_next) {
 
  431               if (!ifa->ifa_addr) {
 
  434               if (ifa->ifa_addr->sa_family != AF_INET) { 
 
  437               if (strncmp(ifa->ifa_name,
"lo",2) == 0) { 
 
  440               addr = ntohl(((
struct sockaddr_in *)ifa->ifa_addr)->sin_addr.s_addr);
 
  445         if (ifAddrStruct != 
nullptr)
 
  446            freeifaddrs(ifAddrStruct);
 
  459         PIP_ADAPTER_INFO ainfo = (PIP_ADAPTER_INFO) 
malloc(
sizeof(IP_ADAPTER_INFO));
 
  460         ULONG buflen = 
sizeof(IP_ADAPTER_INFO);
 
  461         DWORD stat = GetAdaptersInfo(ainfo, &buflen);
 
  462         if (stat == ERROR_BUFFER_OVERFLOW) {
 
  464            ainfo = (PIP_ADAPTER_INFO) 
malloc(buflen);
 
  465            stat = GetAdaptersInfo(ainfo, &buflen);
 
  467         if (stat != ERROR_SUCCESS)
 
  471            PIP_ADAPTER_INFO adapter = ainfo;
 
  473            sscanf(adapter->IpAddressList.IpAddress.String, 
"%d.%d.%d.%d",
 
  475            adr = (
a << 24) | (
b << 16) | (
c << 8) | 
d;
 
  481         memcpy(
fNode, &adr, 4);
 
  510      char          hostname[MAX_COMPUTERNAME_LENGTH + 1];
 
  513   memset(&
r, 0, 
sizeof(
r));  
 
  516   GlobalMemoryStatus(&
r.m);
 
  520   GetSystemTimeAsFileTime(&
r.t);
 
  522   QueryPerformanceCounter(&
r.pc);
 
  524   r.tc = GetTickCount();
 
  525   r.l = MAX_COMPUTERNAME_LENGTH + 1;
 
  526   GetComputerName(
r.hostname, &
r.l);
 
  529#if defined(R__LINUX) && !defined(R__WINGCC) 
  536   memset(&
r, 0, 
sizeof(
r));  
 
  538#if defined(R__LINUX) && !defined(R__WINGCC) 
  541   gettimeofday(&
r.t, 0);
 
  542   gethostname(
r.hostname, 256);
 
  562   static char uuid[40];
 
  564   snprintf(uuid,40, 
"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
 
  586   c0 += *
c++; 
c1 += c0;
 
  587   c0 += *
c++; 
c1 += c0;
 
  588   c0 += *
c++; 
c1 += c0;
 
  589   c0 += *
c++; 
c1 += c0;
 
  591   c0 += *
c++; 
c1 += c0;
 
  592   c0 += *
c++; 
c1 += c0;
 
  593   c0 += *
c++; 
c1 += c0;
 
  594   c0 += *
c++; 
c1 += c0;
 
  596   c0 += *
c++; 
c1 += c0;
 
  597   c0 += *
c++; 
c1 += c0;
 
  598   c0 += *
c++; 
c1 += c0;
 
  599   c0 += *
c++; 
c1 += c0;
 
  601   c0 += *
c++; 
c1 += c0;
 
  602   c0 += *
c++; 
c1 += c0;
 
  603   c0 += *
c++; 
c1 += c0;
 
  604   c0 += *
c++; 
c1 += c0;
 
  627#define CHECK(f1, f2) if (f1 != f2) return f1 < f2 ? -1 : 1; 
  633   for (
int i = 0; i < 6; i++) {
 
  650      memcpy(&addr, 
fNode, 4);
 
  673   uuid_time -= 0x01B21DD213814000LL;
 
  674   uuid_time /= 10000000LL;
 
  696      Error(
"SetUUID", 
"null string not allowed");
 
  708   const_cast<TUUID&
>(uuid).Streamer(buf);
 
void frombuf(char *&buf, Bool_t *x)
 
void tobuf(char *&buf, Bool_t x)
 
unsigned long long ULong64_t
 
void Error(const char *location, const char *msgfmt,...)
 
R__EXTERN TVirtualMutex * gROOTMutex
 
R__EXTERN TSystem * gSystem
 
TBuffer & operator<<(TBuffer &buf, const TUUID &uuid)
Input operator. Delegate to Streamer.
 
#define R__LOCKGUARD(mutex)
 
Buffer base class used for serializing objects.
 
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
 
void Set()
Set Date/Time to current time as reported by the system.
 
This class represents an Internet Protocol (IP) address.
 
This code implements the MD5 message-digest algorithm.
 
void Update(const UChar_t *buf, UInt_t len)
Update TMD5 object to reflect the concatenation of another buffer full of bytes.
 
void Final()
MD5 finalization, ends an MD5 message-digest operation, writing the the message digest and zeroizing ...
 
virtual int GetPid()
Get process id.
 
virtual TTime Now()
Get current time in milliseconds since 0:00 Jan 1 1995.
 
This class defines a UUID (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDent...
 
UChar_t fClockSeqHiAndReserved
 
void GetCurrentTime(uuid_time_t *timestamp)
Get current time as 60 bit 100ns ticks since whenever.
 
Int_t CmpTime(uuid_time_t *t1, uuid_time_t *t2)
Compare two time values.
 
void GetSystemTime(uuid_time_t *timestamp)
Get system time with 100ns precision. Time is since Oct 15, 1582.
 
virtual ~TUUID()
delete this TUUID
 
void ReadBuffer(char *&buffer)
Stream UUID from input buffer.
 
void SetFromString(const char *uuid_str)
Set this UUID to the value specified in uuid ((which must be in TUUID::AsString() format).
 
void Format(UShort_t clockseq, uuid_time_t ts)
Make a UUID from timestamp, clockseq and node id.
 
TDatime GetTime() const
Get time from UUID.
 
UInt_t fTimeLow
index in the list of UUIDs in TProcessUUID
 
const char * AsString() const
Return UUID as string. Copy string immediately since it will be reused.
 
void GetUUID(UChar_t uuid[16]) const
Return uuid in specified buffer (16 byte = 128 bits).
 
TInetAddress GetHostAddress() const
Get address of host encoded in UUID.
 
void SetUUID(const char *uuid_str)
Set this UUID to the value specified in uuid ((which must be in TUUID::AsString() format).
 
UShort_t Hash() const
Compute 16-bit hash value of the UUID.
 
UShort_t fTimeHiAndVersion
 
void GetRandomInfo(UChar_t seed[16])
Get random info based on some machine parameters.
 
void Print() const
Print UUID.
 
Int_t Compare(const TUUID &u) const
Compare two UUIDs "lexically" and return.
 
void FillBuffer(char *&buffer)
Stream UUID into output buffer.
 
void GetNodeIdentifier()
Get node identifier.
 
void StreamerV1(TBuffer &b)
Stream UUID from input buffer.
 
EvaluateInfo init(std::vector< RooRealProxy > parameters, std::vector< ArrayWrapper * > wrappers, std::vector< double * > arrays, size_t begin, size_t batchSize)
 
static constexpr double s
 
static constexpr double pc