/* * Copyright (c) 2010 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once #include #include #include #include #include #include #include #include #include namespace Swift { class SWIFTEN_API StaticDomainNameResolver : public DomainNameResolver { public: typedef std::map > AddressesMap; typedef std::vector< std::pair > ServicesCollection; public: StaticDomainNameResolver(EventLoop* eventLoop); ~StaticDomainNameResolver(); void addAddress(const std::string& domain, const HostAddress& address); void addService(const std::string& service, const DomainNameServiceQuery::Result& result); void addXMPPClientService(const std::string& domain, const HostAddressPort&); void addXMPPClientService(const std::string& domain, const std::string& host, int port); const AddressesMap& getAddresses() const { return addresses; } const ServicesCollection& getServices() const { return services; } bool getIsResponsive() const { return isResponsive; } void setIsResponsive(bool b) { isResponsive = b; } virtual boost::shared_ptr createServiceQuery(const std::string& serviceLookupPrefix, const std::string& domain); virtual boost::shared_ptr createAddressQuery(const std::string& name); private: EventLoop* eventLoop; bool isResponsive; AddressesMap addresses; ServicesCollection services; boost::shared_ptr owner; }; }