Handles a connection to a service. If it's a non-persistent client, automatically disconnects when its first service call has finished. More...
#include <service_server_link.h>
| Classes | |
| struct | CallInfo | 
| Public Types | |
| typedef std::map< std::string, std::string > | M_string | 
| Public Member Functions | |
| bool | call (const SerializedMessage &req, SerializedMessage &resp) | 
| Blocking call the service this client is connected to. | |
| const ConnectionPtr & | getConnection () const | 
| const std::string & | getRequestMD5Sum () const | 
| const std::string & | getResponseMD5Sum () const | 
| const std::string & | getServiceName () const | 
| bool | initialize (const ConnectionPtr &connection) | 
| bool | isPersistent () const | 
| Returns whether this is a persistent connection. | |
| bool | isValid () const | 
| Returns whether this client is still valid, ie. its connection has not been dropped. | |
| ServiceServerLink (const std::string &service_name, bool persistent, const std::string &request_md5sum, const std::string &response_md5sum, const M_string &header_values) | |
| virtual | ~ServiceServerLink () | 
| Private Types | |
| typedef boost::shared_ptr < CallInfo > | CallInfoPtr | 
| typedef std::queue< CallInfoPtr > | Q_CallInfo | 
| Private Member Functions | |
| void | callFinished () | 
| Called when the currently queued call has finished. Clears out the current call, notifying it that it has finished, then calls processNextCall() | |
| void | cancelCall (const CallInfoPtr &info) | 
| Cancel a queued call, notifying it that it has failed. | |
| void | clearCalls () | 
| Clear all calls, notifying them that they've failed. | |
| void | onConnectionDropped (const ConnectionPtr &conn) | 
| bool | onHeaderReceived (const ConnectionPtr &conn, const Header &header) | 
| void | onHeaderWritten (const ConnectionPtr &conn) | 
| void | onRequestWritten (const ConnectionPtr &conn) | 
| void | onResponse (const ConnectionPtr &conn, const boost::shared_array< uint8_t > &buffer, uint32_t size, bool success) | 
| void | onResponseOkAndLength (const ConnectionPtr &conn, const boost::shared_array< uint8_t > &buffer, uint32_t size, bool success) | 
| void | processNextCall () | 
| Pops the next call off the queue if one is available. If this is a non-persistent connection and the queue is empty it will also drop the connection. | |
| Private Attributes | |
| Q_CallInfo | call_queue_ | 
| boost::mutex | call_queue_mutex_ | 
| ConnectionPtr | connection_ | 
| CallInfoPtr | current_call_ | 
| bool | dropped_ | 
| M_string | extra_outgoing_header_values_ | 
| bool | header_read_ | 
| bool | header_written_ | 
| bool | persistent_ | 
| std::string | request_md5sum_ | 
| std::string | response_md5sum_ | 
| std::string | service_name_ | 
Handles a connection to a service. If it's a non-persistent client, automatically disconnects when its first service call has finished.
Definition at line 58 of file service_server_link.h.
| typedef boost::shared_ptr<CallInfo> ros::ServiceServerLink::CallInfoPtr  [private] | 
Definition at line 76 of file service_server_link.h.
| typedef std::map<std::string, std::string> ros::ServiceServerLink::M_string | 
Definition at line 80 of file service_server_link.h.
| typedef std::queue<CallInfoPtr> ros::ServiceServerLink::Q_CallInfo  [private] | 
Definition at line 77 of file service_server_link.h.
| ros::ServiceServerLink::ServiceServerLink | ( | const std::string & | service_name, | 
| bool | persistent, | ||
| const std::string & | request_md5sum, | ||
| const std::string & | response_md5sum, | ||
| const M_string & | header_values | ||
| ) | 
Definition at line 50 of file service_server_link.cpp.
| ros::ServiceServerLink::~ServiceServerLink | ( | ) |  [virtual] | 
Definition at line 63 of file service_server_link.cpp.
| bool ros::ServiceServerLink::call | ( | const SerializedMessage & | req, | 
| SerializedMessage & | resp | ||
| ) | 
Blocking call the service this client is connected to.
If there is already a call happening in another thread, this will queue up the call and still block until it has finished.
Definition at line 324 of file service_server_link.cpp.
| void ros::ServiceServerLink::callFinished | ( | ) |  [private] | 
Called when the currently queued call has finished. Clears out the current call, notifying it that it has finished, then calls processNextCall()
Definition at line 248 of file service_server_link.cpp.
| void ros::ServiceServerLink::cancelCall | ( | const CallInfoPtr & | info | ) |  [private] | 
Cancel a queued call, notifying it that it has failed.
Definition at line 70 of file service_server_link.cpp.
| void ros::ServiceServerLink::clearCalls | ( | ) |  [private] | 
Clear all calls, notifying them that they've failed.
Definition at line 88 of file service_server_link.cpp.
| const ConnectionPtr& ros::ServiceServerLink::getConnection | ( | ) | const  [inline] | 
Definition at line 96 of file service_server_link.h.
| const std::string& ros::ServiceServerLink::getRequestMD5Sum | ( | ) | const  [inline] | 
Definition at line 99 of file service_server_link.h.
| const std::string& ros::ServiceServerLink::getResponseMD5Sum | ( | ) | const  [inline] | 
Definition at line 100 of file service_server_link.h.
| const std::string& ros::ServiceServerLink::getServiceName | ( | ) | const  [inline] | 
Definition at line 98 of file service_server_link.h.
| bool ros::ServiceServerLink::initialize | ( | const ConnectionPtr & | connection | ) | 
Definition at line 114 of file service_server_link.cpp.
| bool ros::ServiceServerLink::isPersistent | ( | ) | const  [inline] | 
Returns whether this is a persistent connection.
Definition at line 94 of file service_server_link.h.
| bool ros::ServiceServerLink::isValid | ( | ) | const | 
Returns whether this client is still valid, ie. its connection has not been dropped.
Definition at line 379 of file service_server_link.cpp.
| void ros::ServiceServerLink::onConnectionDropped | ( | const ConnectionPtr & | conn | ) |  [private] | 
Definition at line 167 of file service_server_link.cpp.
| bool ros::ServiceServerLink::onHeaderReceived | ( | const ConnectionPtr & | conn, | 
| const Header & | header | ||
| ) |  [private] | 
Definition at line 137 of file service_server_link.cpp.
| void ros::ServiceServerLink::onHeaderWritten | ( | const ConnectionPtr & | conn | ) |  [private] | 
Definition at line 132 of file service_server_link.cpp.
| void ros::ServiceServerLink::onRequestWritten | ( | const ConnectionPtr & | conn | ) |  [private] | 
Definition at line 178 of file service_server_link.cpp.
| void ros::ServiceServerLink::onResponse | ( | const ConnectionPtr & | conn, | 
| const boost::shared_array< uint8_t > & | buffer, | ||
| uint32_t | size, | ||
| bool | success | ||
| ) |  [private] | 
Definition at line 225 of file service_server_link.cpp.
| void ros::ServiceServerLink::onResponseOkAndLength | ( | const ConnectionPtr & | conn, | 
| const boost::shared_array< uint8_t > & | buffer, | ||
| uint32_t | size, | ||
| bool | success | ||
| ) |  [private] | 
Definition at line 184 of file service_server_link.cpp.
| void ros::ServiceServerLink::processNextCall | ( | ) |  [private] | 
Pops the next call off the queue if one is available. If this is a non-persistent connection and the queue is empty it will also drop the connection.
Definition at line 275 of file service_server_link.cpp.
Definition at line 148 of file service_server_link.h.
| boost::mutex ros::ServiceServerLink::call_queue_mutex_  [private] | 
Definition at line 149 of file service_server_link.h.
| ConnectionPtr ros::ServiceServerLink::connection_  [private] | 
Definition at line 138 of file service_server_link.h.
Definition at line 151 of file service_server_link.h.
| bool ros::ServiceServerLink::dropped_  [private] | 
Definition at line 153 of file service_server_link.h.
Definition at line 144 of file service_server_link.h.
| bool ros::ServiceServerLink::header_read_  [private] | 
Definition at line 146 of file service_server_link.h.
| bool ros::ServiceServerLink::header_written_  [private] | 
Definition at line 145 of file service_server_link.h.
| bool ros::ServiceServerLink::persistent_  [private] | 
Definition at line 140 of file service_server_link.h.
| std::string ros::ServiceServerLink::request_md5sum_  [private] | 
Definition at line 141 of file service_server_link.h.
| std::string ros::ServiceServerLink::response_md5sum_  [private] | 
Definition at line 142 of file service_server_link.h.
| std::string ros::ServiceServerLink::service_name_  [private] | 
Definition at line 139 of file service_server_link.h.