diff options
author | Colin Cross <ccross@android.com> | 2021-08-26 21:29:35 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-08-26 21:29:35 +0000 |
commit | 8c1d6562996fd78350510c66e282dcb50caa1655 (patch) | |
tree | 08f815bfcdaed1c2137de2d6966e42a8870dedb0 /osp/impl/discovery/mdns/domain_name.cc | |
parent | 8beec73fbbcaaab6785c3f9cc5a9661afcbc7fa7 (diff) | |
parent | 6b563cff6fca9ffdd14a12d33795fef8e2562a26 (diff) | |
download | openscreen-8c1d6562996fd78350510c66e282dcb50caa1655.tar.gz |
Upgrade openscreen to f54d92523c9f2c8c5afb99e05fed70e4b8772b1c am: 6b563cff6fandroid-s-v2-preview-2android-s-v2-preview-1android-s-v2-beta-2android-s-v2-preview-1
Original change: https://android-review.googlesource.com/c/platform/external/openscreen/+/1810936
Change-Id: I4af446c4bf4a92bc6fe1c6da2ac036a530aee809
Diffstat (limited to 'osp/impl/discovery/mdns/domain_name.cc')
-rw-r--r-- | osp/impl/discovery/mdns/domain_name.cc | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/osp/impl/discovery/mdns/domain_name.cc b/osp/impl/discovery/mdns/domain_name.cc deleted file mode 100644 index c574793a..00000000 --- a/osp/impl/discovery/mdns/domain_name.cc +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "osp/impl/discovery/mdns/domain_name.h" - -#include <algorithm> -#include <iterator> - -#include "util/stringprintf.h" - -namespace openscreen { -namespace osp { - -// static -DomainName DomainName::GetLocalDomain() { - return DomainName{{5, 'l', 'o', 'c', 'a', 'l', 0}}; -} - -// static -ErrorOr<DomainName> DomainName::Append(const DomainName& first, - const DomainName& second) { - OSP_CHECK(first.domain_name_.size()); - OSP_CHECK(second.domain_name_.size()); - - // Both vectors should represent null terminated domain names. - OSP_DCHECK_EQ(first.domain_name_.back(), '\0'); - OSP_DCHECK_EQ(second.domain_name_.back(), '\0'); - if ((first.domain_name_.size() + second.domain_name_.size() - 1) > - kDomainNameMaxLength) { - return Error::Code::kDomainNameTooLong; - } - - DomainName result; - result.domain_name_.clear(); - result.domain_name_.insert(result.domain_name_.begin(), - first.domain_name_.begin(), - first.domain_name_.end()); - result.domain_name_.insert(result.domain_name_.end() - 1, - second.domain_name_.begin(), - second.domain_name_.end() - 1); - return result; -} - -DomainName::DomainName() : domain_name_{0u} {} -DomainName::DomainName(std::vector<uint8_t>&& domain_name) - : domain_name_(std::move(domain_name)) { - OSP_CHECK_LE(domain_name_.size(), kDomainNameMaxLength); -} -DomainName::DomainName(const DomainName&) = default; -DomainName::DomainName(DomainName&&) noexcept = default; -DomainName::~DomainName() = default; -DomainName& DomainName::operator=(const DomainName&) = default; -DomainName& DomainName::operator=(DomainName&&) noexcept = default; - -bool DomainName::operator==(const DomainName& other) const { - if (domain_name_.size() != other.domain_name_.size()) { - return false; - } - for (size_t i = 0; i < domain_name_.size(); ++i) { - if (tolower(domain_name_[i]) != tolower(other.domain_name_[i])) { - return false; - } - } - return true; -} - -bool DomainName::operator!=(const DomainName& other) const { - return !(*this == other); -} - -bool DomainName::EndsWithLocalDomain() const { - const DomainName local_domain = GetLocalDomain(); - if (domain_name_.size() < local_domain.domain_name_.size()) - return false; - - return std::equal(local_domain.domain_name_.begin(), - local_domain.domain_name_.end(), - domain_name_.end() - local_domain.domain_name_.size()); -} - -Error DomainName::Append(const DomainName& after) { - OSP_CHECK(after.domain_name_.size()); - OSP_DCHECK_EQ(after.domain_name_.back(), 0u); - - if ((domain_name_.size() + after.domain_name_.size() - 1) > - kDomainNameMaxLength) { - return Error::Code::kDomainNameTooLong; - } - - domain_name_.insert(domain_name_.end() - 1, after.domain_name_.begin(), - after.domain_name_.end() - 1); - return Error::None(); -} - -std::vector<absl::string_view> DomainName::GetLabels() const { - OSP_DCHECK_GT(domain_name_.size(), 0u); - OSP_DCHECK_LT(domain_name_.size(), kDomainNameMaxLength); - - std::vector<absl::string_view> result; - const uint8_t* data = domain_name_.data(); - while (*data != 0) { - const size_t label_length = *data; - OSP_DCHECK_LT(label_length, kDomainNameMaxLabelLength); - - ++data; - result.emplace_back(reinterpret_cast<const char*>(data), label_length); - data += label_length; - } - return result; -} - -bool DomainNameComparator::operator()(const DomainName& a, - const DomainName& b) const { - return a.domain_name() < b.domain_name(); -} - -std::ostream& operator<<(std::ostream& os, const DomainName& domain_name) { - const auto& data = domain_name.domain_name(); - OSP_DCHECK_GT(data.size(), 0u); - auto it = data.begin(); - while (*it != 0) { - size_t length = *it++; - PrettyPrintAsciiHex(os, it, it + length); - it += length; - os << "."; - } - return os; -} - -} // namespace osp -} // namespace openscreen |