Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
foxglove_bridge::FoxgloveBridge Class Reference

#include <ros2_foxglove_bridge.hpp>

Inheritance diagram for foxglove_bridge::FoxgloveBridge:
Inheritance graph
[legend]

Classes

struct  PairHash
 

Public Types

using TopicAndDatatype = std::pair< std::string, std::string >
 

Public Member Functions

 FoxgloveBridge (const rclcpp::NodeOptions &options=rclcpp::NodeOptions())
 
 FoxgloveBridge ()=default
 
virtual void onInit ()
 
void rosgraphPollThread ()
 
void updateAdvertisedServices ()
 
void updateAdvertisedTopics (const std::map< std::string, std::vector< std::string >> &topicNamesAndTypes)
 
void updateConnectionGraph (const std::map< std::string, std::vector< std::string >> &topicNamesAndTypes)
 
 ~FoxgloveBridge ()
 
virtual ~FoxgloveBridge ()
 
- Public Member Functions inherited from nodelet::Nodelet
void init (const std::string &name, const M_string &remapping_args, const V_string &my_argv, ros::CallbackQueueInterface *st_queue=NULL, ros::CallbackQueueInterface *mt_queue=NULL)
 
 Nodelet ()
 
virtual ~Nodelet ()
 

Private Member Functions

void clientAdvertise (const foxglove::ClientAdvertisement &advertisement, ConnectionHandle hdl)
 
void clientAdvertise (const foxglove::ClientAdvertisement &channel, ConnectionHandle clientHandle)
 
void clientMessage (const foxglove::ClientMessage &message, ConnectionHandle hdl)
 
void clientMessage (const foxglove::ClientMessage &clientMsg, ConnectionHandle clientHandle)
 
void clientUnadvertise (foxglove::ChannelId channelId, ConnectionHandle hdl)
 
void clientUnadvertise (foxglove::ClientChannelId channelId, ConnectionHandle clientHandle)
 
void getParameters (const std::vector< std::string > &parameters, const std::optional< std::string > &requestId, ConnectionHandle hdl)
 
void getParameters (const std::vector< std::string > &parameters, const std::optional< std::string > &requestId, ConnectionHandle hdl)
 
bool hasCapability (const std::string &capability)
 
bool hasCapability (const std::string &capability)
 
void logHandler (LogLevel level, char const *msg)
 
void logHandler (foxglove::WebSocketLogLevel level, char const *msg)
 
void parameterUpdates (const std::vector< foxglove::Parameter > &parameters)
 
void parameterUpdates (XmlRpc::XmlRpcValue &params, XmlRpc::XmlRpcValue &result)
 
void rosMessageHandler (const foxglove::ChannelId &channelId, ConnectionHandle clientHandle, std::shared_ptr< rclcpp::SerializedMessage > msg)
 
void rosMessageHandler (const foxglove::ChannelId channelId, ConnectionHandle clientHandle, const ros::MessageEvent< ros_babel_fish::BabelFishMessage const > &msgEvent)
 
void serviceRequest (const foxglove::ServiceRequest &request, ConnectionHandle clientHandle)
 
void serviceRequest (const foxglove::ServiceRequest &request, ConnectionHandle clientHandle)
 
void setParameters (const std::vector< foxglove::Parameter > &parameters, const std::optional< std::string > &requestId, ConnectionHandle hdl)
 
void setParameters (const std::vector< foxglove::Parameter > &parameters, const std::optional< std::string > &requestId, ConnectionHandle hdl)
 
void subscribe (foxglove::ChannelId channelId, ConnectionHandle clientHandle)
 
void subscribe (foxglove::ChannelId channelId, ConnectionHandle clientHandle)
 
void subscribeConnectionGraph (bool subscribe)
 
void subscribeParameters (const std::vector< std::string > &parameters, foxglove::ParameterSubscriptionOperation op, ConnectionHandle)
 
void subscribeParameters (const std::vector< std::string > &parameters, foxglove::ParameterSubscriptionOperation op, ConnectionHandle)
 
