Kea  1.9.9-git
isc::data Namespace Reference

Classes

class  BaseStampedElement
 This class represents configuration element which is associated with database identifier and the modification timestamp. More...
 
class  BoolElement
 
struct  CfgToElement
 Abstract class for configuration Cfg_* classes. More...
 
class  DoubleElement
 
class  Element
 The Element class represents a piece of data, used by the command channel and configuration parts. More...
 
class  ElementValue
 Template class for converting a value encapsulated in the Element object into a simple type. More...
 
class  ElementValue< asiolink::IOAddress >
 The ElementValue specialization for IOAddress. More...
 
class  ElementValue< bool >
 The ElementValue specialization for boolean. More...
 
class  ElementValue< double >
 The ElementValue specialization for double. More...
 
class  ElementValue< std::string >
 The ElementValue specialization for string. More...
 
class  IntElement
 Notes: IntElement type is changed to int64_t. More...
 
class  JSONError
 A standard Data module exception that is thrown if a parse error is encountered when constructing an Element from a string. More...
 
class  ListElement
 
class  MapElement
 
class  NullElement
 
class  ServerTag
 Represents a server tag. More...
 
struct  SimpleDefault
 This array defines a single entry of default values. More...
 
class  SimpleParser
 A simple parser. More...
 
class  StampedElement
 This class represents configuration element which is associated with database identifier, modification timestamp and servers. More...
 
class  StampedValue
 This class represents a named configuration parameter, e.g. More...
 
struct  StampedValueModificationTimeIndexTag
 Tag for the index for access by modification time. More...
 
struct  StampedValueNameIndexTag
 Tag for the index for access by value name. More...
 
class  StringElement
 
