#include <cstdio>
#include <ctime>
#include <chrono>
#include "common.h"
void Address::print() const
{ printf("%hhu.%hhu.%hhu.%hhu:%hu", ip[0], ip[1], ip[2], ip[3], port); }
Time monotonicTime() {
return std::chrono::duration_cast<std::chrono::microseconds>(
std::chrono::steady_clock::now().time_since_epoch() ).count();
}
Time globalTime()
{ return time(NULL)*1000000ull; }
const char* bitsToString(const void *data, int size) {
static char buffer[8*PACKET_SIZE + 1] = {};
if (size > PACKET_SIZE) size = PACKET_SIZE;
char *c = buffer;
for(const unsigned char *p = (const unsigned char*)data, *e = p + size; p < e; ++p)
for(int i = 0; i < 8; ++i, ++c)
*c = (*p & (1 << i)) ? '#': '.';
*c = 0;
return buffer;
}