void unsubscribe (foxglove::ChannelId channelId, ConnectionHandle clientHandle)
 
void unsubscribe (foxglove::ChannelId channelId, ConnectionHandle clientHandle)
 
void updateAdvertisedServices (const std::vector< std::string > &serviceNames)
 
void updateAdvertisedTopics ()
 
void updateAdvertisedTopicsAndServices (const ros::TimerEvent &)
 

Private Attributes

std::unordered_map< foxglove::ServiceId, foxglove::ServiceWithoutId_advertisedServices
 
std::unordered_map< foxglove::ChannelId, foxglove::ChannelWithoutId_advertisedTopics
 
std::vector< std::string > _capabilities
 
PublicationsByClient _clientAdvertisedTopics
 
std::mutex _clientAdvertisementsMutex
 
rclcpp::CallbackGroup::SharedPtr _clientPublishCallbackGroup
 
std::shared_ptr< rclcpp::Subscription< rosgraph_msgs::msg::Clock > > _clockSubscription
 
ros::Subscriber _clockSubscription
 
bool _includeHidden = false
 
size_t _maxQosDepth = DEFAULT_MAX_QOS_DEPTH
 
size_t _maxUpdateMs = size_t(DEFAULT_MAX_UPDATE_MS)
 
foxglove::MessageDefinitionCache _messageDefinitionCache
 
size_t _minQosDepth = DEFAULT_MIN_QOS_DEPTH
 
std::shared_ptr< ParameterInterface_paramInterface
 
std::vector< std::regex > _paramWhitelistPatterns
 
std::shared_mutex _publicationsMutex
 
std::unique_ptr< std::thread > _rosgraphPollThread
 
ros_babel_fish::IntegratedDescriptionProvider _rosTypeInfoProvider
 
std::unique_ptr< foxglove::ServerInterface< ConnectionHandle > > _server
 
std::unordered_map< foxglove::ServiceId, GenericClient::SharedPtr > _serviceClients
 
rclcpp::CallbackGroup::SharedPtr _servicesCallbackGroup
 
std::mutex _servicesMutex
 
std::shared_mutex _servicesMutex
 
std::vector< std::regex > _serviceWhitelistPatterns
 
std::atomic< bool > _subscribeGraphUpdates = false
 
rclcpp::CallbackGroup::SharedPtr _subscriptionCallbackGroup
 
std::unordered_map< foxglove::ChannelId, SubscriptionsByClient_subscriptions
 
std::mutex _subscriptionsMutex
 
std::vector< std::regex > _topicWhitelistPatterns
 
size_t _updateCount = 0
 
ros::Timer _updateTimer
 
bool _useSimTime = false
 
ros::XMLRPCManager xmlrpcServer
 

Additional Inherited Members

- Protected Member Functions inherited from nodelet::Nodelet
ros::CallbackQueueInterfacegetMTCallbackQueue () const
 
ros::NodeHandlegetMTNodeHandle () const
 
ros::NodeHandlegetMTPrivateNodeHandle () const
 
const V_stringgetMyArgv () const
 
const std::string & getName () const
 
ros::NodeHandlegetNodeHandle () const
 
ros::NodeHandlegetPrivateNodeHandle () const
 
const M_stringgetRemappingArgs () const
 
ros::CallbackQueueInterfacegetSTCallbackQueue () const
 
std::string getSuffixedName (const std::string &suffix) const
 

Detailed Description

Definition at line 58 of file ros1_foxglove_bridge_nodelet.cpp.

Member Typedef Documentation

◆ TopicAndDatatype

using foxglove_bridge::FoxgloveBridge::TopicAndDatatype = std::pair<std::string, std::string>

Definition at line 34 of file ros2_foxglove_bridge.hpp.

Constructor & Destructor Documentation

◆ FoxgloveBridge() [1/2]

foxglove_bridge::FoxgloveBridge::FoxgloveBridge ( )
default

◆ ~FoxgloveBridge() [1/2]

foxglove_bridge::FoxgloveBridge::~FoxgloveBridge ( )
inlinevirtual

