BeeeOn Gateway  v2020.3.1-2-g6f737dc
Platform to interconnect the IoT world
GatewayID.h
1 #pragma once
2 
3 #include <cstdint>
4 #include <Poco/Exception.h>
5 
6 namespace BeeeOn {
7 
14 class GatewayID {
15 public:
16  enum {
17  LENGTH = 16
18  };
19 
20  GatewayID():
21  m_value(0)
22  {
23  }
24 
25  GatewayID(uint64_t value):
26  m_value(value)
27  {
28  }
29 
30  GatewayID(int version, uint64_t data);
31 
32  bool isNull() const
33  {
34  return m_value == 0;
35  }
36 
37  int version() const
38  {
39  return std::to_string(m_value).at(0) - '0';
40  }
41 
42  uint64_t data() const
43  {
44  return parse64(std::to_string(m_value / 10).substr(1));
45  }
46 
47  static GatewayID parse(const std::string &s);
48 
49  std::string toString() const
50  {
51  return std::to_string(m_value);
52  }
53 
54  bool operator !=(const GatewayID &id) const
55  {
56  return m_value != id.m_value;
57  }
58 
59  bool operator ==(const GatewayID &id) const
60  {
61  return m_value == id.m_value;
62  }
63 
64  bool operator <(const GatewayID &id) const
65  {
66  return m_value < id.m_value;
67  }
68 
69  bool operator >(const GatewayID &id) const
70  {
71  return m_value > id.m_value;
72  }
73 
74  bool operator <=(const GatewayID &id) const
75  {
76  return m_value <= id.m_value;
77  }
78 
79  bool operator >=(const GatewayID &id) const
80  {
81  return m_value >= id.m_value;
82  }
83 
84  operator unsigned long long() const
85  {
86  return (unsigned long long) m_value;
87  }
88 
89  operator uint64_t() const
90  {
91  return m_value;
92  }
93 
99  static GatewayID random(int version = 1, uint32_t seed = 0);
100 
101 protected:
102  static uint64_t parse64(const std::string &s);
103 
104 private:
105  uint64_t m_value;
106 };
107 
108 }
static GatewayID random(int version=1, uint32_t seed=0)
Definition: GatewayID.cpp:69
Definition: GatewayID.h:14