summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/LinkLocal/DNSSD/DNSSDServiceID.h')
-rw-r--r--Swiften/LinkLocal/DNSSD/DNSSDServiceID.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/Swiften/LinkLocal/DNSSD/DNSSDServiceID.h b/Swiften/LinkLocal/DNSSD/DNSSDServiceID.h
new file mode 100644
index 0000000..b1986d3
--- /dev/null
+++ b/Swiften/LinkLocal/DNSSD/DNSSDServiceID.h
@@ -0,0 +1,66 @@
+#pragma once
+
+#include "Swiften/Base/String.h"
+
+namespace Swift {
+ class DNSSDServiceID {
+ public:
+ static const String PresenceServiceType;
+
+ DNSSDServiceID(
+ const String& name,
+ const String& type,
+ const String& domain = PresenceServiceType,
+ int networkInterface = 0) :
+ name(name),
+ type(type),
+ domain(domain),
+ networkInterface(networkInterface) {
+ }
+
+ bool operator==(const DNSSDServiceID& o) const {
+ return name == o.name && type == o.type && domain == o.domain && (networkInterface != 0 && o.networkInterface != 0 ? networkInterface == o.networkInterface : true);
+ }
+
+ bool operator<(const DNSSDServiceID& o) const {
+ if (o.name == name) {
+ if (o.type == type) {
+ if (o.domain == domain) {
+ return networkInterface < o.networkInterface;
+ }
+ else {
+ return domain < o.domain;
+ }
+ }
+ else {
+ return type < o.type;
+ }
+ }
+ else {
+ return o.name < name;
+ }
+ }
+
+ const String& getName() const {
+ return name;
+ }
+
+ const String& getType() const {
+ return type;
+ }
+
+ const String& getDomain() const {
+ return domain;
+ }
+
+ int getNetworkInterfaceID() const {
+ return networkInterface;
+ }
+
+ private:
+ String name;
+ String type;
+ String domain;
+ int networkInterface;
+ };
+}