Definition at line 176 of file ros1_foxglove_bridge_nodelet.cpp.

◆ FoxgloveBridge() [2/2]

foxglove_bridge::FoxgloveBridge::FoxgloveBridge ( const rclcpp::NodeOptions &  options = rclcpp::NodeOptions())

Definition at line 19 of file ros2_foxglove_bridge.cpp.

◆ ~FoxgloveBridge() [2/2]

foxglove_bridge::FoxgloveBridge::~FoxgloveBridge ( )

Member Function Documentation

◆ clientAdvertise() [1/2]

void foxglove_bridge::FoxgloveBridge::clientAdvertise ( const foxglove::ClientAdvertisement advertisement,
ConnectionHandle  hdl 
)
private

◆ clientAdvertise() [2/2]

void foxglove_bridge::FoxgloveBridge::clientAdvertise ( const foxglove::ClientAdvertisement channel,
ConnectionHandle  clientHandle 
)
inlineprivate

Definition at line 279 of file ros1_foxglove_bridge_nodelet.cpp.

◆ clientMessage() [1/2]

void foxglove_bridge::FoxgloveBridge::clientMessage ( const foxglove::ClientMessage message,
ConnectionHandle  hdl 
)
private

◆ clientMessage() [2/2]

void foxglove_bridge::FoxgloveBridge::clientMessage ( const foxglove::ClientMessage clientMsg,
ConnectionHandle  clientHandle 
)
inlineprivate

Definition at line 365 of file ros1_foxglove_bridge_nodelet.cpp.

◆ clientUnadvertise() [1/2]

void foxglove_bridge::FoxgloveBridge::clientUnadvertise ( foxglove::ChannelId  channelId,
ConnectionHandle  hdl 
)
private

◆ clientUnadvertise() [2/2]

void foxglove_bridge::FoxgloveBridge::clientUnadvertise ( foxglove::ClientChannelId  channelId,
ConnectionHandle  clientHandle 
)
inlineprivate

Definition at line 332 of file ros1_foxglove_bridge_nodelet.cpp.

◆ getParameters() [1/2]

void foxglove_bridge::FoxgloveBridge::getParameters ( const std::vector< std::string > &  parameters,
const std::optional< std::string > &  requestId,
ConnectionHandle  hdl 
)
private

◆ getParameters() [2/2]

void foxglove_bridge::FoxgloveBridge::getParameters ( const std::vector< std::string > &  parameters,
const std::optional< std::string > &  requestId,
ConnectionHandle  hdl 
)
inlineprivate

Definition at line 625 of file ros1_foxglove_bridge_nodelet.cpp.

◆ hasCapability() [1/2]

bool foxglove_bridge::FoxgloveBridge::hasCapability ( const std::string &  capability)
private

◆ hasCapability() [2/2]

bool foxglove_bridge::FoxgloveBridge::hasCapability ( const std::string &  capability)
inlineprivate

Definition at line 847 of file ros1_foxglove_bridge_nodelet.cpp.

◆ logHandler() [1/2]

void foxglove_bridge::FoxgloveBridge::logHandler ( LogLevel  level,
char const *  msg 
)
private

◆ logHandler() [2/2]

void foxglove_bridge::FoxgloveBridge::logHandler ( foxglove::WebSocketLogLevel  level,
char const *  msg 
)
inlineprivate

Definition at line 774 of file ros1_foxglove_bridge_nodelet.cpp.

◆ onInit()

virtual void foxglove_bridge::FoxgloveBridge::onInit ( )
inlinevirtual

Implements nodelet::Nodelet.

Definition at line 61 of file ros1_foxglove_bridge_nodelet.cpp.

◆ parameterUpdates() [1/2]

void foxglove_bridge::FoxgloveBridge::parameterUpdates ( const std::vector< foxglove::Parameter > &  parameters)
private

Definition at line 713 of file ros2_foxglove_bridge.cpp.

◆ parameterUpdates() [2/2]

void foxglove_bridge::FoxgloveBridge::parameterUpdates ( XmlRpc::XmlRpcValue params,
XmlRpc::XmlRpcValue result 
)
inlineprivate

