BeeeOn Gateway  v2020.3.1-2-g6f737dc
Platform to interconnect the IoT world
GlobalID.h
1 #pragma once
2 
3 #include <vector>
4 
5 #include <Poco/UUID.h>
6 #include <Poco/UUIDGenerator.h>
7 
8 namespace BeeeOn {
9 
10 class GlobalID {
11 public:
12  enum {
13  BYTES_SIZE = 16,
14  WORDS_SIZE = 4,
15  };
16 
17  struct Hash {
18  unsigned int operator() (const GlobalID &id)
19  {
20  return id.hash();
21  }
22  };
23 
24  GlobalID()
25  {
26  }
27 
28  GlobalID(const Poco::UUID &uuid):
29  m_uuid(uuid)
30  {
31  }
32 
33  GlobalID(const GlobalID &gid):
34  m_uuid(gid.m_uuid)
35  {
36  }
37 
38  bool isNull() const
39  {
40  return m_uuid.isNull();
41  }
42 
43  static GlobalID random()
44  {
45  return GlobalID(Poco::UUIDGenerator::defaultGenerator()
46  .createRandom());
47  }
48 
49  static GlobalID parse(const std::string &s)
50  {
51  GlobalID gid;
52  gid.m_uuid.parse(s);
53  return gid;
54  }
55 
56  static GlobalID fromBytes(const std::vector<uint8_t> &in);
57  std::vector<uint8_t> toBytes() const;
58 
59  unsigned int hash() const;
60 
61  std::string toString() const
62  {
63  return m_uuid.toString();
64  }
65 
66  bool operator !=(const GlobalID &id) const
67  {
68  return m_uuid != id.m_uuid;
69  }
70 
71  bool operator ==(const GlobalID &id) const
72  {
73  return m_uuid == id.m_uuid;
74  }
75 
76  bool operator <(const GlobalID &id) const
77  {
78  return m_uuid < id.m_uuid;
79  }
80 
81  bool operator >(const GlobalID &id) const
82  {
83  return m_uuid > id.m_uuid;
84  }
85 
86  bool operator <=(const GlobalID &id) const
87  {
88  return m_uuid <= id.m_uuid;
89  }
90 
91  bool operator >=(const GlobalID &id) const
92  {
93  return m_uuid >= id.m_uuid;
94  }
95 
96 private:
97  Poco::UUID m_uuid;
98 };
99 
100 }
Definition: GlobalID.h:10
unsigned int hash() const
Definition: GlobalID.cpp:12
Definition: GlobalID.h:17