/* * Copyright (c) 2010 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #pragma once #include #include #include "Swiften/Network/HostAddress.h" #include "Swiften/Network/HostAddressPort.h" #include "Swiften/Network/DomainNameResolver.h" #include "Swiften/Network/DomainNameServiceQuery.h" #include "Swiften/Network/DomainNameAddressQuery.h" #include "Swiften/EventLoop/EventLoop.h" namespace Swift { class StaticDomainNameResolver : public DomainNameResolver { public: typedef std::map > AddressesMap; typedef std::vector< std::pair > ServicesCollection; public: StaticDomainNameResolver(EventLoop* eventLoop); 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& name); virtual boost::shared_ptr createAddressQuery(const std::string& name); private: EventLoop* eventLoop; bool isResponsive; AddressesMap addresses; ServicesCollection services; }; }