/* * Copyright (c) 2011 Tobias Markmann * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #pragma once #include #include #include #include #include #include #include namespace Swift { class NATTraverser; class ConnectivityManager { public: ConnectivityManager(NATTraverser*); ~ConnectivityManager(); public: void addListeningPort(int port); void removeListeningPort(int port); std::vector getHostAddressPorts() const; std::vector getAssistedHostAddressPorts() const; private: void natTraversalGetPublicIPResult(boost::optional address); void natTraversalForwardPortResult(boost::optional mapping); private: NATTraverser* natTraversalWorker; std::set ports; boost::optional publicAddress; }; }