/src/topology/physicalNetworkStoreFactory.cpp

https://github.com/deltaforge/nebu-common-cpp · C++ · 44 lines · 33 code · 9 blank · 2 comment · 1 complexity · d03205b08c1dec24473087ebc2e80334 MD5 · raw file

  1. #include "nebu/topology/physicalNetworkStoreFactory.h"
  2. #include "nebu/util/xmlUtil.h"
  3. // Using declarations - tinyxml2
  4. using tinyxml2::XMLAttribute;
  5. // Using declarations - standard library
  6. using std::make_shared;
  7. using std::shared_ptr;
  8. using std::string;
  9. namespace nebu
  10. {
  11. namespace common
  12. {
  13. shared_ptr<PhysicalNetworkStoreFactory> PhysicalNetworkStoreFactory::instance;
  14. const string PhysicalNetworkStoreFactory::ROOT_NAME = "store";
  15. const string PhysicalNetworkStoreFactory::ATTR_ID = "id";
  16. shared_ptr<PhysicalNetworkStoreFactory> PhysicalNetworkStoreFactory::getInstance()
  17. {
  18. if (!PhysicalNetworkStoreFactory::instance) {
  19. PhysicalNetworkStoreFactory::setInstance(make_shared<PhysicalNetworkStoreFactory>());
  20. }
  21. return PhysicalNetworkStoreFactory::instance;
  22. }
  23. void PhysicalNetworkStoreFactory::setInstance(std::shared_ptr<PhysicalNetworkStoreFactory> instance)
  24. {
  25. PhysicalNetworkStoreFactory::instance = instance;
  26. }
  27. Traits<PhysicalNetworkStore>::Ptr PhysicalNetworkStoreFactory::parseXML(const tinyxml2::XMLElement *elem) const
  28. {
  29. XMLUtil::verifyElementName(elem, PhysicalNetworkStoreFactory::ROOT_NAME);
  30. const XMLAttribute *idAttr = XMLUtil::findAttribute(elem, PhysicalNetworkStoreFactory::ATTR_ID, XMLUtil::MANDATORY);
  31. Traits<PhysicalNetworkStore>::Ptr localStore = Traits<PhysicalNetworkStore>::MakePtr(idAttr->Value());
  32. return localStore;
  33. }
  34. }
  35. }