fipa_services
DistributedServiceDirectory.hpp
Go to the documentation of this file.
1 #ifndef FIPA_SERVICES_DISTRIBUTED_SERVICE_DIRECTORY_HPP
2 #define FIPA_SERVICES_DISTRIBUTED_SERVICE_DIRECTORY_HPP
3 
4 #include <fipa_services/ServiceDirectory.hpp>
5 #include <service_discovery/ServiceDiscovery.hpp>
6 
7 #define DEFAULT_SERVICE_SCOPE "_fipa_service_directory._udp"
8 
9 namespace fipa {
10 namespace services {
34 {
35  typedef std::map<ServiceDirectoryEntry, servicediscovery::avahi::ServiceDiscovery*> ServiceDiscoveryMap;
36  ServiceDiscoveryMap mServiceDiscoveries;
37 
38  static std::string canonizeName(const std::string& name);
39 
40  // Default listing object (to make sure service discovery is working when
41  // no other service is registered)
42  servicediscovery::avahi::ServiceDiscovery* mServiceDiscovery;
43 
44 public:
45 
50  DistributedServiceDirectory(const std::string& scope = DEFAULT_SERVICE_SCOPE);
51 
55  DistributedServiceDirectory(const std::vector<std::string>& scopes);
56 
61 
67  static servicediscovery::avahi::ServiceDescription convert(const ServiceDirectoryEntry& entry);
68 
74  static ServiceDirectoryEntry convert(const servicediscovery::avahi::ServiceDescription& description);
75 
81  static ServiceDirectoryList convert(const std::map<std::string, servicediscovery::avahi::ServiceDescription>& servicesMap);
82 
87 
94  void registerService(const ServiceDirectoryEntry& entry, const std::string& publishDomain, uint32_t ttlInMS = 30000);
95 
100  virtual void deregisterService(const std::string& regex, ServiceDirectoryEntry::Field field);
101 
108  ServiceDirectoryList search(const std::string& regex, ServiceDirectoryEntry::Field field, bool doThrow) const;
109 };
110 
111 } // end namespace services
112 } // end namespace fipa
113 #endif // FIPA_SERVICES_DISTRIBUTED_SERVICE_DIRECTORY_HPP
Class to describe FIPA service directory.
Definition: ServiceDirectory.hpp:18
Field
Definition: ServiceDirectoryEntry.hpp:33
DistributedServiceDirectory(const std::string &scope=DEFAULT_SERVICE_SCOPE)
Definition: DistributedServiceDirectory.cpp:8
#define DEFAULT_SERVICE_SCOPE
Definition: DistributedServiceDirectory.hpp:7
Implementation of a distributed service directory using the functionality of Avahi.
Definition: DistributedServiceDirectory.hpp:33
std::vector< ServiceDirectoryEntry > ServiceDirectoryList
Definition: ServiceDirectoryEntry.hpp:96
ServiceDirectoryList search(const std::string &regex, ServiceDirectoryEntry::Field field, bool doThrow) const
Definition: DistributedServiceDirectory.cpp:130
The entry definition for a service directory, containing name, type, locator and description.
Definition: ServiceDirectoryEntry.hpp:23
static servicediscovery::avahi::ServiceDescription convert(const ServiceDirectoryEntry &entry)
Definition: DistributedServiceDirectory.cpp:38
void registerService(const ServiceDirectoryEntry &entry)
Definition: DistributedServiceDirectory.hpp:86
virtual void deregisterService(const std::string &regex, ServiceDirectoryEntry::Field field)
Definition: DistributedServiceDirectory.cpp:104
Definition: DistributedServiceDirectory.cpp:5
virtual ~DistributedServiceDirectory()
Definition: DistributedServiceDirectory.cpp:23