Definition at line 750 of file ros1_foxglove_bridge_nodelet.cpp.

◆ rosgraphPollThread()

void foxglove_bridge::FoxgloveBridge::rosgraphPollThread ( )

Definition at line 131 of file ros2_foxglove_bridge.cpp.

◆ rosMessageHandler() [1/2]

void foxglove_bridge::FoxgloveBridge::rosMessageHandler ( const foxglove::ChannelId channelId,
ConnectionHandle  clientHandle,
std::shared_ptr< rclcpp::SerializedMessage >  msg 
)
private

Definition at line 737 of file ros2_foxglove_bridge.cpp.

◆ rosMessageHandler() [2/2]

void foxglove_bridge::FoxgloveBridge::rosMessageHandler ( const foxglove::ChannelId  channelId,
ConnectionHandle  clientHandle,
const ros::MessageEvent< ros_babel_fish::BabelFishMessage const > &  msgEvent 
)
inlineprivate

Definition at line 794 of file ros1_foxglove_bridge_nodelet.cpp.

◆ serviceRequest() [1/2]

void foxglove_bridge::FoxgloveBridge::serviceRequest ( const foxglove::ServiceRequest request,
ConnectionHandle  clientHandle 
)
private

◆ serviceRequest() [2/2]

void foxglove_bridge::FoxgloveBridge::serviceRequest ( const foxglove::ServiceRequest request,
ConnectionHandle  clientHandle 
)
inlineprivate

Definition at line 802 of file ros1_foxglove_bridge_nodelet.cpp.

◆ setParameters() [1/2]

void foxglove_bridge::FoxgloveBridge::setParameters ( const std::vector< foxglove::Parameter > &  parameters,
const std::optional< std::string > &  requestId,
ConnectionHandle  hdl 
)
private

◆ setParameters() [2/2]

void foxglove_bridge::FoxgloveBridge::setParameters ( const std::vector< foxglove::Parameter > &  parameters,
const std::optional< std::string > &  requestId,
ConnectionHandle  hdl 
)
inlineprivate

Definition at line 672 of file ros1_foxglove_bridge_nodelet.cpp.

◆ subscribe() [1/2]

void foxglove_bridge::FoxgloveBridge::subscribe ( foxglove::ChannelId  channelId,
ConnectionHandle  clientHandle 
)
private

◆ subscribe() [2/2]

void foxglove_bridge::FoxgloveBridge::subscribe ( foxglove::ChannelId  channelId,
ConnectionHandle  clientHandle 
)
inlineprivate

Definition at line 191 of file ros1_foxglove_bridge_nodelet.cpp.

◆ subscribeConnectionGraph()

void foxglove_bridge::FoxgloveBridge::subscribeConnectionGraph ( bool  subscribe)
private

Definition at line 405 of file ros2_foxglove_bridge.cpp.

◆ subscribeParameters() [1/2]

void foxglove_bridge::FoxgloveBridge::subscribeParameters ( const std::vector< std::string > &  parameters,
foxglove::ParameterSubscriptionOperation  op,
ConnectionHandle   
)
private

◆ subscribeParameters() [2/2]

void foxglove_bridge::FoxgloveBridge::subscribeParameters ( const std::vector< std::string > &  parameters,
foxglove::ParameterSubscriptionOperation  op,
ConnectionHandle   
)
inlineprivate

Definition at line 720 of file ros1_foxglove_bridge_nodelet.cpp.

◆ unsubscribe() [1/2]

void foxglove_bridge::FoxgloveBridge::unsubscribe ( foxglove::ChannelId  channelId,
ConnectionHandle  clientHandle 
)
private

◆ unsubscribe() [2/2]

void foxglove_bridge::FoxgloveBridge::unsubscribe ( foxglove::ChannelId  channelId,
ConnectionHandle  clientHandle 
)
inlineprivate

Definition at line 241 of file ros1_foxglove_bridge_nodelet.cpp.

◆ updateAdvertisedServices() [1/2]

