00001 /* 00002 * DiscoveryService.cpp 00003 * 00004 * Created on: 11.09.2009 00005 * Author: morgenro 00006 */ 00007 00008 #include "net/DiscoveryService.h" 00009 #include "ibrdtn/data/SDNV.h" 00010 #include "ibrdtn/data/BundleString.h" 00011 #include <string> 00012 00013 using namespace dtn::data; 00014 00015 namespace dtn 00016 { 00017 namespace net 00018 { 00019 DiscoveryService::DiscoveryService() 00020 : _provider(NULL) 00021 { 00022 } 00023 00024 DiscoveryService::DiscoveryService(DiscoveryServiceProvider *provider) 00025 : _provider(provider) 00026 { 00027 } 00028 00029 DiscoveryService::DiscoveryService(std::string name, std::string parameters) 00030 : _service_name(name), _service_parameters(parameters), _provider(NULL) 00031 { 00032 } 00033 00034 DiscoveryService::~DiscoveryService() 00035 { 00036 } 00037 00038 size_t DiscoveryService::getLength() const 00039 { 00040 BundleString name(_service_name); 00041 BundleString parameters(_service_parameters); 00042 00043 return name.getLength() + parameters.getLength(); 00044 } 00045 00046 std::string DiscoveryService::getName() const 00047 { 00048 return _service_name; 00049 } 00050 00051 std::string DiscoveryService::getParameters() const 00052 { 00053 return _service_parameters; 00054 } 00055 00056 void DiscoveryService::update() 00057 { 00058 if (_provider != NULL) _provider->update(_service_name, _service_parameters); 00059 } 00060 00061 bool DiscoveryService::onInterface(const ibrcommon::NetInterface &net) const 00062 { 00063 if (_provider != NULL) 00064 { 00065 return _provider->onInterface(net); 00066 } 00067 return true; 00068 } 00069 00070 std::ostream &operator<<(std::ostream &stream, const DiscoveryService &service) 00071 { 00072 BundleString name(service._service_name); 00073 BundleString parameters(service._service_parameters); 00074 00075 stream << name << parameters; 00076 00077 return stream; 00078 } 00079 00080 std::istream &operator>>(std::istream &stream, DiscoveryService &service) 00081 { 00082 BundleString name; 00083 BundleString parameters; 00084 00085 stream >> name >> parameters; 00086 00087 service._service_name = (std::string)name; 00088 service._service_parameters = (std::string)parameters; 00089 00090 return stream; 00091 } 00092 } 00093 }
1.7.1