00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00024 #ifndef SCALESTACK_NETWORK_IP_ADDRESS_SERVICE_H
00025 #define SCALESTACK_NETWORK_IP_ADDRESS_SERVICE_H
00026
00027 #include <string>
00028
00029 #include <scalestack/kernel/macros.h>
00030
00031 struct addrinfo;
00032
00033 namespace scalestack
00034 {
00035 namespace kernel
00036 {
00037
00038 class module;
00039
00040 }
00041
00042 namespace network
00043 {
00044 namespace ip
00045 {
00046
00051 class SCALESTACK_API address_service
00052 {
00053 public:
00054
00055 address_service(kernel::module& module);
00056
00057 virtual ~address_service();
00058
00077 void parse_addresses(const std::string& addresses,
00078 bool default_value_is_host,
00079 const std::string& default_value,
00080 const struct addrinfo& address_options);
00081
00089 void lookup_addresses(const std::string& host, const std::string& port,
00090 const struct addrinfo& address_options);
00091
00101 virtual bool add_addresses(const struct addrinfo* addresses) = 0;
00102
00103 protected:
00104
00105 kernel::module& _module;
00106
00107 private:
00108
00112 SCALESTACK_LOCAL
00113 address_service(const address_service&);
00114
00118 SCALESTACK_LOCAL
00119 address_service& operator=(const address_service&);
00120
00121 struct addrinfo* _addresses;
00122 };
00123
00124 }
00125 }
00126 }
00127
00128 #endif