7 enum class stats_command : uint8_t { GET_COUNTER_VALUE = 0x1 };
9 struct get_counter_value_t {
10 uint64_t timestamp_us_; // usec
16 static const size_t MAX_DATA = 0xFFFF - 4;
17 packet() : size_(0) {}
18 inline void clear() { size_ = 0; }
20 assign(const char *p, size_t n)
22 INVARIANT(n <= MAX_DATA);
23 NDB_MEMCPY(&data_[0], p, n);
27 assign(const std::string &s)
29 assign(s.data(), s.size());
34 // XXX: we don't care about endianness
35 return fileutils::writeall(
36 fd, (const char *) &size_, sizeof(size_) + size_);
41 // XXX: we don't care about endianness
43 if ((r = fileutils::readall(fd, (char *) &size_, sizeof(size_)))) {
47 if (size_ > packet::MAX_DATA) {
48 std::cerr << "bad packet read with excessive size" << std::endl;
52 if ((r = fileutils::readall(fd, &data_[0], size_))) {
58 inline uint32_t size() const { return size_; }
59 inline const char * data() const { return &data_[0]; }