Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef ROSCPP_SERVICE_MANAGER_H
00029 #define ROSCPP_SERVICE_MANAGER_H
00030
00031 #include "forwards.h"
00032 #include "common.h"
00033 #include "advertise_service_options.h"
00034 #include "service_client_options.h"
00035
00036 #include <boost/thread/mutex.hpp>
00037 #include <boost/thread/recursive_mutex.hpp>
00038
00039 namespace ros
00040 {
00041
00042 class ServiceManager;
00043 typedef boost::shared_ptr<ServiceManager> ServiceManagerPtr;
00044
00045 class PollManager;
00046 typedef boost::shared_ptr<PollManager> PollManagerPtr;
00047
00048 class XMLRPCManager;
00049 typedef boost::shared_ptr<XMLRPCManager> XMLRPCManagerPtr;
00050
00051 class ConnectionManager;
00052 typedef boost::shared_ptr<ConnectionManager> ConnectionManagerPtr;
00053
00054 class ROSCPP_DECL ServiceManager
00055 {
00056 public:
00057 static const ServiceManagerPtr& instance();
00058
00059 ServiceManager();
00060 ~ServiceManager();
00061
00072 ServicePublicationPtr lookupServicePublication(const std::string& service);
00073
00083 ServiceServerLinkPtr createServiceServerLink(const std::string& service,
00084 bool persistent,
00085 const std::string& request_md5sum, const std::string& response_md5sum,
00086 const M_string& header_values);
00087
00092 void removeServiceServerLink(const ServiceServerLinkPtr& client);
00093
00100 bool lookupService(const std::string& name, std::string& serv_host, uint32_t& serv_port);
00101
00116 bool unadvertiseService(const std::string& serv_name);
00117
00118 bool advertiseService(const AdvertiseServiceOptions& ops);
00119
00120 void start();
00121 void shutdown();
00122 private:
00123
00124 bool isServiceAdvertised(const std::string& serv_name);
00125 bool unregisterService(const std::string& service);
00126
00127 bool isShuttingDown() { return shutting_down_; }
00128
00129 L_ServicePublication service_publications_;
00130 boost::mutex service_publications_mutex_;
00131
00132 L_ServiceServerLink service_server_links_;
00133 boost::mutex service_server_links_mutex_;
00134
00135 volatile bool shutting_down_;
00136 boost::recursive_mutex shutting_down_mutex_;
00137
00138 PollManagerPtr poll_manager_;
00139 ConnectionManagerPtr connection_manager_;
00140 XMLRPCManagerPtr xmlrpc_manager_;
00141 };
00142
00143 }
00144
00145 #endif // ROSCPP_SERVICE_MANAGER_H
roscpp
Author(s): Morgan Quigley, Josh Faust, Brian Gerkey, Troy Straszheim
autogenerated on Tue Mar 7 2017 03:44:47