1 // Copyright (C) 2018-2020 Internet Systems Consortium, Inc. ("ISC") 2 // 3 // This Source Code Form is subject to the terms of the Mozilla Public 4 // License, v. 2.0. If a copy of the MPL was not distributed with this 5 // file, You can obtain one at http://mozilla.org/MPL/2.0/. 6 7 #include <config.h> 8 9 #include <cc/stamped_element.h> 10 11 namespace isc { 12 namespace data { 13 StampedElement()14StampedElement::StampedElement() 15 : BaseStampedElement(), server_tags_() { 16 } 17 18 bool hasServerTag(const ServerTag & server_tag) const19StampedElement::hasServerTag(const ServerTag& server_tag) const { 20 return (server_tags_.count(server_tag) > 0); 21 } 22 23 void delServerTag(const std::string & server_tag)24StampedElement::delServerTag(const std::string& server_tag) { 25 if (!server_tags_.erase(ServerTag(server_tag))) { 26 isc_throw(NotFound, "can't find server tag '" << server_tag << "' to delete"); 27 } 28 } 29 30 bool hasAllServerTag() const31StampedElement::hasAllServerTag() const { 32 return (hasServerTag(ServerTag(ServerTag::ALL))); 33 } 34 35 36 ElementPtr getMetadata() const37StampedElement::getMetadata() const { 38 ElementPtr metadata = Element::createMap(); 39 ElementPtr tags = Element::createList(); 40 41 for (auto server_tag : server_tags_) { 42 tags->add(Element::create(server_tag.get())); 43 } 44 45 metadata->set("server-tags", tags); 46 return (metadata); 47 } 48 49 } // end of namespace isc::data 50 } // end of namespace isc 51