class  TypeError
 A standard Data module exception that is thrown if a function is called for an Element that has a wrong type (e.g. More...
 
struct  UserContext
 Base class for user context. More...
 

Typedefs

typedef boost::shared_ptr< const ElementConstElementPtr
 
typedef boost::shared_ptr< ElementElementPtr
 
typedef std::vector< std::string > ParamsList
 This defines a list of all parameters that are derived (or inherited) between contexts. More...
 
typedef std::vector< SimpleDefaultSimpleDefaults
 This specifies all default values in a given scope (e.g. a subnet). More...
 
typedef std::map< std::string, isc::data::Element::typesSimpleKeywords
 This specifies all accepted keywords with their types. More...
 
typedef std::vector< std::string > SimpleRequiredKeywords
 This specifies all required keywords. More...
 
typedef boost::shared_ptr< StampedValueStampedValuePtr
 Pointer to the stamped value. More...
 
Definition of the multi index container for @c StampedValue.
typedef boost::multi_index_container< StampedValuePtr, boost::multi_index::indexed_by< boost::multi_index::hashed_non_unique< boost::multi_index::tag< StampedValueNameIndexTag >, boost::multi_index::const_mem_fun< StampedValue, std::string,&StampedValue::getName > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< StampedValueModificationTimeIndexTag >, boost::multi_index::const_mem_fun< BaseStampedElement, boost::posix_time::ptime,&BaseStampedElement::getModificationTime > > >> StampedValueCollection
 Multi index container for StampedValue. More...
 

Functions

ElementPtr copy (ConstElementPtr from, int level=100)
 Copy the data up to a nesting level. More...
 
bool isEquivalent (ConstElementPtr a, ConstElementPtr b)
 Compares the data with other using unordered lists. More...
 
bool isNull (ConstElementPtr p)
 Checks whether the given ElementPtr is a NULL pointer. More...
 
void merge (ElementPtr element, ConstElementPtr other)
 Merges the data from other into element. More...
 
bool operator!= (const Element &a, const Element &b)
 
std::ostream & operator<< (std::ostream &out, const Element::Position &pos)
 Insert Element::Position as a string into stream. More...
 
std::ostream & operator<< (std::ostream &os, const ServerTag &server_tag)
 Insert the ServerTag as a string into stream. More...
 
std::ostream & operator<< (std::ostream &out, const Element &e)
 Insert the Element as a string into stream. More...
 
bool operator== (const Element &a, const Element &b)
 
void prettyPrint (ConstElementPtr element, std::ostream &out, unsigned indent=0, unsigned step=2)
 Pretty prints the data into stream. More...
 
std::string prettyPrint (ConstElementPtr element, unsigned indent=0, unsigned step=2)
 Pretty prints the data into string. More...
 
void removeIdentical (ElementPtr a, ConstElementPtr b)
 Remove all values from the first ElementPtr that are equal in the second. More...
 
ConstElementPtr removeIdentical (ConstElementPtr a, ConstElementPtr b)
 Create a new ElementPtr from the first ElementPtr, removing all values that are equal in the second. More...
 

Typedef Documentation

typedef boost::shared_ptr<const Element> isc::data::ConstElementPtr

Definition at line 23 of file data.h.

typedef boost::shared_ptr<Element> isc::data::ElementPtr

Definition at line 20 of file data.h.

typedef std::vector<std::string> isc::data::ParamsList

This defines a list of all parameters that are derived (or inherited) between contexts.

Definition at line 43 of file lib/cc/simple_parser.h.

This specifies all default values in a given scope (e.g. a subnet).

Definition at line 39 of file lib/cc/simple_parser.h.

typedef std::map<std::string, isc::data::Element::types> isc::data::SimpleKeywords

This specifies all accepted keywords with their types.

Definition at line 36 of file lib/cc/simple_parser.h.

typedef std::vector<std::string> isc::data::SimpleRequiredKeywords

This specifies all required keywords.

Definition at line 33 of file lib/cc/simple_parser.h.

typedef boost::multi_index_container< StampedValuePtr, boost::multi_index::indexed_by< boost::multi_index::hashed_non_unique< boost::multi_index::tag<StampedValueNameIndexTag>, boost::multi_index::const_mem_fun< StampedValue, std::string, &StampedValue::getName > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag<StampedValueModificationTimeIndexTag>, boost::multi_index::const_mem_fun< BaseStampedElement, boost::posix_time::ptime, &BaseStampedElement::getModificationTime > > >> isc::data::StampedValueCollection

Multi index container for StampedValue.

Definition at line 230 of file stamped_value.h.

typedef boost::shared_ptr<StampedValue> isc::data::StampedValuePtr

Pointer to the stamped value.

Definition at line 23 of file stamped_value.h.

Function Documentation

ElementPtr isc::data::copy ( ConstElementPtr  from,
int  level = 100 
)

Copy the data up to a nesting level.

The copy is a deep copy so nothing is shared if it is not under the given nesting level.

Parameters
fromthe pointer to the element to copy
levelnesting level (default is 100, 0 means shallow copy, negative means outbound and perhaps looping forever).
Returns
a pointer to a fresh copy
Exceptions
raisesa BadValue is a null pointer occurs.

Definition at line 1097 of file data.cc.

References isc_throw.

Referenced by isc::dhcp::ClientClassDictionary::ClientClassDictionary(), isc::dhcp::SrvConfig::copy(), isc::perfdhcp::TestControl::generateDuid(), isc::yang::Adaptor::getContext(), isc::dhcp::Option::getOptionsCopy(), isc::ha::HAConfig::getOtherServersConfig(), isc::lease_cmds::Lease4Parser::parse(), isc::dhcp::DHCPQueueControlParser::parse(), isc::lease_cmds::Lease6Parser::parse(), isc::dhcp::Pkt::setCopyRetrievedOptions(), isc::dhcp::Pkt4::setFile(), isc::yang::TranslatorConfig::setServerKeaDhcpCommon(), isc::dhcp::Pkt4::setSname(), and isc::data::UserContext::toElement().

bool isc::data::isEquivalent ( ConstElementPtr  a,
ConstElementPtr  b 
)

Compares the data with other using unordered lists.

This comparison function handles lists (JSON arrays) as unordered multi sets (multi means an item can occurs more than once as soon as it occurs the same number of times).

Definition at line 1219 of file data.cc.

Referenced by isc::test::runToElementTest().

bool isc::data::isNull ( ConstElementPtr  p)

Checks whether the given ElementPtr is a NULL pointer.

Parameters
pThe ElementPtr to check
Returns
true if it is NULL, false if not.

Definition at line 1028 of file data.cc.

Referenced by isc::hooks::HooksConfig::equal(), isc::hooks::HooksConfig::toElement(), isc::d2::D2CfgContext::toElement(), and isc::dhcp::SrvConfig::toElement().

void isc::data::merge ( ElementPtr  element,
ConstElementPtr  other 
)

Merges the data from other into element.

(on the first level). Both elements must be MapElements. Every string,value pair in other is copied into element (the ElementPtr of value is copied, this is not a new object) Unless the value is a NullElement, in which case the key is removed from element, rather than setting the value to the given NullElement. This way, we can remove values from for instance maps with configuration data (which would then result in reverting back to the default). Raises a TypeError if either ElementPtr is not a MapElement

Definition at line 1079 of file data.cc.

References isc_throw.

Referenced by isc::dhcp::SrvConfig::merge(), isc::netconf::NetconfParser::parse(), isc::agent::AgentParser::parse(), isc::d2::D2Parser::parse(), isc::dhcp::Dhcp4Parser::parse(), isc::dhcp::Dhcp6Parser::parse(), isc::dhcp::Subnet4::toElement(), and isc::dhcp::Subnet6::toElement().

bool isc::data::operator!= ( const Element a,
const Element b 
)

Definition at line 214 of file data.cc.

References isc::data::Element::equals().

+ Here is the call graph for this function:

std::ostream & isc::data::operator<< ( std::ostream &  out,
const Element::Position pos 
)

Insert Element::Position as a string into stream.

This operator converts the Element::Position into a string and inserts it into the output stream out.

Parameters
outA std::ostream object on which the insertion operation is performed.
posThe Element::Position structure to insert.
Returns
A reference to the same std::ostream object referenced by parameter out after the insertion operation.

Definition at line 45 of file data.cc.

References isc::data::Element::Position::str().

+ Here is the call graph for this function:

std::ostream & isc::data::operator<< ( std::ostream &  os,
const ServerTag server_tag 
)

Insert the ServerTag as a string into stream.

Parameters
osstream to insert server tag into.
server_tagserver tag to be converted to text and inserted into a stream.
Returns
Reference to the stream object with inserted server tag.

Definition at line 47 of file server_tag.cc.

References isc::data::ServerTag::get().

+ Here is the call graph for this function:

std::ostream & isc::data::operator<< ( std::ostream &  out,
const Element e 
)

Insert the Element as a string into stream.

This method converts the ElementPtr into a string with Element::str() and inserts it into the output stream out.

This function overloads the global operator<< to behave as described in ostream::operator<< but applied to ElementPtr objects.

Parameters
outA std::ostream object on which the insertion operation is performed.
eThe ElementPtr object to insert.
Returns
A reference to the same std::ostream object referenced by parameter out after the insertion operation.

Definition at line 205 of file data.cc.

References isc::data::Element::str().

+ Here is the call graph for this function:

bool isc::data::operator== ( const Element a,
const Element b 
)

Definition at line 210 of file data.cc.

References isc::data::Element::equals().

+ Here is the call graph for this function:

void isc::data::prettyPrint ( ConstElementPtr  element,
std::ostream &  out,
unsigned  indent = 0,
unsigned  step = 2 
)

Pretty prints the data into stream.

This operator converts the ConstElementPtr into a string and inserts it into the output stream out with an initial indentation indent and add at each level step spaces. For maps if there is a comment property it is printed first.

Parameters
elementA ConstElementPtr to pretty print
outA std::ostream on which the print operation is performed
indentAn initial number of spaces to add each new line
stepA number of spaces to add to indentation at a new level

Definition at line 1224 of file data.cc.

References isc_throw, and prettyPrint().

Referenced by isc::netconf::StdoutControlSocket::configSet(), isc::netconf::NetconfAgent::keaConfig(), isc::test::runToElementTest(), isc::netconf::NetconfAgent::update(), isc::netconf::NetconfAgent::validate(), isc::process::Daemon::writeConfigFile(), and isc::netconf::NetconfAgent::yangConfig().

+ Here is the call graph for this function:

std::string isc::data::prettyPrint ( ConstElementPtr  element,
unsigned  indent = 0,
unsigned  step = 2 
)

Pretty prints the data into string.

This operator converts the ConstElementPtr into a string with an initial indentation indent and add at each level step spaces. For maps if there is a comment property it is printed first.

Parameters
elementA ConstElementPtr to pretty print
indentAn initial number of spaces to add each new line
stepA number of spaces to add to indentation at a new level
Returns
a string where element was pretty printed

Definition at line 1309 of file data.cc.

Referenced by prettyPrint().

void isc::data::removeIdentical ( ElementPtr  a,
ConstElementPtr  b 
)

Remove all values from the first ElementPtr that are equal in the second.

Both ElementPtrs MUST be MapElements The use for this function is to end up with a MapElement that only contains new and changed values (for ModuleCCSession and configuration update handlers) Raises a TypeError if a or b are not MapElements

Definition at line 1033 of file data.cc.

References isc_throw.

ConstElementPtr isc::data::removeIdentical ( ConstElementPtr  a,
ConstElementPtr  b 
)

Create a new ElementPtr from the first ElementPtr, removing all values that are equal in the second.

Both ElementPtrs MUST be MapElements. The returned ElementPtr will be a MapElement that only contains new and changed values (for ModuleCCSession and configuration update handlers). Raises a TypeError if a or b are not MapElements

Definition at line 1056 of file data.cc.

References isc_throw.