void foxglove_bridge::FoxgloveBridge::updateAdvertisedServices ( )

Definition at line 266 of file ros2_foxglove_bridge.cpp.

◆ updateAdvertisedServices() [2/2]

void foxglove_bridge::FoxgloveBridge::updateAdvertisedServices ( const std::vector< std::string > &  serviceNames)
inlineprivate

Definition at line 556 of file ros1_foxglove_bridge_nodelet.cpp.

◆ updateAdvertisedTopics() [1/2]

void foxglove_bridge::FoxgloveBridge::updateAdvertisedTopics ( const std::map< std::string, std::vector< std::string >> &  topicNamesAndTypes)

Definition at line 159 of file ros2_foxglove_bridge.cpp.

◆ updateAdvertisedTopics() [2/2]

void foxglove_bridge::FoxgloveBridge::updateAdvertisedTopics ( )
inlineprivate

Definition at line 463 of file ros1_foxglove_bridge_nodelet.cpp.

◆ updateAdvertisedTopicsAndServices()

void foxglove_bridge::FoxgloveBridge::updateAdvertisedTopicsAndServices ( const ros::TimerEvent )
inlineprivate

Definition at line 399 of file ros1_foxglove_bridge_nodelet.cpp.

◆ updateConnectionGraph()

void foxglove_bridge::FoxgloveBridge::updateConnectionGraph ( const std::map< std::string, std::vector< std::string >> &  topicNamesAndTypes)

Definition at line 362 of file ros2_foxglove_bridge.cpp.

Member Data Documentation

◆ _advertisedServices

std::unordered_map< foxglove::ServiceId, foxglove::ServiceWithoutId > foxglove_bridge::FoxgloveBridge::_advertisedServices
private

Definition at line 859 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _advertisedTopics

std::unordered_map< foxglove::ChannelId, foxglove::ChannelWithoutId > foxglove_bridge::FoxgloveBridge::_advertisedTopics
private

Definition at line 857 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _capabilities

std::vector< std::string > foxglove_bridge::FoxgloveBridge::_capabilities
private

Definition at line 869 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _clientAdvertisedTopics

PublicationsByClient foxglove_bridge::FoxgloveBridge::_clientAdvertisedTopics
private

Definition at line 860 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _clientAdvertisementsMutex

std::mutex foxglove_bridge::FoxgloveBridge::_clientAdvertisementsMutex
private

Definition at line 72 of file ros2_foxglove_bridge.hpp.

◆ _clientPublishCallbackGroup

rclcpp::CallbackGroup::SharedPtr foxglove_bridge::FoxgloveBridge::_clientPublishCallbackGroup
private

Definition at line 69 of file ros2_foxglove_bridge.hpp.

◆ _clockSubscription [1/2]

std::shared_ptr<rclcpp::Subscription<rosgraph_msgs::msg::Clock> > foxglove_bridge::FoxgloveBridge::_clockSubscription
private

Definition at line 77 of file ros2_foxglove_bridge.hpp.

◆ _clockSubscription [2/2]

ros::Subscriber foxglove_bridge::FoxgloveBridge::_clockSubscription
private

Definition at line 867 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _includeHidden

bool foxglove_bridge::FoxgloveBridge::_includeHidden = false
private

Definition at line 81 of file ros2_foxglove_bridge.hpp.

◆ _maxQosDepth

size_t foxglove_bridge::FoxgloveBridge::_maxQosDepth = DEFAULT_MAX_QOS_DEPTH
private

Definition at line 76 of file ros2_foxglove_bridge.hpp.

◆ _maxUpdateMs

size_t foxglove_bridge::FoxgloveBridge::_maxUpdateMs = size_t(DEFAULT_MAX_UPDATE_MS)
private

Definition at line 865 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _messageDefinitionCache

foxglove::MessageDefinitionCache foxglove_bridge::FoxgloveBridge::_messageDefinitionCache
private

Definition at line 59 of file ros2_foxglove_bridge.hpp.

◆ _minQosDepth

