| 1043 | } |
| 1044 | }; |
| 1045 | struct LogMessageVersion { |
| 1046 | // Each message pushed into the log system has a unique, totally ordered LogMessageVersion |
| 1047 | // See ILogSystem::push() for how these are assigned |
| 1048 | Version version; |
| 1049 | uint32_t sub; |
| 1050 | |
| 1051 | void reset(Version v) { |
| 1052 | version = v; |
| 1053 | sub = 0; |
| 1054 | } |
| 1055 | |
| 1056 | bool operator<(LogMessageVersion const& r) const { |
| 1057 | if (version < r.version) |
| 1058 | return true; |
| 1059 | if (r.version < version) |
| 1060 | return false; |
| 1061 | return sub < r.sub; |
| 1062 | } |
| 1063 | bool operator>(LogMessageVersion const& r) const { return r < *this; } |
| 1064 | bool operator<=(LogMessageVersion const& r) const { return !(*this > r); } |
| 1065 | bool operator>=(LogMessageVersion const& r) const { return !(*this < r); } |
| 1066 | |
| 1067 | bool operator==(LogMessageVersion const& r) const { return version == r.version && sub == r.sub; } |
| 1068 | |
| 1069 | std::string toString() const { return format("%lld.%d", version, sub); } |
| 1070 | |
| 1071 | LogMessageVersion(Version version, uint32_t sub) : version(version), sub(sub) {} |
| 1072 | explicit LogMessageVersion(Version version) : version(version), sub(0) {} |
| 1073 | LogMessageVersion() : version(0), sub(0) {} |
| 1074 | bool empty() const { return (version == 0) && (sub == 0); } |
| 1075 | |
| 1076 | template <class Ar> |
| 1077 | void serialize(Ar& ar) { |
| 1078 | serializer(ar, version, sub); |
| 1079 | } |
| 1080 | }; |
| 1081 | |
| 1082 | struct AddressExclusion { |
| 1083 | IPAddress ip; |
no outgoing calls
no test coverage detected