1 #ifndef _SERVICEDISCOVERY_CORE_H_
2 #define _SERVICEDISCOVERY_CORE_H_
6 #include <boost/thread.hpp>
7 #include <service_discovery/impl/avahi/Client.hpp>
8 #include <service_discovery/impl/avahi/ServiceBrowser.hpp>
9 #include <service_discovery/impl/avahi/ServiceEvent.hpp>
10 #include <service_discovery/impl/avahi/ServicePattern.hpp>
11 #include <service_discovery/impl/avahi/LocalService.hpp>
13 namespace servicediscovery {
100 void listenOn(
const std::vector<std::string>& types);
145 std::vector<ServiceDescription>
findServices(
const SearchPattern& pattern = SearchPattern())
const;
150 std::vector<ServiceDescription>
findServices(
const ServicePattern& pattern,
151 const std::string& name_space =
"*")
const;
174 boost::unique_lock<boost::mutex> lock(mAddedComponentMutex);
175 ServiceAddedSignal.connect(slot);
179 boost::unique_lock<boost::mutex> lock(mRemovedComponentMutex);
180 ServiceRemovedSignal.connect(slot);
188 static std::map<std::string, ServiceDescription>
getVisibleServices(
const SearchPattern& pattern = SearchPattern(
""));
193 static void registerCallbacks(
const std::string& serviceName,
const sigc::slot<void, ServiceEvent>& serviceAdded,
const sigc::slot<void, ServiceEvent>& serviceRemoved);
201 enum Mode { NONE = 0, LISTEN_ONLY = 1, PUBLISH = 2};
206 void addedService(
const RemoteService& service);
211 void removedService(
const RemoteService& service);
216 void updatedService(
const RemoteService& service);
221 std::vector<ServiceDescription> _findServices(
const SearchPattern& pattern)
const;
228 void _start(
const ServiceConfiguration& conf);
237 void _stop(
bool lock_client,
bool wait_until_unpublished =
true);
245 void _listenOn(
const std::vector<std::string>& types);
255 void cleanupBrowsers();
257 sigc::signal<void, ServiceEvent> ServiceAddedSignal;
258 sigc::signal<void, ServiceEvent> ServiceRemovedSignal;
260 mutable boost::mutex mAddedComponentMutex;
261 mutable boost::mutex mRemovedComponentMutex;
262 mutable boost::mutex mUpdatedComponentMutex;
265 static boost::mutex mServicesMutex;
274 std::map<std::string, ServiceBrowser*> mBrowsers;
277 LocalService* mLocalService;
279 ServiceConfiguration mLocalServiceConfiguration;
283 std::vector<std::string> mListenTypes;
289 static std::vector<ServiceDiscovery*> msServiceDiscoveries;
295 #endif // _SERVICEDISCOVERY_CORE_H_
static std::map< std::string, ServiceDescription > getVisibleServices(const SearchPattern &pattern=SearchPattern(""))
Definition: ServiceDiscovery.cpp:137
void start(const ServiceConfiguration &conf)
Definition: ServiceDiscovery.cpp:184
std::vector< std::string > getServiceNames()
Definition: ServiceDiscovery.cpp:318
static void registerCallbacks(const std::string &serviceName, const sigc::slot< void, ServiceEvent > &serviceAdded, const sigc::slot< void, ServiceEvent > &serviceRemoved)
Definition: ServiceDiscovery.cpp:106
bool isRunning() const
Definition: ServiceDiscovery.cpp:331
Description and parameterization of a service.
Definition: ServiceConfiguration.hpp:21
A wrapper class for the avahi service discovery.
Definition: ServiceDiscovery.hpp:77
void listenOn(const std::vector< std::string > &types)
Definition: ServiceDiscovery.cpp:201
static std::vector< ServiceDescription > getUpdateableServices()
Definition: ServiceDiscovery.cpp:163
void update(const ServiceDescription &desc)
Definition: ServiceDiscovery.cpp:209
Description and parameterization of a service instance.
Definition: ServiceDescription.hpp:21
std::vector< ServiceDescription > findServices(const SearchPattern &pattern=SearchPattern()) const
Definition: ServiceDiscovery.cpp:351
Definition: Client.hpp:40
void addedComponentConnect(const sigc::slot< void, ServiceEvent > &slot)
Definition: ServiceDiscovery.hpp:173
Definition: ServiceDiscovery.hpp:18
void stop()
Definition: ServiceDiscovery.cpp:482
virtual ~ServiceDiscovery()
Definition: ServiceDiscovery.cpp:28
ServiceConfiguration getConfiguration() const
Definition: ServiceDiscovery.cpp:341
Definition: ServiceDiscovery.hpp:17
void removedComponentConnect(const sigc::slot< void, ServiceEvent > &slot)
Definition: ServiceDiscovery.hpp:178
Definition: Client.hpp:33
ServiceDiscovery()
Definition: ServiceDiscovery.cpp:13
SDException
Definition: ServiceDiscovery.hpp:16
static ServiceDescription getServiceDescription(const std::string &servicename)
Definition: ServiceDiscovery.cpp:71