diff options
Diffstat (limited to 'Swiften/LinkLocal/LinkLocalServiceInfo.cpp')
m--------- | Swiften | 0 | ||||
-rw-r--r-- | Swiften/LinkLocal/LinkLocalServiceInfo.cpp | 114 |
2 files changed, 0 insertions, 114 deletions
diff --git a/Swiften b/Swiften new file mode 160000 +Subproject 8213ba16d0043d2461f4b031c881d61dda5a38c diff --git a/Swiften/LinkLocal/LinkLocalServiceInfo.cpp b/Swiften/LinkLocal/LinkLocalServiceInfo.cpp deleted file mode 100644 index 8ee7ae0..0000000 --- a/Swiften/LinkLocal/LinkLocalServiceInfo.cpp +++ /dev/null @@ -1,114 +0,0 @@ -#include "Swiften/LinkLocal/LinkLocalServiceInfo.h" - -#include <boost/lexical_cast.hpp> - -namespace Swift { - -ByteArray LinkLocalServiceInfo::toTXTRecord() const { - ByteArray result(getEncoded("txtvers=1")); - if (!firstName.isEmpty()) { - result += getEncoded("1st=" + firstName); - } - if (!lastName.isEmpty()) { - result += getEncoded("last=" + lastName); - } - if (!email.isEmpty()) { - result += getEncoded("email=" + email); - } - if (jid.isValid()) { - result += getEncoded("jid=" + jid.toString()); - } - if (!message.isEmpty()) { - result += getEncoded("msg=" + message); - } - if (!nick.isEmpty()) { - result += getEncoded("nick=" + nick); - } - if (port) { - result += getEncoded("port.p2pj=" + String(boost::lexical_cast<std::string>(*port))); - } - - switch (status) { - case Available: result += getEncoded("status=avail"); break; - case Away: result += getEncoded("status=away"); break; - case DND: result += getEncoded("status=dnd"); break; - } - - return result; -} - -ByteArray LinkLocalServiceInfo::getEncoded(const String& s) { - ByteArray sizeByte; - sizeByte.resize(1); - assert(s.getLength() < 256); - sizeByte[0] = s.getUTF8Size(); - return sizeByte + ByteArray(s); -} - -LinkLocalServiceInfo LinkLocalServiceInfo::createFromTXTRecord(const ByteArray& record) { - LinkLocalServiceInfo info; - size_t i = 0; - while (i < record.getSize()) { - std::pair<String,String> entry = readEntry(record, &i); - if (entry.first.isEmpty()) { - break; - } - else if (entry.first == "1st") { - info.setFirstName(entry.second); - } - else if (entry.first == "last") { - info.setLastName(entry.second); - } - else if (entry.first == "email") { - info.setEMail(entry.second); - } - else if (entry.first == "jid") { - info.setJID(JID(entry.second)); - } - else if (entry.first == "msg") { - info.setMessage(entry.second); - } - else if (entry.first == "nick") { - info.setNick(entry.second); - } - else if (entry.first == "port.p2pj") { - info.setPort(boost::lexical_cast<int>(entry.second)); - } - else if (entry.first == "status") { - if (entry.second == "away") { - info.setStatus(Away); - } - else if (entry.second == "dnd") { - info.setStatus(DND); - } - } - } - return info; -} - -std::pair<String,String> LinkLocalServiceInfo::readEntry(const ByteArray& record, size_t* index) { - size_t& i = *index; - String key; - String value; - - size_t entryEnd = i + 1 + record[i]; - ++i; - bool inKey = true; - while (i < entryEnd && i < record.getSize()) { - if (inKey) { - if (record[i] == '=') { - inKey = false; - } - else { - key += record[i]; - } - } - else { - value += record[i]; - } - ++i; - } - return std::make_pair(key, value); -} - -} |