size_t foxglove_bridge::FoxgloveBridge::_minQosDepth = DEFAULT_MIN_QOS_DEPTH
private

Definition at line 75 of file ros2_foxglove_bridge.hpp.

◆ _paramInterface

std::shared_ptr<ParameterInterface> foxglove_bridge::FoxgloveBridge::_paramInterface
private

Definition at line 62 of file ros2_foxglove_bridge.hpp.

◆ _paramWhitelistPatterns

std::vector<std::regex> foxglove_bridge::FoxgloveBridge::_paramWhitelistPatterns
private

Definition at line 854 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _publicationsMutex

std::shared_mutex foxglove_bridge::FoxgloveBridge::_publicationsMutex
private

Definition at line 862 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _rosgraphPollThread

std::unique_ptr<std::thread> foxglove_bridge::FoxgloveBridge::_rosgraphPollThread
private

Definition at line 74 of file ros2_foxglove_bridge.hpp.

◆ _rosTypeInfoProvider

ros_babel_fish::IntegratedDescriptionProvider foxglove_bridge::FoxgloveBridge::_rosTypeInfoProvider
private

Definition at line 852 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _server

std::unique_ptr< foxglove::ServerInterface< ConnectionHandle > > foxglove_bridge::FoxgloveBridge::_server
private

Definition at line 851 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _serviceClients

std::unordered_map<foxglove::ServiceId, GenericClient::SharedPtr> foxglove_bridge::FoxgloveBridge::_serviceClients
private

Definition at line 67 of file ros2_foxglove_bridge.hpp.

◆ _servicesCallbackGroup

rclcpp::CallbackGroup::SharedPtr foxglove_bridge::FoxgloveBridge::_servicesCallbackGroup
private

Definition at line 70 of file ros2_foxglove_bridge.hpp.

◆ _servicesMutex [1/2]

std::mutex foxglove_bridge::FoxgloveBridge::_servicesMutex
private

Definition at line 73 of file ros2_foxglove_bridge.hpp.

◆ _servicesMutex [2/2]

std::shared_mutex foxglove_bridge::FoxgloveBridge::_servicesMutex
private

Definition at line 863 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _serviceWhitelistPatterns

std::vector< std::regex > foxglove_bridge::FoxgloveBridge::_serviceWhitelistPatterns
private

Definition at line 855 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _subscribeGraphUpdates

std::atomic< bool > foxglove_bridge::FoxgloveBridge::_subscribeGraphUpdates = false
private

Definition at line 870 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _subscriptionCallbackGroup

rclcpp::CallbackGroup::SharedPtr foxglove_bridge::FoxgloveBridge::_subscriptionCallbackGroup
private

Definition at line 68 of file ros2_foxglove_bridge.hpp.

◆ _subscriptions

std::unordered_map< foxglove::ChannelId, SubscriptionsByClient > foxglove_bridge::FoxgloveBridge::_subscriptions
private

Definition at line 858 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _subscriptionsMutex

std::mutex foxglove_bridge::FoxgloveBridge::_subscriptionsMutex
private

Definition at line 861 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _topicWhitelistPatterns

std::vector< std::regex > foxglove_bridge::FoxgloveBridge::_topicWhitelistPatterns
private

Definition at line 853 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _updateCount

size_t foxglove_bridge::FoxgloveBridge::_updateCount = 0
private

Definition at line 866 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _updateTimer

ros::Timer foxglove_bridge::FoxgloveBridge::_updateTimer
private

Definition at line 864 of file ros1_foxglove_bridge_nodelet.cpp.

◆ _useSimTime

bool foxglove_bridge::FoxgloveBridge::_useSimTime = false
private

Definition at line 868 of file ros1_foxglove_bridge_nodelet.cpp.

◆ xmlrpcServer

ros::XMLRPCManager foxglove_bridge::FoxgloveBridge::xmlrpcServer
private

Definition at line 856 of file ros1_foxglove_bridge_nodelet.cpp.


The documentation for this class was generated from the following files:


foxglove_bridge
Author(s): Foxglove
autogenerated on Mon Jul 3 2023 02:12:22