// [License] // The Ariba-Underlay Copyright // // Copyright (c) 2008-2009, Institute of Telematics, Universität Karlsruhe (TH) // // Institute of Telematics // Universität Karlsruhe (TH) // Zirkel 2, 76128 Karlsruhe // Germany // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // THIS SOFTWARE IS PROVIDED BY THE INSTITUTE OF TELEMATICS ``AS IS'' AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ARIBA PROJECT OR // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // // The views and conclusions contained in the software and documentation // are those of the authors and should not be interpreted as representing // official policies, either expressed or implied, of the Institute of // Telematics. // [License] #include "AribaModule.h" // boost/std includes #include #include // ariba includes #include "ariba/utility/misc/Helper.h" // hack includes #include "ariba/interface/UnderlayAbstraction.h" #include "ariba/communication/EndpointDescriptor.h" #include "ariba/communication/modules/network/NetworkLocator.h" using namespace ariba::utility::Helper; using ariba::interface::UnderlayAbstraction; namespace ariba { AribaModule::AribaModule() { // init with default values this->underlay_abs = NULL; this->ip_addr = NULL; this->tcp_port = 41402; this->udp_port = 41402; this->started = false; } AribaModule::~AribaModule() { } string AribaModule::getBootstrapHints(const Name& spoVNetName) const { } void AribaModule::addBootstrapHints(string boot_info) { string str = boot_info; static ::boost::regex boot_expr("<([^>:]+)[:]?([0-9]+)?>([^<]+)(.*)"); ::boost::smatch what; while (::boost::regex_match(str, what, boot_expr)) { std::cout << what[1].str() << ":" << what[2].str() << "=" << what[3] << std::endl; str = what[4].str(); } } void AribaModule::addBootstrapNode(const Name& spovnet, const Name& node, communication::EndpointDescriptor* desc) { } const communication::EndpointDescriptor* AribaModule::getBootstrapNode( const Name& spovnet) { return NULL; } // @see Module.h void AribaModule::initialize() { // preconditions assert(!started); // init variables underlay_abs = NULL; } // @see Module.h void AribaModule::start() { // preconditions assert(underlay_abs == NULL); assert(!started); // create the base communication component started = true; underlay_abs = new interface::UnderlayAbstraction(); } // @see Module.h void AribaModule::stop() { // preconditions assert(underlay_abs != NULL); assert(started); // delete base communication component started = false; delete underlay_abs; } // @see Module.h string AribaModule::getName() const { return "ariba"; } // @see Module.h void AribaModule::setProperty(string key, string value) { if (key == "ip.addr") { if (ip_addr != NULL) delete ip_addr; communication::IPv4Locator* loc = new communication::IPv4Locator(); *loc = communication::IPv4Locator::fromString(value); ip_addr = loc; } else if (key == "tcp.port") tcp_port = stoi(value); else if (key == "udp.port") udp_port = stoi(value); else if (key == "bootstrap.hints") addBootstrapHints(value); } // @see Module.h const string AribaModule::getProperty(string key) const { if (key == "ip.addr") return ip_addr->toString(); else if (key == "tcp.port") return ultos(tcp_port); else if (key == "udp.port") return ultos(udp_port); else if (key == "bootstrap.hints") return getBootstrapHints(); } // @see Module.h const vector AribaModule::getProperties() const { vector properties; properties.push_back("ip.addr"); properties.push_back("tcp.port"); properties.push_back("udp.port"); properties.push_back("hints"); return properties; } } // namespace ariba