<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<tagfile>
  <compound kind="file">
    <name>base64.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/src/</path>
    <filename>base64_8cpp</filename>
    <includes id="base64_8hpp" name="base64.hpp" local="no" imported="no">foxglove_bridge/base64.hpp</includes>
    <namespace>foxglove</namespace>
    <member kind="function">
      <type>std::vector&lt; unsigned char &gt;</type>
      <name>base64Decode</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ab89d6ed7e0449580a5a04a6d8410dea5</anchor>
      <arglist>(const std::string &amp;input)</arglist>
    </member>
    <member kind="function">
      <type>std::string</type>
      <name>base64Encode</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a6e55d2783c2ba70cb3c27dd0e10ced55</anchor>
      <arglist>(const std::string_view &amp;input)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>base64.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/</path>
    <filename>base64_8hpp</filename>
    <namespace>foxglove</namespace>
    <member kind="function">
      <type>std::vector&lt; unsigned char &gt;</type>
      <name>base64Decode</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ab89d6ed7e0449580a5a04a6d8410dea5</anchor>
      <arglist>(const std::string &amp;input)</arglist>
    </member>
    <member kind="function">
      <type>std::string</type>
      <name>base64Encode</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a6e55d2783c2ba70cb3c27dd0e10ced55</anchor>
      <arglist>(const std::string_view &amp;input)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>base64_test.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/tests/</path>
    <filename>base64__test_8cpp</filename>
    <includes id="base64_8hpp" name="base64.hpp" local="no" imported="no">foxglove_bridge/base64.hpp</includes>
    <member kind="function">
      <type>int</type>
      <name>main</name>
      <anchorfile>base64__test_8cpp.html</anchorfile>
      <anchor>a3c04138a5bfe5d72780bb7e82a18e627</anchor>
      <arglist>(int argc, char **argv)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST</name>
      <anchorfile>base64__test_8cpp.html</anchorfile>
      <anchor>a8def9b1f5b905d6fab0fa26b5653c2f0</anchor>
      <arglist>(Base64Test, EncodingTest)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST</name>
      <anchorfile>base64__test_8cpp.html</anchorfile>
      <anchor>af8300508ffb2cf34a3dfd310ce68e9fe</anchor>
      <arglist>(Base64Test, DecodeTest)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST</name>
      <anchorfile>base64__test_8cpp.html</anchorfile>
      <anchor>a07de926b408cb34a779412b70fc5729c</anchor>
      <arglist>(Base64Test, DecodeInvalidStringTest)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>callback_queue.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/</path>
    <filename>callback__queue_8hpp</filename>
    <includes id="websocket__logging_8hpp" name="websocket_logging.hpp" local="yes" imported="no">websocket_logging.hpp</includes>
    <class kind="class">foxglove::CallbackQueue</class>
    <namespace>foxglove</namespace>
  </compound>
  <compound kind="file">
    <name>common.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/</path>
    <filename>common_8hpp</filename>
    <class kind="struct">foxglove::Channel</class>
    <class kind="struct">foxglove::ChannelWithoutId</class>
    <class kind="struct">foxglove::ClientAdvertisement</class>
    <class kind="struct">foxglove::ClientMessage</class>
    <class kind="struct">foxglove::Service</class>
    <class kind="struct">foxglove::ServiceResponse</class>
    <class kind="struct">foxglove::ServiceWithoutId</class>
    <namespace>foxglove</namespace>
    <member kind="typedef">
      <type>uint32_t</type>
      <name>ChannelId</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ad935cd57c55b27cf49e0b0db3a69d2df</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>uint32_t</type>
      <name>ClientChannelId</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a03fcecbf1c0ca1d8d65d45bc15032b8d</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>uint32_t</type>
      <name>ServiceId</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a1d6af3833abee521353eefa7fc05fce8</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>ServiceResponse</type>
      <name>ServiceRequest</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ad6e6048cff7d68b85da1d1e446723f0f</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>uint32_t</type>
      <name>SubscriptionId</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>aa37f63e905602b9c24c83d24029af1b9</anchor>
      <arglist></arglist>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>BinaryOpcode</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a33f7c469f00a795a4bf8d3626f00ee52</anchor>
      <arglist></arglist>
      <enumvalue file="namespacefoxglove.html" anchor="a33f7c469f00a795a4bf8d3626f00ee52ac1abdb6377809fb7f888132f67eb310d">MESSAGE_DATA</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a33f7c469f00a795a4bf8d3626f00ee52ab4cd6bd65f4f2e3e563c5ca25156c0de">TIME_DATA</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a33f7c469f00a795a4bf8d3626f00ee52a393dfab5e6f8c707dd860d1241a90287">SERVICE_CALL_RESPONSE</enumvalue>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>ClientBinaryOpcode</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a990fdc919cb7820389d2c89d455e2516</anchor>
      <arglist></arglist>
      <enumvalue file="namespacefoxglove.html" anchor="a990fdc919cb7820389d2c89d455e2516ac1abdb6377809fb7f888132f67eb310d">MESSAGE_DATA</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a990fdc919cb7820389d2c89d455e2516a2b7fd743fe47ded584cd350097aa9403">SERVICE_CALL_REQUEST</enumvalue>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>WebSocketLogLevel</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a1d4f43cde0d3b3d0b3086302f3a302fd</anchor>
      <arglist></arglist>
      <enumvalue file="namespacefoxglove.html" anchor="a1d4f43cde0d3b3d0b3086302f3a302fdaa603905470e2a5b8c13e96b579ef0dba">Debug</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a1d4f43cde0d3b3d0b3086302f3a302fda4059b0251f66a18cb56f544728796875">Info</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a1d4f43cde0d3b3d0b3086302f3a302fda56525ae64d370c0b448ac0d60710ef17">Warn</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a1d4f43cde0d3b3d0b3086302f3a302fda902b0d55fddef6f8d651fe1035b7d4bd">Error</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a1d4f43cde0d3b3d0b3086302f3a302fda278d01e5af56273bae1bb99a98b370cd">Critical</enumvalue>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>CAPABILITY_CLIENT_PUBLISH</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a54d858f9c625a63ae8cd0bcb05d09436</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>CAPABILITY_CONNECTION_GRAPH</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a2fdb6b05742d261e63f8f369a4ac7b92</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>CAPABILITY_PARAMETERS</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ac4ad801b7f100c8eef73a9c95602931e</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>CAPABILITY_PARAMETERS_SUBSCRIBE</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a0b0d5344d1fd63f2a485a9dc61707868</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>CAPABILITY_SERVICES</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ab31d965ee8f5aa5dbc9a8568c6a98cfc</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>CAPABILITY_TIME</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>accf663111ac756e74aeda11c69925def</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr std::array&lt; const char *, 5 &gt;</type>
      <name>DEFAULT_CAPABILITIES</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ae7f130bad9d716a07fd8bce20abc2968</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>SUPPORTED_SUBPROTOCOL</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a9f8db197dce773c8b7ffa45a43cf4153</anchor>
      <arglist>[]</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>format.py</name>
    <path>/tmp/ws/src/foxglove_bridge/scripts/</path>
    <filename>format_8py</filename>
    <namespace>format</namespace>
    <member kind="function">
      <type>def</type>
      <name>main</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>a5f60a1ab8eff48673abd30fa94731434</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type></type>
      <name>action</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>a0f15a0c8d7ce0c6df4e2765cb2ae50d3</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type></type>
      <name>args</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>a676da881eedb0dc6d861d5fa31ee2786</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>list</type>
      <name>EXTENSIONS</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>a88fe074cc70297d64cd5e217f0c8003f</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type></type>
      <name>help</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>a44cc10070074ac49af90529b99152db8</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>list</type>
      <name>IGNORE_DIRS</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>a3d0eecac788cb7879ac00a667d179f35</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type></type>
      <name>nargs</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>ade44236ca9ce56cdefe31d5743bbbe44</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type></type>
      <name>parser</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>acdd4178907e9eec0923d22a072d7cb59</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>foxglove_bridge.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/src/</path>
    <filename>foxglove__bridge_8cpp</filename>
    <includes id="foxglove__bridge_8hpp" name="foxglove_bridge.hpp" local="yes" imported="no">foxglove_bridge/foxglove_bridge.hpp</includes>
    <namespace>foxglove</namespace>
    <member kind="function">
      <type>const char *</type>
      <name>WebSocketUserAgent</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>af65a6e87f764e4a3a3cf3ef7613d9594</anchor>
      <arglist>()</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>foxglove_bridge.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/</path>
    <filename>foxglove__bridge_8hpp</filename>
    <namespace>foxglove</namespace>
    <member kind="function">
      <type>const char *</type>
      <name>WebSocketUserAgent</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>af65a6e87f764e4a3a3cf3ef7613d9594</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="variable">
      <type>const char</type>
      <name>FOXGLOVE_BRIDGE_GIT_HASH</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ab17b1987b1d0e2bb7e35b433f6c96247</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>const char</type>
      <name>FOXGLOVE_BRIDGE_VERSION</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a1f056b69403dd0be07a51b1ba651f691</anchor>
      <arglist>[]</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>generic_client.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros2_foxglove_bridge/src/</path>
    <filename>generic__client_8cpp</filename>
    <includes id="generic__client_8hpp" name="generic_client.hpp" local="no" imported="no">foxglove_bridge/generic_client.hpp</includes>
    <namespace>foxglove_bridge</namespace>
    <member kind="function">
      <type>std::shared_ptr&lt; void &gt;</type>
      <name>allocate_message</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a19e5c141ceb7050bce5cb0a893741a90</anchor>
      <arglist>(const MessageMembers *members)</arglist>
    </member>
    <member kind="function">
      <type>std::string</type>
      <name>getServiceTypeSupportHandleSymbolName</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>afd0b3aa740692712aec561831d9a8c53</anchor>
      <arglist>(const std::string &amp;serviceType)</arglist>
    </member>
    <member kind="function">
      <type>std::string</type>
      <name>getTypeIntrospectionSymbolName</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a25567cf0881b9e3835d2a600771cfab1</anchor>
      <arglist>(const std::string &amp;serviceType)</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>TYPESUPPORT_INTROSPECTION_LIB_NAME</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a727c50f5d6884269d6031c4728167b12</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>TYPESUPPORT_LIB_NAME</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a262c8959edf7c525e2176d454e2fc60b</anchor>
      <arglist>[]</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>generic_client.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros2_foxglove_bridge/include/foxglove_bridge/</path>
    <filename>generic__client_8hpp</filename>
    <class kind="class">foxglove_bridge::GenericClient</class>
    <namespace>foxglove_bridge</namespace>
  </compound>
  <compound kind="file">
    <name>generic_service.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros1_foxglove_bridge/include/foxglove_bridge/</path>
    <filename>generic__service_8hpp</filename>
    <class kind="struct">ros::service_traits::DataType&lt; foxglove_bridge::GenericService &gt;</class>
    <class kind="struct">foxglove_bridge::GenericService</class>
    <class kind="struct">ros::service_traits::MD5Sum&lt; foxglove_bridge::GenericService &gt;</class>
    <class kind="struct">ros::serialization::Serializer&lt; foxglove_bridge::GenericService &gt;</class>
    <namespace>foxglove_bridge</namespace>
    <namespace>ros::serialization</namespace>
    <namespace>ros::service_traits</namespace>
  </compound>
  <compound kind="file">
    <name>message_definition_cache.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros2_foxglove_bridge/src/</path>
    <filename>message__definition__cache_8cpp</filename>
    <includes id="message__definition__cache_8hpp" name="message_definition_cache.hpp" local="yes" imported="no">foxglove_bridge/message_definition_cache.hpp</includes>
    <namespace>foxglove</namespace>
    <member kind="function" static="yes">
      <type>static std::string</type>
      <name>delimiter</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ab65ed791852a395bb1bda77bc067ef46</anchor>
      <arglist>(const DefinitionIdentifier &amp;definition_identifier)</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>ends_with</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ab5cdfaf8351b1d41c453f9669d595140</anchor>
      <arglist>(const std::string &amp;str, const std::string &amp;suffix)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static const char *</type>
      <name>extension_for_format</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>acbd5097219d395140a5783b165065ede</anchor>
      <arglist>(MessageDefinitionFormat format)</arglist>
    </member>
    <member kind="function">
      <type>std::set&lt; std::string &gt;</type>
      <name>parse_dependencies</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a1b206334b69d4292d948896f92e8ca21</anchor>
      <arglist>(MessageDefinitionFormat format, const std::string &amp;text, const std::string &amp;package_context)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static std::set&lt; std::string &gt;</type>
      <name>parse_idl_dependencies</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a5d141a3e33bd480524dceb85b2dbcf86</anchor>
      <arglist>(const std::string &amp;text)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static std::set&lt; std::string &gt;</type>
      <name>parse_msg_dependencies</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a9cee1b110d0cdf750a7f1751bf21563c</anchor>
      <arglist>(const std::string &amp;text, const std::string &amp;package_context)</arglist>
    </member>
    <member kind="function">
      <type>std::string</type>
      <name>remove_action_subtype</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ac0eda47fe057a510e25bee7614befb43</anchor>
      <arglist>(const std::string action_type)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static std::tuple&lt; std::string, std::string, std::string &gt;</type>
      <name>split_action_msg_definition</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>af46a5bde5edf84a8837159b08d249bc0</anchor>
      <arglist>(const std::string &amp;action_definition)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static std::vector&lt; std::string &gt;</type>
      <name>split_string</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a840e2a6495188a2a6e725e7f2460bd98</anchor>
      <arglist>(const std::string &amp;str, const std::string &amp;delimiter=&quot;\)</arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const std::regex</type>
      <name>IDL_FIELD_TYPE_REGEX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a697aaefee64f54cbe1ba71fd07ee5e6f</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const std::regex</type>
      <name>MSG_FIELD_TYPE_REGEX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>aece59ed00daf5643b8b55998779a0b8d</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const std::regex</type>
      <name>PACKAGE_TYPENAME_REGEX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>afe34dfbadf95712c163f0dd4dedfee5e</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const std::unordered_set&lt; std::string &gt;</type>
      <name>PRIMITIVE_TYPES</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ad9a8c14cf11227b48fcfe182ca200137</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>message_definition_cache.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/</path>
    <filename>message__definition__cache_8hpp</filename>
    <class kind="struct">foxglove::DefinitionIdentifier</class>
    <class kind="struct">foxglove::MessageDefinitionCache::DefinitionIdentifierHash</class>
    <class kind="class">foxglove::DefinitionNotFoundError</class>
    <class kind="class">foxglove::MessageDefinitionCache</class>
    <class kind="struct">foxglove::MessageSpec</class>
    <namespace>foxglove</namespace>
    <member kind="enumeration">
      <type></type>
      <name>MessageDefinitionFormat</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a44f00c3bf6ed807cd04f41af747c9fd1</anchor>
      <arglist></arglist>
      <enumvalue file="namespacefoxglove.html" anchor="a44f00c3bf6ed807cd04f41af747c9fd1a7f22811baaee38a2793307000816bd64">IDL</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a44f00c3bf6ed807cd04f41af747c9fd1a1b7ef95d69775316be10f7090f2d62fa">MSG</enumvalue>
    </member>
    <member kind="function">
      <type>std::set&lt; std::string &gt;</type>
      <name>parse_dependencies</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a1b206334b69d4292d948896f92e8ca21</anchor>
      <arglist>(MessageDefinitionFormat format, const std::string &amp;text, const std::string &amp;package_context)</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>ACTION_FEEDBACK_MESSAGE_SUFFIX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a40c576135466a405fa60b98ba11013fc</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>ACTION_GOAL_SERVICE_SUFFIX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ad755fa16a0f567b1d19a8a86370fde24</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>ACTION_RESULT_SERVICE_SUFFIX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a9b2abf0786840acad0b6bd02f21c4298</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>SERVICE_REQUEST_MESSAGE_SUFFIX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a859013256011ea7e90e1a29512955694</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>SERVICE_RESPONSE_MESSAGE_SUFFIX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a6e0b8fa4e2a03bb146d27c1df7b59e00</anchor>
      <arglist>[]</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>ros1_foxglove_bridge/src/param_utils.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros1_foxglove_bridge/src/</path>
    <filename>ros1__foxglove__bridge_2src_2param__utils_8cpp</filename>
    <namespace>foxglove_bridge</namespace>
    <member kind="function">
      <type>foxglove::ParameterValue</type>
      <name>fromRosParam</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a7311abae6e92806adfe70484e2e51b97</anchor>
      <arglist>(const XmlRpc::XmlRpcValue &amp;value)</arglist>
    </member>
    <member kind="function">
      <type>foxglove::Parameter</type>
      <name>fromRosParam</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ab3d5a67926ffbbaad304e4b02d80ba2d</anchor>
      <arglist>(const std::string &amp;name, const XmlRpc::XmlRpcValue &amp;value)</arglist>
    </member>
    <member kind="function">
      <type>std::vector&lt; std::regex &gt;</type>
      <name>parseRegexPatterns</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ad26d3284ba467a7e40366c5510f49164</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;strings)</arglist>
    </member>
    <member kind="function">
      <type>XmlRpc::XmlRpcValue</type>
      <name>toRosParam</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>afac34a4155bda0917c220d4ba6984033</anchor>
      <arglist>(const foxglove::ParameterValue &amp;param)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>ros2_foxglove_bridge/src/param_utils.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros2_foxglove_bridge/src/</path>
    <filename>ros2__foxglove__bridge_2src_2param__utils_8cpp</filename>
    <includes id="common_8hpp" name="common.hpp" local="no" imported="no">foxglove_bridge/common.hpp</includes>
    <namespace>foxglove_bridge</namespace>
    <member kind="function">
      <type>void</type>
      <name>declareParameters</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ac0e790987ceafb23b45c3f93b0ad997f</anchor>
      <arglist>(rclcpp::Node *node)</arglist>
    </member>
    <member kind="function">
      <type>std::vector&lt; std::regex &gt;</type>
      <name>parseRegexStrings</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ace6f415e4784a32442ff40f13dcfb919</anchor>
      <arglist>(rclcpp::Node *node, const std::vector&lt; std::string &gt; &amp;strings)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>ros1_foxglove_bridge/include/foxglove_bridge/param_utils.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros1_foxglove_bridge/include/foxglove_bridge/</path>
    <filename>ros1__foxglove__bridge_2include_2foxglove__bridge_2param__utils_8hpp</filename>
    <includes id="parameter_8hpp" name="parameter.hpp" local="no" imported="no">foxglove_bridge/parameter.hpp</includes>
    <namespace>foxglove_bridge</namespace>
    <member kind="function">
      <type>foxglove::Parameter</type>
      <name>fromRosParam</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ab3d5a67926ffbbaad304e4b02d80ba2d</anchor>
      <arglist>(const std::string &amp;name, const XmlRpc::XmlRpcValue &amp;value)</arglist>
    </member>
    <member kind="function">
      <type>std::vector&lt; std::regex &gt;</type>
      <name>parseRegexPatterns</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ad26d3284ba467a7e40366c5510f49164</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;strings)</arglist>
    </member>
    <member kind="function">
      <type>XmlRpc::XmlRpcValue</type>
      <name>toRosParam</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>afac34a4155bda0917c220d4ba6984033</anchor>
      <arglist>(const foxglove::ParameterValue &amp;param)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>ros2_foxglove_bridge/include/foxglove_bridge/param_utils.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros2_foxglove_bridge/include/foxglove_bridge/</path>
    <filename>ros2__foxglove__bridge_2include_2foxglove__bridge_2param__utils_8hpp</filename>
    <namespace>foxglove_bridge</namespace>
    <member kind="function">
      <type>void</type>
      <name>declareParameters</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ac0e790987ceafb23b45c3f93b0ad997f</anchor>
      <arglist>(rclcpp::Node *node)</arglist>
    </member>
    <member kind="function">
      <type>std::vector&lt; std::regex &gt;</type>
      <name>parseRegexStrings</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ace6f415e4784a32442ff40f13dcfb919</anchor>
      <arglist>(rclcpp::Node *node, const std::vector&lt; std::string &gt; &amp;strings)</arglist>
    </member>
    <member kind="variable">
      <type>constexpr int64_t</type>
      <name>DEFAULT_MAX_QOS_DEPTH</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a26795b9a2695cc06ebf04d5724ed0e55</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr int64_t</type>
      <name>DEFAULT_MIN_QOS_DEPTH</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a26a4a56107b241ea39b44a2d0a7e590d</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr int64_t</type>
      <name>DEFAULT_SEND_BUFFER_LIMIT</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ae47d82a53869226b0a18535e448e50b4</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_ADDRESS</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>af8bb8f0d1d51111dc5f3cd3c13b7a015</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_CAPABILITIES</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ad75e85f8cfc78b060906930ace5ae688</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_CERTFILE</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a4ae5f9fb4349726f408798c543b44fce</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_CLIENT_TOPIC_WHITELIST</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a872c682d470568548355b708f08eb8e5</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_INCLUDE_HIDDEN</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ac9394a36ab26cf887fc15471de459197</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_KEYFILE</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a12ca21de7cc34557a783db2a63bb5f90</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_MAX_QOS_DEPTH</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a7166f5452d237311ec0bf56566fa3c9f</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_MIN_QOS_DEPTH</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>acfedba16131773ea94bfdb5e64e685f4</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_PARAMETER_WHITELIST</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a40a03cc5f151a50b9ebda340dd9ccf64</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_PORT</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ab8fff03b2cb1b856d6c84326760c421d</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_SEND_BUFFER_LIMIT</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a0a897b5aea3e13422604ac9177f701cb</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_SERVICE_WHITELIST</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a25e749764d6496ee7a91ae5b034a16c9</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_TOPIC_WHITELIST</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a65388cca9ce9ccc9b376ed2eb3196806</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_USE_COMPRESSION</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a71e4bc25a0669eb8b91bda85743da122</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_USETLS</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a5f13b56b56fd29e4c59b308dfad88109</anchor>
      <arglist>[]</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>parameter.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/src/</path>
    <filename>parameter_8cpp</filename>
    <includes id="parameter_8hpp" name="parameter.hpp" local="no" imported="no">foxglove_bridge/parameter.hpp</includes>
    <namespace>foxglove</namespace>
  </compound>
  <compound kind="file">
    <name>parameter.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/</path>
    <filename>parameter_8hpp</filename>
    <class kind="class">foxglove::Parameter</class>
    <class kind="class">foxglove::ParameterValue</class>
    <namespace>foxglove</namespace>
    <member kind="enumeration">
      <type></type>
      <name>ParameterSubscriptionOperation</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>aeb7bbc9e93a0ec061da7b96c53736016</anchor>
      <arglist></arglist>
      <enumvalue file="namespacefoxglove.html" anchor="aeb7bbc9e93a0ec061da7b96c53736016a45b73ef479821e71be9f69a190f2bb86">SUBSCRIBE</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="aeb7bbc9e93a0ec061da7b96c53736016a62b18b8274e34fd701d0b684a32c633f">UNSUBSCRIBE</enumvalue>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>ParameterType</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ae86d385d418d43065d8fea835c3d4c1e</anchor>
      <arglist></arglist>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1ea8265ede4dab4a386295671b626e2e7e5">PARAMETER_NOT_SET</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1eaab5cdef997f2ad9512e39b4bc19033dd">PARAMETER_BOOL</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1eace9276c6c44bbb4fb7fbf1fbdeaaf19d">PARAMETER_INTEGER</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1ea5dd115b50b6ec04a8858d9fa7c234596">PARAMETER_DOUBLE</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1ea335f644af794cbc3700f9d08178d4550">PARAMETER_STRING</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1ea0fb2a7b595b013956be2891c7910dba2">PARAMETER_ARRAY</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1ea00c98b50304eea359d91f0266a05dde4">PARAMETER_STRUCT</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1ea9d6abc473fe8353c5f7c6e34837e97fc">PARAMETER_BYTE_ARRAY</enumvalue>
    </member>
  </compound>
  <compound kind="file">
    <name>parameter_interface.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros2_foxglove_bridge/src/</path>
    <filename>parameter__interface_8cpp</filename>
    <includes id="parameter__interface_8hpp" name="parameter_interface.hpp" local="yes" imported="no">foxglove_bridge/parameter_interface.hpp</includes>
    <includes id="regex__utils_8hpp" name="regex_utils.hpp" local="no" imported="no">foxglove_bridge/regex_utils.hpp</includes>
    <includes id="utils_8hpp" name="utils.hpp" local="no" imported="no">foxglove_bridge/utils.hpp</includes>
    <namespace>foxglove_bridge</namespace>
  </compound>
  <compound kind="file">
    <name>parameter_interface.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros2_foxglove_bridge/include/foxglove_bridge/</path>
    <filename>parameter__interface_8hpp</filename>
    <includes id="parameter_8hpp" name="parameter.hpp" local="no" imported="no">foxglove_bridge/parameter.hpp</includes>
    <class kind="class">foxglove_bridge::ParameterInterface</class>
    <namespace>foxglove_bridge</namespace>
    <member kind="typedef">
      <type>std::vector&lt; foxglove::Parameter &gt;</type>
      <name>ParameterList</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a7ed2b6820f64c9e1391474ada83e7a5e</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::function&lt; void(const ParameterList &amp;)&gt;</type>
      <name>ParamUpdateFunc</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a20d59613a54f5b2947f11b7e24310540</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>regex_utils.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/</path>
    <filename>regex__utils_8hpp</filename>
    <namespace>foxglove</namespace>
    <member kind="function">
      <type>bool</type>
      <name>isWhitelisted</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a2832dab81c2e191c75b6988d54190a83</anchor>
      <arglist>(const std::string &amp;name, const std::vector&lt; std::regex &gt; &amp;regexPatterns)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>ros1_foxglove_bridge_node.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros1_foxglove_bridge/src/</path>
    <filename>ros1__foxglove__bridge__node_8cpp</filename>
    <member kind="function">
      <type>int</type>
      <name>main</name>
      <anchorfile>ros1__foxglove__bridge__node_8cpp.html</anchorfile>
      <anchor>a3c04138a5bfe5d72780bb7e82a18e627</anchor>
      <arglist>(int argc, char **argv)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>ros1_foxglove_bridge_nodelet.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros1_foxglove_bridge/src/</path>
    <filename>ros1__foxglove__bridge__nodelet_8cpp</filename>
    <includes id="foxglove__bridge_8hpp" name="foxglove_bridge.hpp" local="no" imported="no">foxglove_bridge/foxglove_bridge.hpp</includes>
    <includes id="generic__service_8hpp" name="generic_service.hpp" local="no" imported="no">foxglove_bridge/generic_service.hpp</includes>
    <includes id="regex__utils_8hpp" name="regex_utils.hpp" local="no" imported="no">foxglove_bridge/regex_utils.hpp</includes>
    <includes id="server__factory_8hpp" name="server_factory.hpp" local="no" imported="no">foxglove_bridge/server_factory.hpp</includes>
    <includes id="service__utils_8hpp" name="service_utils.hpp" local="no" imported="no">foxglove_bridge/service_utils.hpp</includes>
    <includes id="websocket__server_8hpp" name="websocket_server.hpp" local="no" imported="no">foxglove_bridge/websocket_server.hpp</includes>
    <class kind="class">foxglove_bridge::FoxgloveBridge</class>
    <class kind="struct">foxglove_bridge::FoxgloveBridge::PairHash</class>
    <namespace>foxglove_bridge</namespace>
    <member kind="typedef">
      <type>std::unordered_map&lt; foxglove::ClientChannelId, ros::Publisher &gt;</type>
      <name>ClientPublications</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>af5db5505ec1d917a3e43c6f103a0e4ca</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>websocketpp::connection_hdl</type>
      <name>ConnectionHandle</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ad6cb47322b783e4a9e126b44da0b0d68</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::map&lt; ConnectionHandle, ClientPublications, std::owner_less&lt;&gt; &gt;</type>
      <name>PublicationsByClient</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ac5e6382bbaf1e1109a2c2021aa0b5c28</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::map&lt; ConnectionHandle, ros::Subscriber, std::owner_less&lt;&gt; &gt;</type>
      <name>SubscriptionsByClient</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ae8f63debbbab7d2cf0a7a847e12a0664</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::pair&lt; std::string, std::string &gt;</type>
      <name>TopicAndDatatype</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>af53c29f63301fd3e39dd1e9ef54dcc8c</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>DEFAULT_ADDRESS</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a4f9df82610cdd477ec263afad1777ce7</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr int</type>
      <name>DEFAULT_MAX_UPDATE_MS</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a168e13fff94813371da1f00e7ef428ba</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr int</type>
      <name>DEFAULT_PORT</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>acaf452edffc5ead2499c83372dac0d5b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr double</type>
      <name>MIN_UPDATE_PERIOD_MS</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a221088972e2c238afb3696086b404370</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr uint32_t</type>
      <name>PUBLICATION_QUEUE_LENGTH</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ad8ec1267765a6005c2aee5a7cc5a5a28</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>ROS1_CHANNEL_ENCODING</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a01d39455f6874fe10ab3523e51640fa1</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr int</type>
      <name>SERVICE_TYPE_RETRIEVAL_TIMEOUT_MS</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a634cb581323c74dc879923e8c72d0efc</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr uint32_t</type>
      <name>SUBSCRIPTION_QUEUE_LENGTH</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a782e37858bbb0823f77f5937bec903d3</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>ros2_foxglove_bridge.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros2_foxglove_bridge/src/</path>
    <filename>ros2__foxglove__bridge_8cpp</filename>
    <includes id="ros2__foxglove__bridge_8hpp" name="ros2_foxglove_bridge.hpp" local="no" imported="no">foxglove_bridge/ros2_foxglove_bridge.hpp</includes>
    <namespace>foxglove_bridge</namespace>
  </compound>
  <compound kind="file">
    <name>ros2_foxglove_bridge.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros2_foxglove_bridge/include/foxglove_bridge/</path>
    <filename>ros2__foxglove__bridge_8hpp</filename>
    <includes id="foxglove__bridge_8hpp" name="foxglove_bridge.hpp" local="no" imported="no">foxglove_bridge/foxglove_bridge.hpp</includes>
    <includes id="generic__client_8hpp" name="generic_client.hpp" local="no" imported="no">foxglove_bridge/generic_client.hpp</includes>
    <includes id="message__definition__cache_8hpp" name="message_definition_cache.hpp" local="no" imported="no">foxglove_bridge/message_definition_cache.hpp</includes>
    <includes id="parameter__interface_8hpp" name="parameter_interface.hpp" local="no" imported="no">foxglove_bridge/parameter_interface.hpp</includes>
    <includes id="regex__utils_8hpp" name="regex_utils.hpp" local="no" imported="no">foxglove_bridge/regex_utils.hpp</includes>
    <includes id="server__factory_8hpp" name="server_factory.hpp" local="no" imported="no">foxglove_bridge/server_factory.hpp</includes>
    <includes id="utils_8hpp" name="utils.hpp" local="no" imported="no">foxglove_bridge/utils.hpp</includes>
    <class kind="class">foxglove_bridge::FoxgloveBridge</class>
    <class kind="struct">foxglove_bridge::FoxgloveBridge::PairHash</class>
    <namespace>foxglove_bridge</namespace>
    <member kind="typedef">
      <type>foxglove::WebSocketLogLevel</type>
      <name>LogLevel</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>aaaba2dbeae81f8b4b89a5545e7d16bcf</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>rclcpp::GenericPublisher::SharedPtr</type>
      <name>Publication</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ab55904c1e90e7d934f218adfe7e8a55c</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>rclcpp::GenericSubscription::SharedPtr</type>
      <name>Subscription</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a48320a8beb85dc96453d548264a6714e</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>ros2_foxglove_bridge_node.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros2_foxglove_bridge/src/</path>
    <filename>ros2__foxglove__bridge__node_8cpp</filename>
    <member kind="function">
      <type>int</type>
      <name>main</name>
      <anchorfile>ros2__foxglove__bridge__node_8cpp.html</anchorfile>
      <anchor>a0ddf1224851353fc92bfbff6f499fa97</anchor>
      <arglist>(int argc, char *argv[])</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>serialization.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/src/</path>
    <filename>serialization_8cpp</filename>
    <includes id="base64_8hpp" name="base64.hpp" local="no" imported="no">foxglove_bridge/base64.hpp</includes>
    <includes id="serialization_8hpp" name="serialization.hpp" local="no" imported="no">foxglove_bridge/serialization.hpp</includes>
    <namespace>foxglove</namespace>
    <member kind="function">
      <type>void</type>
      <name>from_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>aac44d7b37f9fe5ed8b89cb8afc8b35bd</anchor>
      <arglist>(const nlohmann::json &amp;j, Channel &amp;c)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>from_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a4559bd5ff67dd027cefedd56f5a00b27</anchor>
      <arglist>(const nlohmann::json &amp;j, ParameterValue &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>from_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a32708f3c41ef223d004a04b7c0e92dd9</anchor>
      <arglist>(const nlohmann::json &amp;j, Parameter &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>from_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a18e2d72b1f1d417bfbabfb30baaecf95</anchor>
      <arglist>(const nlohmann::json &amp;j, Service &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>to_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a6844a3b86f9025af77d4ff80f06e822c</anchor>
      <arglist>(nlohmann::json &amp;j, const Channel &amp;c)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>to_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a0d6c7f48b91a5e196c3f6ad8078dd666</anchor>
      <arglist>(nlohmann::json &amp;j, const ParameterValue &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>to_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a801ca9bb440b7eb71da549e5162d12e0</anchor>
      <arglist>(nlohmann::json &amp;j, const Parameter &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>to_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ad8a13eea138e9531a9c09f1f16611efb</anchor>
      <arglist>(nlohmann::json &amp;j, const Service &amp;p)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>serialization.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/</path>
    <filename>serialization_8hpp</filename>
    <includes id="common_8hpp" name="common.hpp" local="yes" imported="no">common.hpp</includes>
    <includes id="parameter_8hpp" name="parameter.hpp" local="yes" imported="no">parameter.hpp</includes>
    <namespace>foxglove</namespace>
    <member kind="function">
      <type>void</type>
      <name>from_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>aac44d7b37f9fe5ed8b89cb8afc8b35bd</anchor>
      <arglist>(const nlohmann::json &amp;j, Channel &amp;c)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>from_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a4559bd5ff67dd027cefedd56f5a00b27</anchor>
      <arglist>(const nlohmann::json &amp;j, ParameterValue &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>from_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a32708f3c41ef223d004a04b7c0e92dd9</anchor>
      <arglist>(const nlohmann::json &amp;j, Parameter &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>from_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a18e2d72b1f1d417bfbabfb30baaecf95</anchor>
      <arglist>(const nlohmann::json &amp;j, Service &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>uint32_t</type>
      <name>ReadUint32LE</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ac564eaa07c308d0bd8effb1c6b4c19c3</anchor>
      <arglist>(const uint8_t *buf)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>to_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a6844a3b86f9025af77d4ff80f06e822c</anchor>
      <arglist>(nlohmann::json &amp;j, const Channel &amp;c)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>to_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a0d6c7f48b91a5e196c3f6ad8078dd666</anchor>
      <arglist>(nlohmann::json &amp;j, const ParameterValue &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>to_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a801ca9bb440b7eb71da549e5162d12e0</anchor>
      <arglist>(nlohmann::json &amp;j, const Parameter &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>to_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ad8a13eea138e9531a9c09f1f16611efb</anchor>
      <arglist>(nlohmann::json &amp;j, const Service &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>WriteUint32LE</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a2af2c0567e403956361bcac552fc2569</anchor>
      <arglist>(uint8_t *buf, uint32_t val)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>WriteUint64LE</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a8ea1f623e9788eb4bd403fe710fb57fd</anchor>
      <arglist>(uint8_t *buf, uint64_t val)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>serialization_test.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/tests/</path>
    <filename>serialization__test_8cpp</filename>
    <includes id="serialization_8hpp" name="serialization.hpp" local="no" imported="no">foxglove_bridge/serialization.hpp</includes>
    <member kind="function">
      <type>int</type>
      <name>main</name>
      <anchorfile>serialization__test_8cpp.html</anchorfile>
      <anchor>a3c04138a5bfe5d72780bb7e82a18e627</anchor>
      <arglist>(int argc, char **argv)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST</name>
      <anchorfile>serialization__test_8cpp.html</anchorfile>
      <anchor>afa901a8a1887af796efd95290480c5ac</anchor>
      <arglist>(SerializationTest, ServiceRequestSerialization)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>server_factory.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/src/</path>
    <filename>server__factory_8cpp</filename>
    <includes id="server__factory_8hpp" name="server_factory.hpp" local="no" imported="no">foxglove_bridge/server_factory.hpp</includes>
    <includes id="websocket__notls_8hpp" name="websocket_notls.hpp" local="no" imported="no">foxglove_bridge/websocket_notls.hpp</includes>
    <includes id="websocket__server_8hpp" name="websocket_server.hpp" local="no" imported="no">foxglove_bridge/websocket_server.hpp</includes>
    <includes id="websocket__tls_8hpp" name="websocket_tls.hpp" local="no" imported="no">foxglove_bridge/websocket_tls.hpp</includes>
    <namespace>foxglove</namespace>
    <member kind="define">
      <type>#define</type>
      <name>ASIO_STANDALONE</name>
      <anchorfile>server__factory_8cpp.html</anchorfile>
      <anchor>a5b90f4adb6bc09ca319c35c3448ee67a</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>server_factory.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/</path>
    <filename>server__factory_8hpp</filename>
    <includes id="common_8hpp" name="common.hpp" local="yes" imported="no">common.hpp</includes>
    <includes id="server__interface_8hpp" name="server_interface.hpp" local="yes" imported="no">server_interface.hpp</includes>
    <class kind="class">foxglove::ServerFactory</class>
    <namespace>foxglove</namespace>
  </compound>
  <compound kind="file">
    <name>server_interface.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/</path>
    <filename>server__interface_8hpp</filename>
    <includes id="common_8hpp" name="common.hpp" local="yes" imported="no">common.hpp</includes>
    <includes id="parameter_8hpp" name="parameter.hpp" local="yes" imported="no">parameter.hpp</includes>
    <class kind="class">foxglove::ChannelError</class>
    <class kind="class">foxglove::ClientChannelError</class>
    <class kind="class">foxglove::ExeptionWithId</class>
    <class kind="struct">foxglove::ServerHandlers</class>
    <class kind="class">foxglove::ServerInterface</class>
    <class kind="struct">foxglove::ServerOptions</class>
    <class kind="class">foxglove::ServiceError</class>
    <namespace>foxglove</namespace>
    <member kind="typedef">
      <type>std::unordered_map&lt; std::string, std::unordered_set&lt; std::string &gt; &gt;</type>
      <name>MapOfSets</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a20ddfb98e19737c71659301cfbf3c999</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr size_t</type>
      <name>DEFAULT_SEND_BUFFER_LIMIT_BYTES</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a0f4f3ce136f3c84d8b56e8c5b739b8ba</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>service_utils.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros1_foxglove_bridge/src/</path>
    <filename>service__utils_8cpp</filename>
    <includes id="service__utils_8hpp" name="service_utils.hpp" local="no" imported="no">foxglove_bridge/service_utils.hpp</includes>
    <namespace>foxglove_bridge</namespace>
    <member kind="function">
      <type>std::future&lt; std::string &gt;</type>
      <name>retrieveServiceType</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ac2ee0179ad9b48a7f127ee0113daecb0</anchor>
      <arglist>(const std::string &amp;serviceName)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>service_utils.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros1_foxglove_bridge/include/foxglove_bridge/</path>
    <filename>service__utils_8hpp</filename>
    <namespace>foxglove_bridge</namespace>
    <member kind="function">
      <type>std::future&lt; std::string &gt;</type>
      <name>retrieveServiceType</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ac2ee0179ad9b48a7f127ee0113daecb0</anchor>
      <arglist>(const std::string &amp;serviceName)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>ros1_foxglove_bridge/tests/smoke_test.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros1_foxglove_bridge/tests/</path>
    <filename>ros1__foxglove__bridge_2tests_2smoke__test_8cpp</filename>
    <includes id="test__client_8hpp" name="test_client.hpp" local="no" imported="no">foxglove_bridge/test/test_client.hpp</includes>
    <includes id="websocket__client_8hpp" name="websocket_client.hpp" local="no" imported="no">foxglove_bridge/websocket_client.hpp</includes>
    <class kind="class">ParameterTest</class>
    <class kind="class">ServiceTest</class>
    <member kind="define">
      <type>#define</type>
      <name>ASIO_STANDALONE</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a5b90f4adb6bc09ca319c35c3448ee67a</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>int</type>
      <name>main</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a3c04138a5bfe5d72780bb7e82a18e627</anchor>
      <arglist>(int argc, char **argv)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>ac37e674ec0292936ef2f9ad4b324581d</anchor>
      <arglist>(SmokeTest, testConnection)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a0549b1ef425e8bbe44a724e9ccba4e75</anchor>
      <arglist>(SmokeTest, testSubscription)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a4c06360fd500e4dbfef0aa82e9c0745f</anchor>
      <arglist>(SmokeTest, testSubscriptionParallel)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a0efebb1f24ed2120f0e7bbbc21b1ee4d</anchor>
      <arglist>(SmokeTest, testPublishing)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>ac51a96293db34fde6a28e4b9e3d70d9b</anchor>
      <arglist>(ParameterTest, testGetAllParams)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a20ed9c57a535f28a300b0783625f2507</anchor>
      <arglist>(ParameterTest, testGetNonExistingParameters)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a578d10ff4763fa59f2aee31c846f176f</anchor>
      <arglist>(ParameterTest, testGetParameters)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>aec2d142c6a1a91bade55d170c9f41d8a</anchor>
      <arglist>(ParameterTest, testSetParameters)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>adcb2f779c922febfdd0079b7ca7401eb</anchor>
      <arglist>(ParameterTest, testSetParametersWithReqId)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>aabb61508150dccebea622512d8e9c057</anchor>
      <arglist>(ParameterTest, testUnsetParameter)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a7172c8d3e0b684ff986b6491f3cdf124</anchor>
      <arglist>(ParameterTest, testParameterSubscription)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a41e93cac496581590cfb8ee5e7982dd7</anchor>
      <arglist>(ParameterTest, testGetParametersParallel)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>aa806faa22b055e661878a03d649cff5f</anchor>
      <arglist>(ServiceTest, testCallServiceParallel)</arglist>
    </member>
    <member kind="variable">
      <type>constexpr auto</type>
      <name>DEFAULT_TIMEOUT</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a8408e85ae2252d88a9fb97f9f00f71d0</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr uint8_t</type>
      <name>HELLO_WORLD_BINARY</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a9f3c7709317fc5ad1fc4dc44dc1aa299</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr auto</type>
      <name>ONE_SECOND</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a90b603acf3527ba1101f85e738956c77</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>URI</name>
      <anchorfile>ros1__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>aba41715d0a1d633909a320db22c345fe</anchor>
      <arglist>[]</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>ros2_foxglove_bridge/tests/smoke_test.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros2_foxglove_bridge/tests/</path>
    <filename>ros2__foxglove__bridge_2tests_2smoke__test_8cpp</filename>
    <includes id="test__client_8hpp" name="test_client.hpp" local="no" imported="no">foxglove_bridge/test/test_client.hpp</includes>
    <includes id="websocket__client_8hpp" name="websocket_client.hpp" local="no" imported="no">foxglove_bridge/websocket_client.hpp</includes>
    <class kind="class">ExistingPublisherTest</class>
    <class kind="class">ParameterTest</class>
    <class kind="class">ServiceTest</class>
    <member kind="define">
      <type>#define</type>
      <name>ASIO_STANDALONE</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a5b90f4adb6bc09ca319c35c3448ee67a</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>std::shared_ptr&lt; T &gt;</type>
      <name>deserializeMsg</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a34ad476dd2f21f4af1960f5aed34cc6f</anchor>
      <arglist>(const rcl_serialized_message_t *msg)</arglist>
    </member>
    <member kind="function">
      <type>int</type>
      <name>main</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a3c04138a5bfe5d72780bb7e82a18e627</anchor>
      <arglist>(int argc, char **argv)</arglist>
    </member>
    <member kind="function">
      <type>std::shared_ptr&lt; rclcpp::SerializedMessage &gt;</type>
      <name>serializeMsg</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a7eeffa258de5b912f63f652578edae21</anchor>
      <arglist>(const T *msg)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>ac37e674ec0292936ef2f9ad4b324581d</anchor>
      <arglist>(SmokeTest, testConnection)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a0549b1ef425e8bbe44a724e9ccba4e75</anchor>
      <arglist>(SmokeTest, testSubscription)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a4c06360fd500e4dbfef0aa82e9c0745f</anchor>
      <arglist>(SmokeTest, testSubscriptionParallel)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a0efebb1f24ed2120f0e7bbbc21b1ee4d</anchor>
      <arglist>(SmokeTest, testPublishing)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>ae85968e543e52a1ba499d541ff5640e8</anchor>
      <arglist>(ExistingPublisherTest, testPublishingWithExistingPublisher)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>ac51a96293db34fde6a28e4b9e3d70d9b</anchor>
      <arglist>(ParameterTest, testGetAllParams)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a20ed9c57a535f28a300b0783625f2507</anchor>
      <arglist>(ParameterTest, testGetNonExistingParameters)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a578d10ff4763fa59f2aee31c846f176f</anchor>
      <arglist>(ParameterTest, testGetParameters)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>aec2d142c6a1a91bade55d170c9f41d8a</anchor>
      <arglist>(ParameterTest, testSetParameters)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>adcb2f779c922febfdd0079b7ca7401eb</anchor>
      <arglist>(ParameterTest, testSetParametersWithReqId)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>aabb61508150dccebea622512d8e9c057</anchor>
      <arglist>(ParameterTest, testUnsetParameter)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a7172c8d3e0b684ff986b6491f3cdf124</anchor>
      <arglist>(ParameterTest, testParameterSubscription)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a41e93cac496581590cfb8ee5e7982dd7</anchor>
      <arglist>(ParameterTest, testGetParametersParallel)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST_F</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>aa806faa22b055e661878a03d649cff5f</anchor>
      <arglist>(ServiceTest, testCallServiceParallel)</arglist>
    </member>
    <member kind="variable">
      <type>constexpr auto</type>
      <name>DEFAULT_TIMEOUT</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a8408e85ae2252d88a9fb97f9f00f71d0</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr uint8_t</type>
      <name>HELLO_WORLD_BINARY</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a9f3c7709317fc5ad1fc4dc44dc1aa299</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr auto</type>
      <name>ONE_SECOND</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>a90b603acf3527ba1101f85e738956c77</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>URI</name>
      <anchorfile>ros2__foxglove__bridge_2tests_2smoke__test_8cpp.html</anchorfile>
      <anchor>aba41715d0a1d633909a320db22c345fe</anchor>
      <arglist>[]</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>test_client.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/src/test/</path>
    <filename>test__client_8cpp</filename>
    <includes id="serialization_8hpp" name="serialization.hpp" local="no" imported="no">foxglove_bridge/serialization.hpp</includes>
    <includes id="test__client_8hpp" name="test_client.hpp" local="no" imported="no">foxglove_bridge/test/test_client.hpp</includes>
    <includes id="websocket__client_8hpp" name="websocket_client.hpp" local="no" imported="no">foxglove_bridge/websocket_client.hpp</includes>
    <namespace>foxglove</namespace>
    <member kind="define">
      <type>#define</type>
      <name>ASIO_STANDALONE</name>
      <anchorfile>test__client_8cpp.html</anchorfile>
      <anchor>a5b90f4adb6bc09ca319c35c3448ee67a</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>std::vector&lt; uint8_t &gt;</type>
      <name>connectClientAndReceiveMsg</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a4f3d55ec3d4bf793ba13c81be2ec3851</anchor>
      <arglist>(const std::string &amp;uri, const std::string &amp;topic_name)</arglist>
    </member>
    <member kind="function">
      <type>std::future&lt; std::vector&lt; Parameter &gt; &gt;</type>
      <name>waitForParameters</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>acee4d92e84311cbb5fa214ef5324e5a8</anchor>
      <arglist>(std::shared_ptr&lt; ClientInterface &gt; client, const std::string &amp;requestId=std::string())</arglist>
    </member>
    <member kind="function">
      <type>std::future&lt; Service &gt;</type>
      <name>waitForService</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a3117e7515a5e0f487c66a6170cfaa453</anchor>
      <arglist>(std::shared_ptr&lt; ClientInterface &gt; client, const std::string &amp;serviceName)</arglist>
    </member>
    <member kind="function">
      <type>std::future&lt; ServiceResponse &gt;</type>
      <name>waitForServiceResponse</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a7ad0d1ba6c40feda0f843abf35c42280</anchor>
      <arglist>(std::shared_ptr&lt; ClientInterface &gt; client)</arglist>
    </member>
    <member kind="variable">
      <type>constexpr auto</type>
      <name>DEFAULT_TIMEOUT</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ac0c927dd7dd5929083c9363c2686ef3c</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>test_client.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/test/</path>
    <filename>test__client_8hpp</filename>
    <includes id="parameter_8hpp" name="parameter.hpp" local="yes" imported="no">../parameter.hpp</includes>
    <includes id="websocket__client_8hpp" name="websocket_client.hpp" local="yes" imported="no">../websocket_client.hpp</includes>
    <namespace>foxglove</namespace>
    <member kind="function">
      <type>std::vector&lt; uint8_t &gt;</type>
      <name>connectClientAndReceiveMsg</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a4f3d55ec3d4bf793ba13c81be2ec3851</anchor>
      <arglist>(const std::string &amp;uri, const std::string &amp;topic_name)</arglist>
    </member>
    <member kind="function">
      <type>std::future&lt; std::vector&lt; Parameter &gt; &gt;</type>
      <name>waitForParameters</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>acee4d92e84311cbb5fa214ef5324e5a8</anchor>
      <arglist>(std::shared_ptr&lt; ClientInterface &gt; client, const std::string &amp;requestId=std::string())</arglist>
    </member>
    <member kind="function">
      <type>std::future&lt; Service &gt;</type>
      <name>waitForService</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a3117e7515a5e0f487c66a6170cfaa453</anchor>
      <arglist>(std::shared_ptr&lt; ClientInterface &gt; client, const std::string &amp;serviceName)</arglist>
    </member>
    <member kind="function">
      <type>std::future&lt; ServiceResponse &gt;</type>
      <name>waitForServiceResponse</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a7ad0d1ba6c40feda0f843abf35c42280</anchor>
      <arglist>(std::shared_ptr&lt; ClientInterface &gt; client)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>utils.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/ros2_foxglove_bridge/include/foxglove_bridge/</path>
    <filename>utils_8hpp</filename>
    <namespace>foxglove_bridge</namespace>
    <member kind="function">
      <type>std::pair&lt; std::string, std::string &gt;</type>
      <name>getNodeAndNodeNamespace</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a44864d815124e4619f6ba2a39ddcda90</anchor>
      <arglist>(const std::string &amp;fqnNodeName)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>version_test.cpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/tests/</path>
    <filename>version__test_8cpp</filename>
    <includes id="foxglove__bridge_8hpp" name="foxglove_bridge.hpp" local="no" imported="no">foxglove_bridge/foxglove_bridge.hpp</includes>
    <member kind="function">
      <type>int</type>
      <name>main</name>
      <anchorfile>version__test_8cpp.html</anchorfile>
      <anchor>a3c04138a5bfe5d72780bb7e82a18e627</anchor>
      <arglist>(int argc, char **argv)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>TEST</name>
      <anchorfile>version__test_8cpp.html</anchorfile>
      <anchor>a4ed79f461520d03f7c6cdb53e24fec3d</anchor>
      <arglist>(VersionTest, TestWebSocketVersion)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>websocket_client.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/</path>
    <filename>websocket__client_8hpp</filename>
    <includes id="common_8hpp" name="common.hpp" local="yes" imported="no">common.hpp</includes>
    <includes id="parameter_8hpp" name="parameter.hpp" local="yes" imported="no">parameter.hpp</includes>
    <includes id="serialization_8hpp" name="serialization.hpp" local="yes" imported="no">serialization.hpp</includes>
    <class kind="class">foxglove::Client</class>
    <class kind="class">foxglove::ClientInterface</class>
    <namespace>foxglove</namespace>
    <member kind="typedef">
      <type>std::function&lt; void(const uint8_t *, size_t)&gt;</type>
      <name>BinaryMessageHandler</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>aaf8ba4176a525e406f946b264666ee69</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>websocketpp::frame::opcode::value</type>
      <name>OpCode</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a9eb8ab5e0673cb9580ccf6889b7350f8</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::function&lt; void(const std::string &amp;)&gt;</type>
      <name>TextMessageHandler</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a8c2efecfb7d376f2ce15f9ba2f590f15</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>to_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a8bfddba95173637eaf359f7a26654967</anchor>
      <arglist>(nlohmann::json &amp;j, const ClientAdvertisement &amp;p)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>websocket_logging.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/</path>
    <filename>websocket__logging_8hpp</filename>
    <includes id="common_8hpp" name="common.hpp" local="yes" imported="no">common.hpp</includes>
    <class kind="class">foxglove::CallbackLogger</class>
    <namespace>foxglove</namespace>
    <member kind="typedef">
      <type>std::function&lt; void(WebSocketLogLevel, char const  *)&gt;</type>
      <name>LogCallback</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a4f040c4285d4d79580e99a6086bc8a44</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>std::string</type>
      <name>IPAddressToString</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ad5720eb3489f04cef937afb8d6555e6a</anchor>
      <arglist>(const asio::ip::address &amp;addr)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>NoOpLogCallback</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a5a0ff45d39b9fac3c33e17254d5cba46</anchor>
      <arglist>(WebSocketLogLevel, char const *)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>websocket_notls.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/</path>
    <filename>websocket__notls_8hpp</filename>
    <includes id="websocket__logging_8hpp" name="websocket_logging.hpp" local="yes" imported="no">./websocket_logging.hpp</includes>
    <class kind="struct">foxglove::WebSocketNoTls::permessage_deflate_config</class>
    <class kind="struct">foxglove::WebSocketNoTls::transport_config</class>
    <class kind="struct">foxglove::WebSocketNoTls</class>
    <namespace>foxglove</namespace>
  </compound>
  <compound kind="file">
    <name>websocket_server.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/</path>
    <filename>websocket__server_8hpp</filename>
    <includes id="callback__queue_8hpp" name="callback_queue.hpp" local="yes" imported="no">callback_queue.hpp</includes>
    <includes id="common_8hpp" name="common.hpp" local="yes" imported="no">common.hpp</includes>
    <includes id="parameter_8hpp" name="parameter.hpp" local="yes" imported="no">parameter.hpp</includes>
    <includes id="regex__utils_8hpp" name="regex_utils.hpp" local="yes" imported="no">regex_utils.hpp</includes>
    <includes id="serialization_8hpp" name="serialization.hpp" local="yes" imported="no">serialization.hpp</includes>
    <includes id="server__interface_8hpp" name="server_interface.hpp" local="yes" imported="no">server_interface.hpp</includes>
    <includes id="websocket__logging_8hpp" name="websocket_logging.hpp" local="yes" imported="no">websocket_logging.hpp</includes>
    <class kind="struct">foxglove::Server::ClientInfo</class>
    <class kind="class">foxglove::Server</class>
    <namespace>foxglove</namespace>
    <member kind="define">
      <type>#define</type>
      <name>FOXGLOVE_DEBOUNCE</name>
      <anchorfile>websocket__server_8hpp.html</anchorfile>
      <anchor>a933c2061c64dde9a4ad8325e4c1fe582</anchor>
      <arglist>(f, ms)</arglist>
    </member>
    <member kind="typedef">
      <type>websocketpp::connection_hdl</type>
      <name>ConnHandle</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>aa207f302060294b12fcad3bc01e6ebd1</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>nlohmann::json</type>
      <name>json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a96428a14df599319249110aba48c9b1b</anchor>
      <arglist></arglist>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>StatusLevel</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a7ea673aa2159847e2b72e02c4bd0b506</anchor>
      <arglist></arglist>
      <enumvalue file="namespacefoxglove.html" anchor="a7ea673aa2159847e2b72e02c4bd0b506a4059b0251f66a18cb56f544728796875">Info</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a7ea673aa2159847e2b72e02c4bd0b506a0eaadb4fcb48a0a0ed7bc9868be9fbaa">Warning</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a7ea673aa2159847e2b72e02c4bd0b506a902b0d55fddef6f8d651fe1035b7d4bd">Error</enumvalue>
    </member>
    <member kind="function">
      <type>constexpr uint32_t</type>
      <name>Integer</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a1d96c766e22e4e41466bf80c52c0de40</anchor>
      <arglist>(const std::string_view str)</arglist>
    </member>
    <member kind="function">
      <type>constexpr websocketpp::log::level</type>
      <name>StatusLevelToLogLevel</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a743a76e0cdf4c217baeea606229b0d06</anchor>
      <arglist>(StatusLevel level)</arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const websocketpp::log::level</type>
      <name>APP</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a9d0c1e03fbad6720dc881e4451f1681c</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>const std::unordered_map&lt; ClientBinaryOpcode, std::string &gt;</type>
      <name>CAPABILITY_BY_CLIENT_BINARY_OPERATION</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ae9686db20ee63a2a65f305d55bfc04ec</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>const std::unordered_map&lt; std::string, std::string &gt;</type>
      <name>CAPABILITY_BY_CLIENT_OPERATION</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a9c133f260074b0138b170487e0546be7</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const websocketpp::log::level</type>
      <name>RECOVERABLE</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a4d629192b25a9d9895611523d444f622</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const websocketpp::log::level</type>
      <name>WARNING</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a3a4c8b1132fc596b01ed7dc637234b78</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>websocket_tls.hpp</name>
    <path>/tmp/ws/src/foxglove_bridge/foxglove_bridge_base/include/foxglove_bridge/</path>
    <filename>websocket__tls_8hpp</filename>
    <includes id="websocket__logging_8hpp" name="websocket_logging.hpp" local="yes" imported="no">./websocket_logging.hpp</includes>
    <class kind="struct">foxglove::WebSocketTls::permessage_deflate_config</class>
    <class kind="struct">foxglove::WebSocketTls::transport_config</class>
    <class kind="struct">foxglove::WebSocketTls</class>
    <namespace>foxglove</namespace>
  </compound>
  <compound kind="class">
    <name>foxglove::CallbackLogger</name>
    <filename>classfoxglove_1_1CallbackLogger.html</filename>
    <member kind="typedef">
      <type>websocketpp::log::channel_type_hint</type>
      <name>channel_type_hint</name>
      <anchorfile>classfoxglove_1_1CallbackLogger.html</anchorfile>
      <anchor>ab639f415ee4fd33dcb1ea33ece449ed3</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>CallbackLogger</name>
      <anchorfile>classfoxglove_1_1CallbackLogger.html</anchorfile>
      <anchor>ad9b83b4d08539b84e0e53c12a139262a</anchor>
      <arglist>(channel_type_hint::value hint=channel_type_hint::access)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>CallbackLogger</name>
      <anchorfile>classfoxglove_1_1CallbackLogger.html</anchorfile>
      <anchor>a06cb1714622a3f1e766a81195c453aff</anchor>
      <arglist>(websocketpp::log::level channels, channel_type_hint::value hint=channel_type_hint::access)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>clear_channels</name>
      <anchorfile>classfoxglove_1_1CallbackLogger.html</anchorfile>
      <anchor>a10a37da88cb2f28eab7ae7481a17a7b8</anchor>
      <arglist>(websocketpp::log::level channels)</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>dynamic_test</name>
      <anchorfile>classfoxglove_1_1CallbackLogger.html</anchorfile>
      <anchor>afc176d51fc8c0a91701b38c97870b8a3</anchor>
      <arglist>(websocketpp::log::level channel)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>set_callback</name>
      <anchorfile>classfoxglove_1_1CallbackLogger.html</anchorfile>
      <anchor>a0a98df0747257783b7898ff9e967b3f1</anchor>
      <arglist>(LogCallback callback)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>set_channels</name>
      <anchorfile>classfoxglove_1_1CallbackLogger.html</anchorfile>
      <anchor>a4b064754ae16e909557f590291ae6110</anchor>
      <arglist>(websocketpp::log::level channels)</arglist>
    </member>
    <member kind="function">
      <type>constexpr bool</type>
      <name>static_test</name>
      <anchorfile>classfoxglove_1_1CallbackLogger.html</anchorfile>
      <anchor>ae8d0f93226bd1a4c7662517bee0e59e9</anchor>
      <arglist>(websocketpp::log::level channel) const</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>write</name>
      <anchorfile>classfoxglove_1_1CallbackLogger.html</anchorfile>
      <anchor>a293883f921556401d308874fe83e2a60</anchor>
      <arglist>(websocketpp::log::level channel, std::string const &amp;msg)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>write</name>
      <anchorfile>classfoxglove_1_1CallbackLogger.html</anchorfile>
      <anchor>ad0ff3e09b01ba88f2c94db9efbba3f1e</anchor>
      <arglist>(websocketpp::log::level channel, char const *msg)</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>LogCallback</type>
      <name>_callback</name>
      <anchorfile>classfoxglove_1_1CallbackLogger.html</anchorfile>
      <anchor>a35c81d86154daab34ba920481a8876b1</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>channel_type_hint::value</type>
      <name>_channelTypeHint</name>
      <anchorfile>classfoxglove_1_1CallbackLogger.html</anchorfile>
      <anchor>aa3684a62ab25a8e602d895f05e9db2e4</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>websocketpp::log::level</type>
      <name>_dynamicChannels</name>
      <anchorfile>classfoxglove_1_1CallbackLogger.html</anchorfile>
      <anchor>ad29ec4ba711cf3080e706ed95baa38a4</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>websocketpp::log::level const</type>
      <name>_staticChannels</name>
      <anchorfile>classfoxglove_1_1CallbackLogger.html</anchorfile>
      <anchor>abcc9b12b165a3f486d289fa8ea06a810</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove::CallbackQueue</name>
    <filename>classfoxglove_1_1CallbackQueue.html</filename>
    <member kind="function">
      <type>void</type>
      <name>addCallback</name>
      <anchorfile>classfoxglove_1_1CallbackQueue.html</anchorfile>
      <anchor>a69a454d5d73f90331611b664c07a0384</anchor>
      <arglist>(std::function&lt; void(void)&gt; cb)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>CallbackQueue</name>
      <anchorfile>classfoxglove_1_1CallbackQueue.html</anchorfile>
      <anchor>ab7e655b04fd4b3301938ddac9a272888</anchor>
      <arglist>(LogCallback logCallback, size_t numThreads=1)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>stop</name>
      <anchorfile>classfoxglove_1_1CallbackQueue.html</anchorfile>
      <anchor>a4c28180f723263cd204a444134c0870d</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>~CallbackQueue</name>
      <anchorfile>classfoxglove_1_1CallbackQueue.html</anchorfile>
      <anchor>a97a5adc8c4e3cbd53e572b285d1f9bb6</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>doWork</name>
      <anchorfile>classfoxglove_1_1CallbackQueue.html</anchorfile>
      <anchor>a99287fe4dfcdb7c183181bd79b9a5cc0</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::deque&lt; std::function&lt; void(void)&gt; &gt;</type>
      <name>_callbackQueue</name>
      <anchorfile>classfoxglove_1_1CallbackQueue.html</anchorfile>
      <anchor>a03089cd3e20de53fe88b2520c1579cd2</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::condition_variable</type>
      <name>_cv</name>
      <anchorfile>classfoxglove_1_1CallbackQueue.html</anchorfile>
      <anchor>a4a25584ec99d1857fb97dbf20e665f0b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>LogCallback</type>
      <name>_logCallback</name>
      <anchorfile>classfoxglove_1_1CallbackQueue.html</anchorfile>
      <anchor>affa542387361f216bc23eb12e14d6c2a</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::mutex</type>
      <name>_mutex</name>
      <anchorfile>classfoxglove_1_1CallbackQueue.html</anchorfile>
      <anchor>a1d818c5b499e809057768690bb8ffe7f</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::atomic&lt; bool &gt;</type>
      <name>_quit</name>
      <anchorfile>classfoxglove_1_1CallbackQueue.html</anchorfile>
      <anchor>a2bc836ca1430c42962e5751bddbcda15</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::vector&lt; std::thread &gt;</type>
      <name>_workerThreads</name>
      <anchorfile>classfoxglove_1_1CallbackQueue.html</anchorfile>
      <anchor>ac284e63071487f2425991baaf1ff2b3a</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove::Channel</name>
    <filename>structfoxglove_1_1Channel.html</filename>
    <base>foxglove::ChannelWithoutId</base>
    <member kind="function">
      <type></type>
      <name>Channel</name>
      <anchorfile>structfoxglove_1_1Channel.html</anchorfile>
      <anchor>a5bacb860de2c6d7d968f593e069b17d9</anchor>
      <arglist>()=default</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Channel</name>
      <anchorfile>structfoxglove_1_1Channel.html</anchorfile>
      <anchor>a9755d4adf37e57a3ad5de3ef9d8d60d3</anchor>
      <arglist>(ChannelId id, ChannelWithoutId ch)</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>operator==</name>
      <anchorfile>structfoxglove_1_1Channel.html</anchorfile>
      <anchor>acaf5ee750f05562dc3b2c4b051430b5b</anchor>
      <arglist>(const Channel &amp;other) const</arglist>
    </member>
    <member kind="variable">
      <type>ChannelId</type>
      <name>id</name>
      <anchorfile>structfoxglove_1_1Channel.html</anchorfile>
      <anchor>a53740873ab8bfdcd67aa584490d41bb0</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove::ChannelError</name>
    <filename>classfoxglove_1_1ChannelError.html</filename>
    <base>ExeptionWithId&lt; ChannelId &gt;</base>
  </compound>
  <compound kind="struct">
    <name>foxglove::ChannelWithoutId</name>
    <filename>structfoxglove_1_1ChannelWithoutId.html</filename>
    <member kind="function">
      <type>bool</type>
      <name>operator==</name>
      <anchorfile>structfoxglove_1_1ChannelWithoutId.html</anchorfile>
      <anchor>a901ca8837a4d4295b560ed8d0003a554</anchor>
      <arglist>(const ChannelWithoutId &amp;other) const</arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>encoding</name>
      <anchorfile>structfoxglove_1_1ChannelWithoutId.html</anchorfile>
      <anchor>a0f175ae94d5b50e53dabee3510187c31</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>schema</name>
      <anchorfile>structfoxglove_1_1ChannelWithoutId.html</anchorfile>
      <anchor>aa71328a9dccebeac1dea627f18229ba0</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::optional&lt; std::string &gt;</type>
      <name>schemaEncoding</name>
      <anchorfile>structfoxglove_1_1ChannelWithoutId.html</anchorfile>
      <anchor>a0afe0359f7777e84fc5243c889f5392f</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>schemaName</name>
      <anchorfile>structfoxglove_1_1ChannelWithoutId.html</anchorfile>
      <anchor>a91e60633daa87636af5bc7f4f636802c</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>topic</name>
      <anchorfile>structfoxglove_1_1ChannelWithoutId.html</anchorfile>
      <anchor>ad3da2ef7478b1fbabdd6f30711402192</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove::Client</name>
    <filename>classfoxglove_1_1Client.html</filename>
    <templarg>ClientConfiguration</templarg>
    <base>foxglove::ClientInterface</base>
    <member kind="typedef">
      <type>websocketpp::client&lt; ClientConfiguration &gt;</type>
      <name>ClientType</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>abcff57443bfdc48dc674fbecb22eb0e4</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>typename ClientType::connection_ptr</type>
      <name>ConnectionPtr</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>ac6d2293682ac2c00f1a7f00b1b2480bb</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>typename ClientType::message_ptr</type>
      <name>MessagePtr</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a32b9386793e5c8ac5c8eabebb9aff60f</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>advertise</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a22f09868ba60b614038104b94e325a60</anchor>
      <arglist>(const std::vector&lt; ClientAdvertisement &gt; &amp;channels) override</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Client</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a7b488da183a39a6587ae90e185175043</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>close</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a92f971c8febc283c4cadf87b2d61e40f</anchor>
      <arglist>() override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>connect</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>ae6b6b53057f675eb4fa27f5dd952c5a6</anchor>
      <arglist>(const std::string &amp;uri, std::function&lt; void(websocketpp::connection_hdl)&gt; onOpenHandler, std::function&lt; void(websocketpp::connection_hdl)&gt; onCloseHandler=nullptr) override</arglist>
    </member>
    <member kind="function">
      <type>std::future&lt; void &gt;</type>
      <name>connect</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>ae4293705dd36030c63fc43e8e8caed61</anchor>
      <arglist>(const std::string &amp;uri) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>getParameters</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a3199a09920ffabcd2625b1f5d0ab23cd</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;parameterNames, const std::optional&lt; std::string &gt; &amp;requestId=std::nullopt) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>messageHandler</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>adef74db596421362e25d843ea04fe0ed</anchor>
      <arglist>(websocketpp::connection_hdl hdl, MessagePtr msg)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>publish</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a203c6296d67541ef2f10e1a04d42fe55</anchor>
      <arglist>(ClientChannelId channelId, const uint8_t *buffer, size_t size) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>sendBinary</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>ab6084265721b141c726dc2edaf5a28e5</anchor>
      <arglist>(const uint8_t *data, size_t dataLength)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>sendServiceRequest</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>af07ffbf06230e6cf7a3234ffb4814ee2</anchor>
      <arglist>(const ServiceRequest &amp;request) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>sendText</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a5dadf6ae771b5fb34089f2281c5b8972</anchor>
      <arglist>(const std::string &amp;payload)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>setBinaryMessageHandler</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>ae1b27e967c55f64a702e9d84c134ca77</anchor>
      <arglist>(BinaryMessageHandler handler) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>setParameters</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a288d442a3a374f7cafe08409e92ef0a8</anchor>
      <arglist>(const std::vector&lt; Parameter &gt; &amp;parameters, const std::optional&lt; std::string &gt; &amp;requestId=std::nullopt) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>setTextMessageHandler</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a37cc096b80281af4216518e27dc97cb5</anchor>
      <arglist>(TextMessageHandler handler) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>subscribe</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a7bca27e6e101273d8d5e51bb42f8713c</anchor>
      <arglist>(const std::vector&lt; std::pair&lt; SubscriptionId, ChannelId &gt;&gt; &amp;subscriptions) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>subscribeParameterUpdates</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a555d3551adea4f44b65da3ba6727a846</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;parameterNames) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>unadvertise</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a51586ccae0d2d3b6820a40a40cf462b2</anchor>
      <arglist>(const std::vector&lt; ClientChannelId &gt; &amp;channelIds) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>unsubscribe</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>ade92f863790de39598f0bec189cceab7</anchor>
      <arglist>(const std::vector&lt; SubscriptionId &gt; &amp;subscriptionIds) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>unsubscribeParameterUpdates</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>ab0e5ccf69207084b7fdec9c480dc286f</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;parameterNames) override</arglist>
    </member>
    <member kind="function" virtualness="virtual">
      <type>virtual</type>
      <name>~Client</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a858bbd013b4f992d619ff998ba837a63</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>BinaryMessageHandler</type>
      <name>_binaryMessageHandler</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>ac8fa0dc2be06de8366b99106ef55c914</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>ConnectionPtr</type>
      <name>_con</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a1a6c446f06664b817d8d82fcaa4d9023</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>ClientType</type>
      <name>_endpoint</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a790e743a0ca64577b325161341dee3d2</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>std::shared_mutex</type>
      <name>_mutex</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a71b123e4057cc4be0577b161f518d66b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>TextMessageHandler</type>
      <name>_textMessageHandler</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a539806ea57a3c8760b28fe465c33199c</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>websocketpp::lib::shared_ptr&lt; websocketpp::lib::thread &gt;</type>
      <name>_thread</name>
      <anchorfile>classfoxglove_1_1Client.html</anchorfile>
      <anchor>a0714e5b7792b44f8c05b3c496965ddb0</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove::ClientAdvertisement</name>
    <filename>structfoxglove_1_1ClientAdvertisement.html</filename>
    <member kind="variable">
      <type>ClientChannelId</type>
      <name>channelId</name>
      <anchorfile>structfoxglove_1_1ClientAdvertisement.html</anchorfile>
      <anchor>a2519e0ee33e4ff7ae7673e02c0c8918f</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>encoding</name>
      <anchorfile>structfoxglove_1_1ClientAdvertisement.html</anchorfile>
      <anchor>ae6b9148cc43f3ee14c34339d345dcabe</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::vector&lt; uint8_t &gt;</type>
      <name>schema</name>
      <anchorfile>structfoxglove_1_1ClientAdvertisement.html</anchorfile>
      <anchor>ada3f52b39140b2ba18710b470ee786f6</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>schemaName</name>
      <anchorfile>structfoxglove_1_1ClientAdvertisement.html</anchorfile>
      <anchor>a996461b668b34cd2e2cfc287ef2db550</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>topic</name>
      <anchorfile>structfoxglove_1_1ClientAdvertisement.html</anchorfile>
      <anchor>a1ab922de233946b0430af0381d213d42</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove::ClientChannelError</name>
    <filename>classfoxglove_1_1ClientChannelError.html</filename>
    <base>ExeptionWithId&lt; ClientChannelId &gt;</base>
  </compound>
  <compound kind="struct">
    <name>foxglove::Server::ClientInfo</name>
    <filename>structfoxglove_1_1Server_1_1ClientInfo.html</filename>
    <member kind="function">
      <type></type>
      <name>ClientInfo</name>
      <anchorfile>structfoxglove_1_1Server_1_1ClientInfo.html</anchorfile>
      <anchor>a5643a68286a445c77e2d0eb6e0fa42e9</anchor>
      <arglist>(const std::string &amp;name, ConnHandle handle)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>ClientInfo</name>
      <anchorfile>structfoxglove_1_1Server_1_1ClientInfo.html</anchorfile>
      <anchor>aaa923781df25a9b75b300fe87ec45051</anchor>
      <arglist>(const ClientInfo &amp;)=delete</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>ClientInfo</name>
      <anchorfile>structfoxglove_1_1Server_1_1ClientInfo.html</anchorfile>
      <anchor>af744f4c1d031aa7d05e38785e8f102a7</anchor>
      <arglist>(ClientInfo &amp;&amp;)=default</arglist>
    </member>
    <member kind="function">
      <type>ClientInfo &amp;</type>
      <name>operator=</name>
      <anchorfile>structfoxglove_1_1Server_1_1ClientInfo.html</anchorfile>
      <anchor>a0713a2dfa7d6a5c43371227ee1ed845d</anchor>
      <arglist>(const ClientInfo &amp;)=delete</arglist>
    </member>
    <member kind="function">
      <type>ClientInfo &amp;</type>
      <name>operator=</name>
      <anchorfile>structfoxglove_1_1Server_1_1ClientInfo.html</anchorfile>
      <anchor>a1eb1f0be1962d693e75c33c1df018b93</anchor>
      <arglist>(ClientInfo &amp;&amp;)=default</arglist>
    </member>
    <member kind="variable">
      <type>std::unordered_set&lt; ClientChannelId &gt;</type>
      <name>advertisedChannels</name>
      <anchorfile>structfoxglove_1_1Server_1_1ClientInfo.html</anchorfile>
      <anchor>aaaadb0ee42a0d28c98402480511ab6db</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>ConnHandle</type>
      <name>handle</name>
      <anchorfile>structfoxglove_1_1Server_1_1ClientInfo.html</anchorfile>
      <anchor>a2d7b755618a62289636f1000c6d8a7d2</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>name</name>
      <anchorfile>structfoxglove_1_1Server_1_1ClientInfo.html</anchorfile>
      <anchor>a3957e9c1118699c55d6744e684388ac0</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>bool</type>
      <name>subscribedToConnectionGraph</name>
      <anchorfile>structfoxglove_1_1Server_1_1ClientInfo.html</anchorfile>
      <anchor>accac24a79d1b795f8991fd838cd6df56</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::unordered_map&lt; ChannelId, SubscriptionId &gt;</type>
      <name>subscriptionsByChannel</name>
      <anchorfile>structfoxglove_1_1Server_1_1ClientInfo.html</anchorfile>
      <anchor>a7edfcf829681d042ddf45ce7092b4301</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove::ClientInterface</name>
    <filename>classfoxglove_1_1ClientInterface.html</filename>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>advertise</name>
      <anchorfile>classfoxglove_1_1ClientInterface.html</anchorfile>
      <anchor>ab05a4583cfe98d3da405830085d422a1</anchor>
      <arglist>(const std::vector&lt; ClientAdvertisement &gt; &amp;channels)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>close</name>
      <anchorfile>classfoxglove_1_1ClientInterface.html</anchorfile>
      <anchor>ad1a9e718added588ea77ca0c6ee6518b</anchor>
      <arglist>()=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>connect</name>
      <anchorfile>classfoxglove_1_1ClientInterface.html</anchorfile>
      <anchor>a0ee7d1302f196053f06c8298a3594016</anchor>
      <arglist>(const std::string &amp;uri, std::function&lt; void(websocketpp::connection_hdl)&gt; onOpenHandler, std::function&lt; void(websocketpp::connection_hdl)&gt; onCloseHandler=nullptr)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual std::future&lt; void &gt;</type>
      <name>connect</name>
      <anchorfile>classfoxglove_1_1ClientInterface.html</anchorfile>
      <anchor>a2f89a7e5c67bc54047450c184254cd05</anchor>
      <arglist>(const std::string &amp;uri)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>getParameters</name>
      <anchorfile>classfoxglove_1_1ClientInterface.html</anchorfile>
      <anchor>afd3f833d46e011d5923a42b1f6838d67</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;parameterNames, const std::optional&lt; std::string &gt; &amp;requestId)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>publish</name>
      <anchorfile>classfoxglove_1_1ClientInterface.html</anchorfile>
      <anchor>afbace3fdc6764df6e5fbcf292e80e612</anchor>
      <arglist>(ClientChannelId channelId, const uint8_t *buffer, size_t size)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>sendServiceRequest</name>
      <anchorfile>classfoxglove_1_1ClientInterface.html</anchorfile>
      <anchor>afe837696f74a0cff7f4547c74290c296</anchor>
      <arglist>(const ServiceRequest &amp;request)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>setBinaryMessageHandler</name>
      <anchorfile>classfoxglove_1_1ClientInterface.html</anchorfile>
      <anchor>a10a08aa577ff6b751102a7c37ca11b10</anchor>
      <arglist>(BinaryMessageHandler handler)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>setParameters</name>
      <anchorfile>classfoxglove_1_1ClientInterface.html</anchorfile>
      <anchor>a091b25f7d6fbe9fb415cd18ad8a04866</anchor>
      <arglist>(const std::vector&lt; Parameter &gt; &amp;parameters, const std::optional&lt; std::string &gt; &amp;requestId)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>setTextMessageHandler</name>
      <anchorfile>classfoxglove_1_1ClientInterface.html</anchorfile>
      <anchor>a8b1e16d704c4f02282e98fa00231c513</anchor>
      <arglist>(TextMessageHandler handler)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>subscribe</name>
      <anchorfile>classfoxglove_1_1ClientInterface.html</anchorfile>
      <anchor>a51f4451eb6ef86bba0ab0bce723ae20a</anchor>
      <arglist>(const std::vector&lt; std::pair&lt; SubscriptionId, ChannelId &gt;&gt; &amp;subscriptions)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>subscribeParameterUpdates</name>
      <anchorfile>classfoxglove_1_1ClientInterface.html</anchorfile>
      <anchor>a87c3e3bef24872fcc89a1e364ea020bb</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;parameterNames)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>unadvertise</name>
      <anchorfile>classfoxglove_1_1ClientInterface.html</anchorfile>
      <anchor>a7b3292c8ac4904118c1917e4d60dd793</anchor>
      <arglist>(const std::vector&lt; ClientChannelId &gt; &amp;channelIds)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>unsubscribe</name>
      <anchorfile>classfoxglove_1_1ClientInterface.html</anchorfile>
      <anchor>ab882324e967c2a792fb6f82d0173a434</anchor>
      <arglist>(const std::vector&lt; SubscriptionId &gt; &amp;subscriptionIds)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>unsubscribeParameterUpdates</name>
      <anchorfile>classfoxglove_1_1ClientInterface.html</anchorfile>
      <anchor>a3c78500747477dd1eed3478f17df1f50</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;parameterNames)=0</arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove::ClientMessage</name>
    <filename>structfoxglove_1_1ClientMessage.html</filename>
    <member kind="function">
      <type></type>
      <name>ClientMessage</name>
      <anchorfile>structfoxglove_1_1ClientMessage.html</anchorfile>
      <anchor>a5075736a6c75577736a55c9504698785</anchor>
      <arglist>(uint64_t logTime, uint64_t publishTime, uint32_t sequence, const ClientAdvertisement &amp;advertisement, size_t dataLength, const uint8_t *rawData)</arglist>
    </member>
    <member kind="function">
      <type>const uint8_t *</type>
      <name>getData</name>
      <anchorfile>structfoxglove_1_1ClientMessage.html</anchorfile>
      <anchor>a756e126e7b69c34c8f39fd299525c513</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="function">
      <type>std::size_t</type>
      <name>getLength</name>
      <anchorfile>structfoxglove_1_1ClientMessage.html</anchorfile>
      <anchor>a3a57de59336ab6b2c972560417994864</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="variable">
      <type>ClientAdvertisement</type>
      <name>advertisement</name>
      <anchorfile>structfoxglove_1_1ClientMessage.html</anchorfile>
      <anchor>afc45ed2c09d32d2b405c11253d8f7886</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::vector&lt; uint8_t &gt;</type>
      <name>data</name>
      <anchorfile>structfoxglove_1_1ClientMessage.html</anchorfile>
      <anchor>afec76969d713bdb1b3144210b0b6a451</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>size_t</type>
      <name>dataLength</name>
      <anchorfile>structfoxglove_1_1ClientMessage.html</anchorfile>
      <anchor>a3c70dd11db546448f055e04ec188538c</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>uint64_t</type>
      <name>logTime</name>
      <anchorfile>structfoxglove_1_1ClientMessage.html</anchorfile>
      <anchor>a687fe467a24a4bfd157cf8aca8fdf7c0</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>uint64_t</type>
      <name>publishTime</name>
      <anchorfile>structfoxglove_1_1ClientMessage.html</anchorfile>
      <anchor>a3506dfca622bb91cf18f204be459566c</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>uint32_t</type>
      <name>sequence</name>
      <anchorfile>structfoxglove_1_1ClientMessage.html</anchorfile>
      <anchor>a638992fe7b4e94a1af910e828d814680</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const size_t</type>
      <name>MSG_PAYLOAD_OFFSET</name>
      <anchorfile>structfoxglove_1_1ClientMessage.html</anchorfile>
      <anchor>a0a52fb5fcdb783c4f64826ddd782fcbf</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>ros::service_traits::DataType&lt; foxglove_bridge::GenericService &gt;</name>
    <filename>structros_1_1service__traits_1_1DataType_3_01foxglove__bridge_1_1GenericService_01_4.html</filename>
    <member kind="function" static="yes">
      <type>static const char *</type>
      <name>value</name>
      <anchorfile>structros_1_1service__traits_1_1DataType_3_01foxglove__bridge_1_1GenericService_01_4.html</anchorfile>
      <anchor>a1f3fc9a0626a5fccb7d67215b65b5b38</anchor>
      <arglist>(const foxglove_bridge::GenericService &amp;m)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static const char *</type>
      <name>value</name>
      <anchorfile>structros_1_1service__traits_1_1DataType_3_01foxglove__bridge_1_1GenericService_01_4.html</anchorfile>
      <anchor>a231332331416986bc9a4af51dcf27129</anchor>
      <arglist>()</arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove::DefinitionIdentifier</name>
    <filename>structfoxglove_1_1DefinitionIdentifier.html</filename>
    <member kind="function">
      <type>bool</type>
      <name>operator==</name>
      <anchorfile>structfoxglove_1_1DefinitionIdentifier.html</anchorfile>
      <anchor>a05035527465895dbeffea6aacf0009ab</anchor>
      <arglist>(const DefinitionIdentifier &amp;di) const</arglist>
    </member>
    <member kind="variable">
      <type>MessageDefinitionFormat</type>
      <name>format</name>
      <anchorfile>structfoxglove_1_1DefinitionIdentifier.html</anchorfile>
      <anchor>a94bf890ef0d96156f9c4db65946bdbbf</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>package_resource_name</name>
      <anchorfile>structfoxglove_1_1DefinitionIdentifier.html</anchorfile>
      <anchor>af26487ddcec9a73637cfeadec8410fb1</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove::MessageDefinitionCache::DefinitionIdentifierHash</name>
    <filename>structfoxglove_1_1MessageDefinitionCache_1_1DefinitionIdentifierHash.html</filename>
    <member kind="function">
      <type>std::size_t</type>
      <name>operator()</name>
      <anchorfile>structfoxglove_1_1MessageDefinitionCache_1_1DefinitionIdentifierHash.html</anchorfile>
      <anchor>a01abff8c443f7eab416d8eb1cfa5e859</anchor>
      <arglist>(const DefinitionIdentifier &amp;di) const</arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove::DefinitionNotFoundError</name>
    <filename>classfoxglove_1_1DefinitionNotFoundError.html</filename>
    <member kind="function">
      <type></type>
      <name>DefinitionNotFoundError</name>
      <anchorfile>classfoxglove_1_1DefinitionNotFoundError.html</anchorfile>
      <anchor>a7c3b201e248f2006ac763c34eb5a2dba</anchor>
      <arglist>(std::string name)</arglist>
    </member>
    <member kind="function">
      <type>const char *</type>
      <name>what</name>
      <anchorfile>classfoxglove_1_1DefinitionNotFoundError.html</anchorfile>
      <anchor>acd87c694028c4aac11f410de38ddc95f</anchor>
      <arglist>() const noexcept override</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::string</type>
      <name>name_</name>
      <anchorfile>classfoxglove_1_1DefinitionNotFoundError.html</anchorfile>
      <anchor>a549a3411172b2d2f5dab52b526e8f552</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove::ExeptionWithId</name>
    <filename>classfoxglove_1_1ExeptionWithId.html</filename>
    <templarg>IdType</templarg>
    <member kind="function">
      <type></type>
      <name>ExeptionWithId</name>
      <anchorfile>classfoxglove_1_1ExeptionWithId.html</anchorfile>
      <anchor>ad5ea15d17c822f15bedc586352e5db6e</anchor>
      <arglist>(IdType id, const std::string &amp;what_arg)</arglist>
    </member>
    <member kind="function">
      <type>IdType</type>
      <name>id</name>
      <anchorfile>classfoxglove_1_1ExeptionWithId.html</anchorfile>
      <anchor>a063b985227aa5b733e01d61f8e4d050b</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>IdType</type>
      <name>_id</name>
      <anchorfile>classfoxglove_1_1ExeptionWithId.html</anchorfile>
      <anchor>ad50708f6b4e0f3149d9a2c19d489422d</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>ExeptionWithId&lt; ChannelId &gt;</name>
    <filename>classfoxglove_1_1ExeptionWithId.html</filename>
    <member kind="function">
      <type></type>
      <name>ExeptionWithId</name>
      <anchorfile>classfoxglove_1_1ExeptionWithId.html</anchorfile>
      <anchor>ad5ea15d17c822f15bedc586352e5db6e</anchor>
      <arglist>(ChannelId id, const std::string &amp;what_arg)</arglist>
    </member>
    <member kind="function">
      <type>ChannelId</type>
      <name>id</name>
      <anchorfile>classfoxglove_1_1ExeptionWithId.html</anchorfile>
      <anchor>a063b985227aa5b733e01d61f8e4d050b</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ChannelId</type>
      <name>_id</name>
      <anchorfile>classfoxglove_1_1ExeptionWithId.html</anchorfile>
      <anchor>ad50708f6b4e0f3149d9a2c19d489422d</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>ExeptionWithId&lt; ClientChannelId &gt;</name>
    <filename>classfoxglove_1_1ExeptionWithId.html</filename>
    <member kind="function">
      <type></type>
      <name>ExeptionWithId</name>
      <anchorfile>classfoxglove_1_1ExeptionWithId.html</anchorfile>
      <anchor>ad5ea15d17c822f15bedc586352e5db6e</anchor>
      <arglist>(ClientChannelId id, const std::string &amp;what_arg)</arglist>
    </member>
    <member kind="function">
      <type>ClientChannelId</type>
      <name>id</name>
      <anchorfile>classfoxglove_1_1ExeptionWithId.html</anchorfile>
      <anchor>a063b985227aa5b733e01d61f8e4d050b</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ClientChannelId</type>
      <name>_id</name>
      <anchorfile>classfoxglove_1_1ExeptionWithId.html</anchorfile>
      <anchor>ad50708f6b4e0f3149d9a2c19d489422d</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>ExeptionWithId&lt; ServiceId &gt;</name>
    <filename>classfoxglove_1_1ExeptionWithId.html</filename>
    <member kind="function">
      <type></type>
      <name>ExeptionWithId</name>
      <anchorfile>classfoxglove_1_1ExeptionWithId.html</anchorfile>
      <anchor>ad5ea15d17c822f15bedc586352e5db6e</anchor>
      <arglist>(ServiceId id, const std::string &amp;what_arg)</arglist>
    </member>
    <member kind="function">
      <type>ServiceId</type>
      <name>id</name>
      <anchorfile>classfoxglove_1_1ExeptionWithId.html</anchorfile>
      <anchor>a063b985227aa5b733e01d61f8e4d050b</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ServiceId</type>
      <name>_id</name>
      <anchorfile>classfoxglove_1_1ExeptionWithId.html</anchorfile>
      <anchor>ad50708f6b4e0f3149d9a2c19d489422d</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>ExistingPublisherTest</name>
    <filename>classExistingPublisherTest.html</filename>
    <member kind="variable" static="yes">
      <type>static const std::string</type>
      <name>TOPIC_NAME</name>
      <anchorfile>classExistingPublisherTest.html</anchorfile>
      <anchor>a7837db3ee0e3dd343d0b9188ab1321bd</anchor>
      <arglist></arglist>
    </member>
    <member kind="function" protection="protected">
      <type>void</type>
      <name>SetUp</name>
      <anchorfile>classExistingPublisherTest.html</anchorfile>
      <anchor>a21260ea04b87e8b55a3ed469065ffd19</anchor>
      <arglist>() override</arglist>
    </member>
    <member kind="function" protection="protected">
      <type>void</type>
      <name>TearDown</name>
      <anchorfile>classExistingPublisherTest.html</anchorfile>
      <anchor>a3d73319e42994aa07f582a422bb027dd</anchor>
      <arglist>() override</arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>rclcpp::executors::SingleThreadedExecutor</type>
      <name>_executor</name>
      <anchorfile>classExistingPublisherTest.html</anchorfile>
      <anchor>acd9186f6614894c952aa7ea10d3dfc1b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>std::thread</type>
      <name>_executorThread</name>
      <anchorfile>classExistingPublisherTest.html</anchorfile>
      <anchor>a8a716148b868a6d2ed5de2eb6cecbc8b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>rclcpp::Node::SharedPtr</type>
      <name>_node</name>
      <anchorfile>classExistingPublisherTest.html</anchorfile>
      <anchor>a72df54812d3243c68c9b1b401cffec58</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>rclcpp::PublisherBase::SharedPtr</type>
      <name>_publisher</name>
      <anchorfile>classExistingPublisherTest.html</anchorfile>
      <anchor>a314def31fb9e658061f5ea335c337e32</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove_bridge::FoxgloveBridge</name>
    <filename>classfoxglove__bridge_1_1FoxgloveBridge.html</filename>
    <base>nodelet::Nodelet</base>
    <class kind="struct">foxglove_bridge::FoxgloveBridge::PairHash</class>
    <member kind="typedef">
      <type>std::pair&lt; std::string, std::string &gt;</type>
      <name>TopicAndDatatype</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>aa6ea9c84ff4c893d1f339be8d0759caa</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>FoxgloveBridge</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a92cac2e14510dd8aa41a6989135a9627</anchor>
      <arglist>(const rclcpp::NodeOptions &amp;options=rclcpp::NodeOptions())</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>FoxgloveBridge</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a8c068ce2355ead8cbc4fba260520b685</anchor>
      <arglist>()=default</arglist>
    </member>
    <member kind="function" virtualness="virtual">
      <type>virtual void</type>
      <name>onInit</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a774c015fc725324205bbf1efaff928f3</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>rosgraphPollThread</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>ab1e53b619d51b4b0b8e1684b0f110c1d</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>updateAdvertisedServices</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>ae7b8738ac28f0617ee367ca37d8607ea</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>updateAdvertisedTopics</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>af2eac63d47ac42b7fb1921fc0a666531</anchor>
      <arglist>(const std::map&lt; std::string, std::vector&lt; std::string &gt;&gt; &amp;topicNamesAndTypes)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>updateConnectionGraph</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a3e80e74917368b5d0834d32e28429f00</anchor>
      <arglist>(const std::map&lt; std::string, std::vector&lt; std::string &gt;&gt; &amp;topicNamesAndTypes)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>~FoxgloveBridge</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a92789fe96dd866e846cbec555166719c</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function" virtualness="virtual">
      <type>virtual</type>
      <name>~FoxgloveBridge</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a92789fe96dd866e846cbec555166719c</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>clientAdvertise</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a67663e97621e88ef24a21a23b511a0bf</anchor>
      <arglist>(const foxglove::ClientAdvertisement &amp;advertisement, ConnectionHandle hdl)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>clientAdvertise</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a147f8c8d4c70839288d82dc1468d9fae</anchor>
      <arglist>(const foxglove::ClientAdvertisement &amp;channel, ConnectionHandle clientHandle)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>clientMessage</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a87df2f5ff378590bba69c5a97a0b293b</anchor>
      <arglist>(const foxglove::ClientMessage &amp;message, ConnectionHandle hdl)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>clientMessage</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>abbe300af70c24085bb39e02fa4993860</anchor>
      <arglist>(const foxglove::ClientMessage &amp;clientMsg, ConnectionHandle clientHandle)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>clientUnadvertise</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a2adf34e93433f8d0fbb6633f9a7aa669</anchor>
      <arglist>(foxglove::ChannelId channelId, ConnectionHandle hdl)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>clientUnadvertise</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>ae86533d6cae3c34d2ef3591029a5f58b</anchor>
      <arglist>(foxglove::ClientChannelId channelId, ConnectionHandle clientHandle)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>getParameters</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a2045922c56f318921222bf7c94960716</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;parameters, const std::optional&lt; std::string &gt; &amp;requestId, ConnectionHandle hdl)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>getParameters</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a2045922c56f318921222bf7c94960716</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;parameters, const std::optional&lt; std::string &gt; &amp;requestId, ConnectionHandle hdl)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>bool</type>
      <name>hasCapability</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>ab22ac6dca6e62263ff261b52fdb39f9f</anchor>
      <arglist>(const std::string &amp;capability)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>bool</type>
      <name>hasCapability</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>ab22ac6dca6e62263ff261b52fdb39f9f</anchor>
      <arglist>(const std::string &amp;capability)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>logHandler</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>ab7baef33244d6a1512d88726fb45f07f</anchor>
      <arglist>(LogLevel level, char const *msg)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>logHandler</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a1ff6b1e7ad655ee1ab46f52c60d3f5fc</anchor>
      <arglist>(foxglove::WebSocketLogLevel level, char const *msg)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>parameterUpdates</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>aee998a6fc537718bedc192e98656d058</anchor>
      <arglist>(const std::vector&lt; foxglove::Parameter &gt; &amp;parameters)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>parameterUpdates</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>aed5bd392c568042f192a9551b47ed4f1</anchor>
      <arglist>(XmlRpc::XmlRpcValue &amp;params, XmlRpc::XmlRpcValue &amp;result)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>rosMessageHandler</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>aabc96fae977e4fe3cfd6a84f84a25783</anchor>
      <arglist>(const foxglove::ChannelId &amp;channelId, ConnectionHandle clientHandle, std::shared_ptr&lt; rclcpp::SerializedMessage &gt; msg)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>rosMessageHandler</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a11c5231c9fcc4d87c0a7fe7fdac02c08</anchor>
      <arglist>(const foxglove::ChannelId channelId, ConnectionHandle clientHandle, const ros::MessageEvent&lt; ros_babel_fish::BabelFishMessage const &gt; &amp;msgEvent)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>serviceRequest</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>adfb9bf4a41f1efe79b3ffe35542f8102</anchor>
      <arglist>(const foxglove::ServiceRequest &amp;request, ConnectionHandle clientHandle)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>serviceRequest</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>adfb9bf4a41f1efe79b3ffe35542f8102</anchor>
      <arglist>(const foxglove::ServiceRequest &amp;request, ConnectionHandle clientHandle)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>setParameters</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a3cb14cc3f89f1b122938a3102348c907</anchor>
      <arglist>(const std::vector&lt; foxglove::Parameter &gt; &amp;parameters, const std::optional&lt; std::string &gt; &amp;requestId, ConnectionHandle hdl)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>setParameters</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a3cb14cc3f89f1b122938a3102348c907</anchor>
      <arglist>(const std::vector&lt; foxglove::Parameter &gt; &amp;parameters, const std::optional&lt; std::string &gt; &amp;requestId, ConnectionHandle hdl)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>subscribe</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>ac1409efaf8da9fe5635717637bdc054d</anchor>
      <arglist>(foxglove::ChannelId channelId, ConnectionHandle clientHandle)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>subscribe</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>ac1409efaf8da9fe5635717637bdc054d</anchor>
      <arglist>(foxglove::ChannelId channelId, ConnectionHandle clientHandle)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>subscribeConnectionGraph</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a348a1faf188ae7b8de97b1732d277a8e</anchor>
      <arglist>(bool subscribe)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>subscribeParameters</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>afab32ba120722ecc9ab4689f2825ddae</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;parameters, foxglove::ParameterSubscriptionOperation op, ConnectionHandle)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>subscribeParameters</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>afab32ba120722ecc9ab4689f2825ddae</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;parameters, foxglove::ParameterSubscriptionOperation op, ConnectionHandle)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>unsubscribe</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>addf2f040953155661eb9c85084f4ab83</anchor>
      <arglist>(foxglove::ChannelId channelId, ConnectionHandle clientHandle)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>unsubscribe</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>addf2f040953155661eb9c85084f4ab83</anchor>
      <arglist>(foxglove::ChannelId channelId, ConnectionHandle clientHandle)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>updateAdvertisedServices</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a356942f3683568a93b726741ba327a6d</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;serviceNames)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>updateAdvertisedTopics</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>aa0037280048084e3ebac39672ea72739</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>updateAdvertisedTopicsAndServices</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>af7d54d3cb12362e270fbc7c086a40caf</anchor>
      <arglist>(const ros::TimerEvent &amp;)</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unordered_map&lt; foxglove::ServiceId, foxglove::ServiceWithoutId &gt;</type>
      <name>_advertisedServices</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a90d52aed67ccb3661a36f8147c9e07e1</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unordered_map&lt; foxglove::ChannelId, foxglove::ChannelWithoutId &gt;</type>
      <name>_advertisedTopics</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a04da3cf5b7d664a785f738d6b21413cc</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::vector&lt; std::string &gt;</type>
      <name>_capabilities</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a8c48e25caf03cf3e3a2118ed228d4a09</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>PublicationsByClient</type>
      <name>_clientAdvertisedTopics</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a28de9c5f4828a1df8f04ec401239b089</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::mutex</type>
      <name>_clientAdvertisementsMutex</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a674b35bbf2a5c7504ae33e96a81934dc</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>rclcpp::CallbackGroup::SharedPtr</type>
      <name>_clientPublishCallbackGroup</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a37086e150e03550c84d4355a0557e58b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_ptr&lt; rclcpp::Subscription&lt; rosgraph_msgs::msg::Clock &gt; &gt;</type>
      <name>_clockSubscription</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a4a8d2722803973f43db7e045d7d6cf5d</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ros::Subscriber</type>
      <name>_clockSubscription</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>ae127c288765f5187ab4328810c9e81e1</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>_includeHidden</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>af01c5b41920f07bb0bf677f98b09a11b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>size_t</type>
      <name>_maxQosDepth</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a4433932b5c1dd174ecb4164069342478</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>size_t</type>
      <name>_maxUpdateMs</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a2b1e64823e39d8e1a07bb2f20c0faaa3</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>foxglove::MessageDefinitionCache</type>
      <name>_messageDefinitionCache</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>af7a6b340683f7cae9f4e5cc5415a1ae9</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>size_t</type>
      <name>_minQosDepth</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a57ea2e5bef334607339b299ffbfa6990</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_ptr&lt; ParameterInterface &gt;</type>
      <name>_paramInterface</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a889fab8734043ca09a81285833d2dcea</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::vector&lt; std::regex &gt;</type>
      <name>_paramWhitelistPatterns</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a15cffbec4fec4f0ff6ae7950e91eea9a</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_mutex</type>
      <name>_publicationsMutex</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a6d861196c6f5bbf14e116baacaea467b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unique_ptr&lt; std::thread &gt;</type>
      <name>_rosgraphPollThread</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a36a03087068ce49c0ba27b6a4c9f529c</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ros_babel_fish::IntegratedDescriptionProvider</type>
      <name>_rosTypeInfoProvider</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a796a39bc7fe95967e59924d606c1a214</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unique_ptr&lt; foxglove::ServerInterface&lt; ConnectionHandle &gt; &gt;</type>
      <name>_server</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a579653274e1093b5c28104bbf8c5ea0d</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unordered_map&lt; foxglove::ServiceId, GenericClient::SharedPtr &gt;</type>
      <name>_serviceClients</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>af80fe16b38d307b0e0342c462ac05673</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>rclcpp::CallbackGroup::SharedPtr</type>
      <name>_servicesCallbackGroup</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>ae20cc9c7667523c618da210746b0ed9e</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::mutex</type>
      <name>_servicesMutex</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>aaf94a7de9c630e1f9b6be035774e6e5d</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_mutex</type>
      <name>_servicesMutex</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a4e9b1c52faf073dbdf61f228bb0e478f</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::vector&lt; std::regex &gt;</type>
      <name>_serviceWhitelistPatterns</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a4e084f197729df9fdc7011022e3a8dc7</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::atomic&lt; bool &gt;</type>
      <name>_subscribeGraphUpdates</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a58fbdf0cc6322ed9ee7b9234d6f479ea</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>rclcpp::CallbackGroup::SharedPtr</type>
      <name>_subscriptionCallbackGroup</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>ae54294a470b79ba25d9cdc4515d46e5d</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unordered_map&lt; foxglove::ChannelId, SubscriptionsByClient &gt;</type>
      <name>_subscriptions</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>aa0b7e30d4bcf32234fcd1b33e6ed325b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::mutex</type>
      <name>_subscriptionsMutex</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a939fe3d9fb1ccb762f0575993bab5321</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::vector&lt; std::regex &gt;</type>
      <name>_topicWhitelistPatterns</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>ac36ad5900052ae1113492245a018995e</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>size_t</type>
      <name>_updateCount</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a0c6c7bb9e04dff756d17d7397f04e349</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ros::Timer</type>
      <name>_updateTimer</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>aac1a327bb47b19f3b3084dea9f624e8e</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>_useSimTime</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a26b13d43ec91b8e08e2d50de619cad63</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ros::XMLRPCManager</type>
      <name>xmlrpcServer</name>
      <anchorfile>classfoxglove__bridge_1_1FoxgloveBridge.html</anchorfile>
      <anchor>a38bb4a742fb7e8079c2b6372d13c0214</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove_bridge::GenericClient</name>
    <filename>classfoxglove__bridge_1_1GenericClient.html</filename>
    <member kind="typedef">
      <type>std::function&lt; void(SharedFuture)&gt;</type>
      <name>CallbackType</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a2ab28b2644adffe8af5b3dfaaf72bde8</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::function&lt; void(SharedFutureWithRequest)&gt;</type>
      <name>CallbackWithRequestType</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>aeb97c4f6bfd7d15cacecee8df5302d1d</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::promise&lt; SharedResponse &gt;</type>
      <name>Promise</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a4d66b14c8182f01f2364623b188c6dd5</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::promise&lt; std::pair&lt; SharedRequest, SharedResponse &gt; &gt;</type>
      <name>PromiseWithRequest</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a2c82e055ddea2c23750f6f21935b934a</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::shared_future&lt; SharedResponse &gt;</type>
      <name>SharedFuture</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a886b4a15b4e7a8f517c382cd7da1793a</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::shared_future&lt; std::pair&lt; SharedRequest, SharedResponse &gt; &gt;</type>
      <name>SharedFutureWithRequest</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a9d17ceaa2b858239e67eb7e1733f5aca</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::shared_ptr&lt; Promise &gt;</type>
      <name>SharedPromise</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a53ebb03fd34730655acd8757fe8c462e</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::shared_ptr&lt; PromiseWithRequest &gt;</type>
      <name>SharedPromiseWithRequest</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>ab88d6e1e63e7d94dab37e49c5a37565d</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::shared_ptr&lt; rclcpp::SerializedMessage &gt;</type>
      <name>SharedRequest</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a87d4769871db1b0f6cc0fe894ea1c620</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::shared_ptr&lt; rclcpp::SerializedMessage &gt;</type>
      <name>SharedResponse</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a48f02320e74e3a4540000dc21202dcee</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>SharedFuture</type>
      <name>async_send_request</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a68ee444a8f8cdd8311b5f0b317fdbfdc</anchor>
      <arglist>(SharedRequest request)</arglist>
    </member>
    <member kind="function">
      <type>SharedFuture</type>
      <name>async_send_request</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a38d5f09af90b2f1eb5882c47dc5a62e3</anchor>
      <arglist>(SharedRequest request, CallbackType &amp;&amp;cb)</arglist>
    </member>
    <member kind="function">
      <type>std::shared_ptr&lt; rmw_request_id_t &gt;</type>
      <name>create_request_header</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a71e93829b7fccad873faf949f2f76d34</anchor>
      <arglist>() override</arglist>
    </member>
    <member kind="function">
      <type>std::shared_ptr&lt; void &gt;</type>
      <name>create_response</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a605a4fd159be59d707bb7f5a94f23445</anchor>
      <arglist>() override</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>GenericClient</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>adb0eaba39c87ee0fbad51fa44d15fe3f</anchor>
      <arglist>(rclcpp::node_interfaces::NodeBaseInterface *node_base, rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph, std::string service_name, std::string service_type, rcl_client_options_t &amp;client_options)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>handle_response</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a1427f885e88e7dbeb451a81e7c06d3dc</anchor>
      <arglist>(std::shared_ptr&lt; rmw_request_id_t &gt; request_header, std::shared_ptr&lt; void &gt; response) override</arglist>
    </member>
    <member kind="function" virtualness="virtual">
      <type>virtual</type>
      <name>~GenericClient</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a8609f3fb234018a09953237aca0c22b6</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>const rosidl_message_type_support_t *</type>
      <name>_requestTypeSupportHdl</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a6de04c575f3f999ffed7bace50d3d744</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>const rosidl_message_type_support_t *</type>
      <name>_responseTypeSupportHdl</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>afb1f9319ec4f32931d1920e31ff93667</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>const rosidl_service_type_support_t *</type>
      <name>_serviceTypeSupportHdl</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a2bd8382627646638e18162bf5958cf7b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>const rosidl_service_type_support_t *</type>
      <name>_typeIntrospectionHdl</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a110610a2e86759213cc3a9632a0adcad</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_ptr&lt; rcpputils::SharedLibrary &gt;</type>
      <name>_typeIntrospectionLib</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>ad3b04f6cfd4b90bcb03e4ba84f898e32</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_ptr&lt; rcpputils::SharedLibrary &gt;</type>
      <name>_typeSupportLib</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>aac18e6e572ac47148c368953c6810258</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::map&lt; int64_t, std::tuple&lt; SharedPromise, CallbackType, SharedFuture &gt; &gt;</type>
      <name>pending_requests_</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>ae4de566fcee90a8c0bb570b38498c981</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::mutex</type>
      <name>pending_requests_mutex_</name>
      <anchorfile>classfoxglove__bridge_1_1GenericClient.html</anchorfile>
      <anchor>a90e75ce319724c1e16cfc65b6ee1923a</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove_bridge::GenericService</name>
    <filename>structfoxglove__bridge_1_1GenericService.html</filename>
    <member kind="function">
      <type>void</type>
      <name>read</name>
      <anchorfile>structfoxglove__bridge_1_1GenericService.html</anchorfile>
      <anchor>a28ac3aadb1234668a3702f533422d89c</anchor>
      <arglist>(Stream &amp;stream)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>write</name>
      <anchorfile>structfoxglove__bridge_1_1GenericService.html</anchorfile>
      <anchor>a472c7d4e0c0b3afa8a44a042e3648f95</anchor>
      <arglist>(Stream &amp;stream) const</arglist>
    </member>
    <member kind="variable">
      <type>std::vector&lt; uint8_t &gt;</type>
      <name>data</name>
      <anchorfile>structfoxglove__bridge_1_1GenericService.html</anchorfile>
      <anchor>a7937d862b342f6bebb3f010d735a8d58</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>md5sum</name>
      <anchorfile>structfoxglove__bridge_1_1GenericService.html</anchorfile>
      <anchor>a124eef0e768cb9f39fa964a3e7394eae</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>type</name>
      <anchorfile>structfoxglove__bridge_1_1GenericService.html</anchorfile>
      <anchor>af08d3bc05d18685b17b49bc93e3daab5</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>ros::service_traits::MD5Sum&lt; foxglove_bridge::GenericService &gt;</name>
    <filename>structros_1_1service__traits_1_1MD5Sum_3_01foxglove__bridge_1_1GenericService_01_4.html</filename>
    <member kind="function" static="yes">
      <type>static const char *</type>
      <name>value</name>
      <anchorfile>structros_1_1service__traits_1_1MD5Sum_3_01foxglove__bridge_1_1GenericService_01_4.html</anchorfile>
      <anchor>a9bd8ef84d3b425fde6450c55f0963899</anchor>
      <arglist>(const foxglove_bridge::GenericService &amp;m)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static const char *</type>
      <name>value</name>
      <anchorfile>structros_1_1service__traits_1_1MD5Sum_3_01foxglove__bridge_1_1GenericService_01_4.html</anchorfile>
      <anchor>a595c291d9339b3dcff835cb76fc61dc0</anchor>
      <arglist>()</arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove::MessageDefinitionCache</name>
    <filename>classfoxglove_1_1MessageDefinitionCache.html</filename>
    <class kind="struct">foxglove::MessageDefinitionCache::DefinitionIdentifierHash</class>
    <member kind="function">
      <type>std::pair&lt; MessageDefinitionFormat, std::string &gt;</type>
      <name>get_full_text</name>
      <anchorfile>classfoxglove_1_1MessageDefinitionCache.html</anchorfile>
      <anchor>af71d7d9952cc7379b8e260c8c4dd8919</anchor>
      <arglist>(const std::string &amp;package_resource_name)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>const MessageSpec &amp;</type>
      <name>load_message_spec</name>
      <anchorfile>classfoxglove_1_1MessageDefinitionCache.html</anchorfile>
      <anchor>a58c8fb15aa248c43515380385173858e</anchor>
      <arglist>(const DefinitionIdentifier &amp;definition_identifier)</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unordered_map&lt; DefinitionIdentifier, MessageSpec, DefinitionIdentifierHash &gt;</type>
      <name>msg_specs_by_definition_identifier_</name>
      <anchorfile>classfoxglove_1_1MessageDefinitionCache.html</anchorfile>
      <anchor>a8528926782e45c69423108a116bb1f3e</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove::MessageSpec</name>
    <filename>structfoxglove_1_1MessageSpec.html</filename>
    <member kind="function">
      <type></type>
      <name>MessageSpec</name>
      <anchorfile>structfoxglove_1_1MessageSpec.html</anchorfile>
      <anchor>a28285b82b8512764e8a2e93e8e7e5d65</anchor>
      <arglist>(MessageDefinitionFormat format, std::string text, const std::string &amp;package_context)</arglist>
    </member>
    <member kind="variable">
      <type>const std::set&lt; std::string &gt;</type>
      <name>dependencies</name>
      <anchorfile>structfoxglove_1_1MessageSpec.html</anchorfile>
      <anchor>ade7fc7c97c6a056f35268a2c5776b92f</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>MessageDefinitionFormat</type>
      <name>format</name>
      <anchorfile>structfoxglove_1_1MessageSpec.html</anchorfile>
      <anchor>af81f69fdb85f540bdd31cf4e6ed63a7d</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>const std::string</type>
      <name>text</name>
      <anchorfile>structfoxglove_1_1MessageSpec.html</anchorfile>
      <anchor>ae126ddcb32d5eb1833bf76a5f3c92072</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove_bridge::FoxgloveBridge::PairHash</name>
    <filename>structfoxglove__bridge_1_1FoxgloveBridge_1_1PairHash.html</filename>
    <member kind="function">
      <type>std::size_t</type>
      <name>operator()</name>
      <anchorfile>structfoxglove__bridge_1_1FoxgloveBridge_1_1PairHash.html</anchorfile>
      <anchor>a283e816964359284469b8dc0e25fbcb4</anchor>
      <arglist>(const std::pair&lt; T1, T2 &gt; &amp;pair) const</arglist>
    </member>
    <member kind="function">
      <type>std::size_t</type>
      <name>operator()</name>
      <anchorfile>structfoxglove__bridge_1_1FoxgloveBridge_1_1PairHash.html</anchorfile>
      <anchor>a283e816964359284469b8dc0e25fbcb4</anchor>
      <arglist>(const std::pair&lt; T1, T2 &gt; &amp;pair) const</arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove::Parameter</name>
    <filename>classfoxglove_1_1Parameter.html</filename>
    <member kind="function">
      <type>const std::string &amp;</type>
      <name>getName</name>
      <anchorfile>classfoxglove_1_1Parameter.html</anchorfile>
      <anchor>afe3dc8adf6b745204b614cfd96c46bab</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="function">
      <type>ParameterType</type>
      <name>getType</name>
      <anchorfile>classfoxglove_1_1Parameter.html</anchorfile>
      <anchor>a108f371d63197955a1ce46e9a211a276</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="function">
      <type>const ParameterValue &amp;</type>
      <name>getValue</name>
      <anchorfile>classfoxglove_1_1Parameter.html</anchorfile>
      <anchor>a4acc02ed28d895758b65d711f196637f</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Parameter</name>
      <anchorfile>classfoxglove_1_1Parameter.html</anchorfile>
      <anchor>ad2ca4f2179f5b13620ad780d0262431d</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Parameter</name>
      <anchorfile>classfoxglove_1_1Parameter.html</anchorfile>
      <anchor>a069d31fe278359b498a96065031aaa30</anchor>
      <arglist>(const std::string &amp;name)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Parameter</name>
      <anchorfile>classfoxglove_1_1Parameter.html</anchorfile>
      <anchor>a06a974c8352499675b922bf5bd12e909</anchor>
      <arglist>(const std::string &amp;name, const ParameterValue &amp;value)</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::string</type>
      <name>_name</name>
      <anchorfile>classfoxglove_1_1Parameter.html</anchorfile>
      <anchor>a838277bc60ee9d3d06f37931c2ced6c8</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ParameterValue</type>
      <name>_value</name>
      <anchorfile>classfoxglove_1_1Parameter.html</anchorfile>
      <anchor>a42ce8e8a5f25501871df4e98c23183dc</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove_bridge::ParameterInterface</name>
    <filename>classfoxglove__bridge_1_1ParameterInterface.html</filename>
    <member kind="function">
      <type>ParameterList</type>
      <name>getParams</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>a3360c83991d47822f330840956ae6466</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;paramNames, const std::chrono::duration&lt; double &gt; &amp;timeout)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>ParameterInterface</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>a99d9a2adfc0b6854868c2a74f9f39ef3</anchor>
      <arglist>(rclcpp::Node *node, std::vector&lt; std::regex &gt; paramWhitelistPatterns)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>setParams</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>a9aa4450a107899f14f6f4100f0cc5365</anchor>
      <arglist>(const ParameterList &amp;params, const std::chrono::duration&lt; double &gt; &amp;timeout)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>setParamUpdateCallback</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>a9dd685c1fc9b30f9ce82e3b133d7356c</anchor>
      <arglist>(ParamUpdateFunc paramUpdateFunc)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>subscribeParams</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>afdeb9375ad79f6a049496cd9ea4c4a4a</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;paramNames)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>unsubscribeParams</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>a3d09a12fd7b88329c6bc5d4056f88c9f</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;paramNames)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>ParameterList</type>
      <name>getNodeParameters</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>afbdf379b183f7c18a6bd5c062274710f</anchor>
      <arglist>(rclcpp::AsyncParametersClient::SharedPtr paramClient, const std::string &amp;nodeName, const std::vector&lt; std::string &gt; &amp;paramNames, const std::chrono::duration&lt; double &gt; &amp;timeout)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>bool</type>
      <name>isWhitelistedParam</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>a98a8032aac04a30bd204544e5c3ee9d3</anchor>
      <arglist>(const std::string &amp;paramName)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>setNodeParameters</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>a73f1b9f1566186ece71a6e0c5a2aae33</anchor>
      <arglist>(rclcpp::AsyncParametersClient::SharedPtr paramClient, const std::string &amp;nodeName, const std::vector&lt; rclcpp::Parameter &gt; &amp;params, const std::chrono::duration&lt; double &gt; &amp;timeout)</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>rclcpp::CallbackGroup::SharedPtr</type>
      <name>_callbackGroup</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>a39afb7417873ad77243e21270d879496</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::mutex</type>
      <name>_mutex</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>a1a99d5b75a98c017c547a49f1fc234a4</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>rclcpp::Node *</type>
      <name>_node</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>abcc85b5fbd95712ea5767b9ef88d757d</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unordered_map&lt; std::string, rclcpp::AsyncParametersClient::SharedPtr &gt;</type>
      <name>_paramClientsByNode</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>ace95e4383aec0e14610e46f1bc229cff</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unordered_map&lt; std::string, rclcpp::SubscriptionBase::SharedPtr &gt;</type>
      <name>_paramSubscriptionsByNode</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>a28cac19c415fb161370853a8f144e4e8</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ParamUpdateFunc</type>
      <name>_paramUpdateFunc</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>a1a922a1db15ec7a72fc0ac6c62c2d6b0</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::vector&lt; std::regex &gt;</type>
      <name>_paramWhitelistPatterns</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>a203565961b711d0b08afcf7e36a7db36</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unordered_map&lt; std::string, std::unordered_set&lt; std::string &gt; &gt;</type>
      <name>_subscribedParamsByNode</name>
      <anchorfile>classfoxglove__bridge_1_1ParameterInterface.html</anchorfile>
      <anchor>ae11f65c2d8f541ef6239f7f5ba94e34c</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>ParameterTest</name>
    <filename>classParameterTest.html</filename>
    <member kind="typedef">
      <type>std::string</type>
      <name>PARAM_1_TYPE</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>a58a2e09ad491329043de1689af9f42a8</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::string</type>
      <name>PARAM_1_TYPE</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>a58a2e09ad491329043de1689af9f42a8</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::vector&lt; double &gt;</type>
      <name>PARAM_2_TYPE</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>a10a9bb789b79a6b7ac36076188306155</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::vector&lt; int64_t &gt;</type>
      <name>PARAM_2_TYPE</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>a507f1db4b281de5109e873cdbc11af0b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const std::string</type>
      <name>DELETABLE_PARAM_NAME</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>aaf890b09fdd2e3b1835bd5adc479aaf0</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const std::string</type>
      <name>NODE_1_NAME</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>a9bc90e7a0b1bb6cde7cb7855fd9fc1e2</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const std::string</type>
      <name>NODE_2_NAME</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>a3189b395ee273e024577f47c5454c779</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const PARAM_1_TYPE</type>
      <name>PARAM_1_DEFAULT_VALUE</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>af4e13836afe83fdf2299e13b5477eded</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const std::string</type>
      <name>PARAM_1_NAME</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>a1863f7530ad30cc92b07255709118e45</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const PARAM_2_TYPE</type>
      <name>PARAM_2_DEFAULT_VALUE</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>a5b5bfdc743438c143f98a57676c6a9c0</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const std::string</type>
      <name>PARAM_2_NAME</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>a89ec45e49d20e010a0ec1c7728ea5fb1</anchor>
      <arglist></arglist>
    </member>
    <member kind="function" protection="protected">
      <type>void</type>
      <name>SetUp</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>ab0159c36c8fa112bcd0ed413d18661a5</anchor>
      <arglist>() override</arglist>
    </member>
    <member kind="function" protection="protected">
      <type>void</type>
      <name>SetUp</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>ab0159c36c8fa112bcd0ed413d18661a5</anchor>
      <arglist>() override</arglist>
    </member>
    <member kind="function" protection="protected">
      <type>void</type>
      <name>TearDown</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>a56d82189d0afde399500966e3b34618f</anchor>
      <arglist>() override</arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>rclcpp::executors::SingleThreadedExecutor</type>
      <name>_executor</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>aa9a7432ff7a873909252902a41d2bcad</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>std::thread</type>
      <name>_executorThread</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>a74218a2421cecc4158bfcf65ea62326d</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>ros::NodeHandle</type>
      <name>_nh</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>a64af90fcdd1cd94ea915d346d3381f51</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>rclcpp::Node::SharedPtr</type>
      <name>_paramNode1</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>a4fcd1f88a99e1cb70cc8e73e9752661d</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>rclcpp::Node::SharedPtr</type>
      <name>_paramNode2</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>ad0d784a364efbb1ee491536561e6485d</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>std::shared_ptr&lt; foxglove::Client&lt; websocketpp::config::asio_client &gt; &gt;</type>
      <name>_wsClient</name>
      <anchorfile>classParameterTest.html</anchorfile>
      <anchor>a5b7177caccac670d87254ff8e80100dd</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove::ParameterValue</name>
    <filename>classfoxglove_1_1ParameterValue.html</filename>
    <member kind="function">
      <type>ParameterType</type>
      <name>getType</name>
      <anchorfile>classfoxglove_1_1ParameterValue.html</anchorfile>
      <anchor>a631dc65a8d0d2beb6d7fb185e6bbbda1</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="function">
      <type>const T &amp;</type>
      <name>getValue</name>
      <anchorfile>classfoxglove_1_1ParameterValue.html</anchorfile>
      <anchor>a85c03570527a5c31d6d6348b5389f71e</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>ParameterValue</name>
      <anchorfile>classfoxglove_1_1ParameterValue.html</anchorfile>
      <anchor>a26c3065988405626c6bd6dfafba5001c</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>ParameterValue</name>
      <anchorfile>classfoxglove_1_1ParameterValue.html</anchorfile>
      <anchor>adfde26f2d06f550fc2ffa7f51b526165</anchor>
      <arglist>(bool value)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>ParameterValue</name>
      <anchorfile>classfoxglove_1_1ParameterValue.html</anchorfile>
      <anchor>a2484a0596818d391def78525cc07b048</anchor>
      <arglist>(int value)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>ParameterValue</name>
      <anchorfile>classfoxglove_1_1ParameterValue.html</anchorfile>
      <anchor>a62ebc41177199c9ecc1d609b2330fa29</anchor>
      <arglist>(int64_t value)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>ParameterValue</name>
      <anchorfile>classfoxglove_1_1ParameterValue.html</anchorfile>
      <anchor>aac8392fbbda705dc22d5a7e81614f77a</anchor>
      <arglist>(double value)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>ParameterValue</name>
      <anchorfile>classfoxglove_1_1ParameterValue.html</anchorfile>
      <anchor>af076f7a5f66e7c66664fc414d94859b7</anchor>
      <arglist>(const std::string &amp;value)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>ParameterValue</name>
      <anchorfile>classfoxglove_1_1ParameterValue.html</anchorfile>
      <anchor>ae49daaf13a21f0edf356250b7f352118</anchor>
      <arglist>(const char *value)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>ParameterValue</name>
      <anchorfile>classfoxglove_1_1ParameterValue.html</anchorfile>
      <anchor>a2c7ca1f29f83df1c2213ee46f3dec223</anchor>
      <arglist>(const std::vector&lt; unsigned char &gt; &amp;value)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>ParameterValue</name>
      <anchorfile>classfoxglove_1_1ParameterValue.html</anchorfile>
      <anchor>a215b89b069e5e019174e8134187ae7af</anchor>
      <arglist>(const std::vector&lt; ParameterValue &gt; &amp;value)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>ParameterValue</name>
      <anchorfile>classfoxglove_1_1ParameterValue.html</anchorfile>
      <anchor>a4a0efed7ade2a36a905645275adb0e5e</anchor>
      <arglist>(const std::unordered_map&lt; std::string, ParameterValue &gt; &amp;value)</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ParameterType</type>
      <name>_type</name>
      <anchorfile>classfoxglove_1_1ParameterValue.html</anchorfile>
      <anchor>a82bb7137a07849e8bed0b8d5215c5103</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::any</type>
      <name>_value</name>
      <anchorfile>classfoxglove_1_1ParameterValue.html</anchorfile>
      <anchor>a5a79c5af0ad50b0ce7516dc7f3091847</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove::WebSocketNoTls::permessage_deflate_config</name>
    <filename>structfoxglove_1_1WebSocketNoTls_1_1permessage__deflate__config.html</filename>
  </compound>
  <compound kind="struct">
    <name>foxglove::WebSocketTls::permessage_deflate_config</name>
    <filename>structfoxglove_1_1WebSocketTls_1_1permessage__deflate__config.html</filename>
  </compound>
  <compound kind="struct">
    <name>ros::serialization::Serializer&lt; foxglove_bridge::GenericService &gt;</name>
    <filename>structros_1_1serialization_1_1Serializer_3_01foxglove__bridge_1_1GenericService_01_4.html</filename>
    <member kind="function" static="yes">
      <type>static void</type>
      <name>read</name>
      <anchorfile>structros_1_1serialization_1_1Serializer_3_01foxglove__bridge_1_1GenericService_01_4.html</anchorfile>
      <anchor>a4d3fd21b16301c5946ac09755c62785e</anchor>
      <arglist>(Stream &amp;stream, foxglove_bridge::GenericService &amp;m)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static uint32_t</type>
      <name>serializedLength</name>
      <anchorfile>structros_1_1serialization_1_1Serializer_3_01foxglove__bridge_1_1GenericService_01_4.html</anchorfile>
      <anchor>aa3b2c0fb54ac9b21c748a430c956a37f</anchor>
      <arglist>(const foxglove_bridge::GenericService &amp;m)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static void</type>
      <name>write</name>
      <anchorfile>structros_1_1serialization_1_1Serializer_3_01foxglove__bridge_1_1GenericService_01_4.html</anchorfile>
      <anchor>a37e33958299cd4b66dfaefed973e1ae4</anchor>
      <arglist>(Stream &amp;stream, const foxglove_bridge::GenericService &amp;m)</arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove::Server</name>
    <filename>classfoxglove_1_1Server.html</filename>
    <templarg></templarg>
    <base>ServerInterface&lt; ConnHandle &gt;</base>
    <class kind="struct">foxglove::Server::ClientInfo</class>
    <member kind="typedef">
      <type>websocketpp::connection&lt; ServerConfiguration &gt;</type>
      <name>ConnectionType</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a336aa72a1f887befbe0d19ece5244c8e</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>typename ServerType::message_ptr</type>
      <name>MessagePtr</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>ac3bd8345c13c9079f75eca216d6c4b42</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>websocketpp::server&lt; ServerConfiguration &gt;</type>
      <name>ServerType</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a35b0f15586f07c9c3b678d2592b37662</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>websocketpp::lib::asio::ip::tcp</type>
      <name>Tcp</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a0aeda5db9bdcef57f071943f17fa8024</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>std::vector&lt; ChannelId &gt;</type>
      <name>addChannels</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a8d2365b61bf6fa6b8f02c8e99fbda526</anchor>
      <arglist>(const std::vector&lt; ChannelWithoutId &gt; &amp;channels) override</arglist>
    </member>
    <member kind="function">
      <type>std::vector&lt; ServiceId &gt;</type>
      <name>addServices</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a8244a0d058052497ca100ee88d356940</anchor>
      <arglist>(const std::vector&lt; ServiceWithoutId &gt; &amp;services) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>broadcastTime</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>ab986c231dcfd6cffc0f6bbda54d0925c</anchor>
      <arglist>(uint64_t timestamp) override</arglist>
    </member>
    <member kind="function">
      <type>uint16_t</type>
      <name>getPort</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a5c554b9877d9b70bc67c12e4925dff04</anchor>
      <arglist>() override</arglist>
    </member>
    <member kind="function">
      <type>Server &amp;</type>
      <name>operator=</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>afbb5fca2af3d48f9f9c35dd368031248</anchor>
      <arglist>(const Server &amp;)=delete</arglist>
    </member>
    <member kind="function">
      <type>Server &amp;</type>
      <name>operator=</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a28d90a1c1c4a63421748b74d222f3481</anchor>
      <arglist>(Server &amp;&amp;)=delete</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>publishParameterValues</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a51d095b4d2f174ee8f05bf948748f25b</anchor>
      <arglist>(ConnHandle clientHandle, const std::vector&lt; Parameter &gt; &amp;parameters, const std::optional&lt; std::string &gt; &amp;requestId=std::nullopt) override</arglist>
    </member>
    <member kind="function">
      <type>std::string</type>
      <name>remoteEndpointString</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a159afacae9c97ad68a77c3b6e0c1aa52</anchor>
      <arglist>(ConnHandle clientHandle) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>removeChannels</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>ae908f13e787f84ac7d90c3c25ed67792</anchor>
      <arglist>(const std::vector&lt; ChannelId &gt; &amp;channelIds) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>removeServices</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>ade2fccb2a491aecba1d088a924b87125</anchor>
      <arglist>(const std::vector&lt; ServiceId &gt; &amp;serviceIds) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>sendMessage</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>aadb4af3b5b72576bcb9f43f1a7caec8b</anchor>
      <arglist>(ConnHandle clientHandle, ChannelId chanId, uint64_t timestamp, const uint8_t *payload, size_t payloadSize) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>sendServiceResponse</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>adb57db73a19cfb83397d1de51f092212</anchor>
      <arglist>(ConnHandle clientHandle, const ServiceResponse &amp;response) override</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Server</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>adc0c5a54517e6a63b7cac0b392a7e11c</anchor>
      <arglist>(std::string name, LogCallback logger, const ServerOptions &amp;options)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Server</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>aafef4d0b7156bf56b131fb8f9942dfc5</anchor>
      <arglist>(const Server &amp;)=delete</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Server</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>ac6fe9d961a0a97f213988270e885ef33</anchor>
      <arglist>(Server &amp;&amp;)=delete</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>setHandlers</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a411f42f2bfac174aa5d98877a02796f7</anchor>
      <arglist>(ServerHandlers&lt; ConnHandle &gt; &amp;&amp;handlers) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>start</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>ab59fee5869a09f3caf79938dedb5dff1</anchor>
      <arglist>(const std::string &amp;host, uint16_t port) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>stop</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a6f3a73183f6653992d3f32411659c7cc</anchor>
      <arglist>() override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>updateConnectionGraph</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a87930987737b7c5f175f2aca91405a00</anchor>
      <arglist>(const MapOfSets &amp;publishedTopics, const MapOfSets &amp;subscribedTopics, const MapOfSets &amp;advertisedServices) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>updateParameterValues</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a65334ed108f25bc86dd42b58c4f2bc6b</anchor>
      <arglist>(const std::vector&lt; Parameter &gt; &amp;parameters) override</arglist>
    </member>
    <member kind="function" virtualness="virtual">
      <type>virtual</type>
      <name>~Server</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a2b63e595c827d9a0d89ba188fc65a09e</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="variable">
      <type>MapOfSets</type>
      <name>advertisedServices</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a4b9031af26b9471d9b2c7c8765f58f65</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>MapOfSets</type>
      <name>publishedTopics</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>aa96c25e8283b12dcf395c64efe4692b9</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>MapOfSets</type>
      <name>subscribedTopics</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a10a9e360ee4fefdf9417c187da9829d1</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>int</type>
      <name>subscriptionCount</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a6d76a354a5b3a8ce581c0c2fa242de05</anchor>
      <arglist></arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>handleBinaryMessage</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a5d500451c517937ffdb44a0645704d7e</anchor>
      <arglist>(ConnHandle hdl, MessagePtr msg)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>handleConnectionClosed</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>adbc6f2320976e8b6ff67108c4a313499</anchor>
      <arglist>(ConnHandle hdl)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>handleConnectionOpened</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a0334325fe2218f69ce36e1f00bdf80b2</anchor>
      <arglist>(ConnHandle hdl)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>handleMessage</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a75b1cebc73315255ed065a781fb6720b</anchor>
      <arglist>(ConnHandle hdl, MessagePtr msg)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>handleTextMessage</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>af2245ecc9c3dc88a104c4dc1580c4bf3</anchor>
      <arglist>(ConnHandle hdl, MessagePtr msg)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>bool</type>
      <name>hasCapability</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a0ef8631b09cae32b72b4797a1bb08fec</anchor>
      <arglist>(const std::string &amp;capability) const</arglist>
    </member>
    <member kind="function" protection="private">
      <type>bool</type>
      <name>isParameterSubscribed</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a15c81c8e75da108b654cc3aa62a9cf04</anchor>
      <arglist>(const std::string &amp;paramName) const</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>sendBinary</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a8e62162027910da18fe2d3c87e5ec3e6</anchor>
      <arglist>(ConnHandle hdl, const uint8_t *payload, size_t payloadSize)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>sendJson</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a10bdb29f4fbae50580e9aa7c583bae92</anchor>
      <arglist>(ConnHandle hdl, json &amp;&amp;payload)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>sendJsonRaw</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a7961388ee16b7479ef19f26342441213</anchor>
      <arglist>(ConnHandle hdl, const std::string &amp;payload)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>sendStatusAndLogMsg</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a26b56bb8c0fc26d17a8ea6f506115602</anchor>
      <arglist>(ConnHandle clientHandle, const StatusLevel level, const std::string &amp;message)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>setupTlsHandler</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a68bb433051fecfbf3da0174e87eeaff1</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>setupTlsHandler</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a36806dfcaaa71cc8faabb9a2fa305e99</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>setupTlsHandler</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>aee4a81a8f33d6e237b87934aa64ccc1f</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>socketInit</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a3b7325cf605f4a0e160729dffa73d6f3</anchor>
      <arglist>(ConnHandle hdl)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>unsubscribeParamsWithoutSubscriptions</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a0a067068c9ba6438c22065f4ae199f2c</anchor>
      <arglist>(ConnHandle hdl, const std::unordered_set&lt; std::string &gt; &amp;paramNames)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>bool</type>
      <name>validateConnection</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a553d0ef060ad37e3bac12a1138d14121</anchor>
      <arglist>(ConnHandle hdl)</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unordered_map&lt; ChannelId, Channel &gt;</type>
      <name>_channels</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>afa8bf6dc1c7496aa6eb3a22afcc09b3b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_mutex</type>
      <name>_channelsMutex</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a07b03abbcc0a08b21cc2774553c38bba</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::map&lt; ConnHandle, std::unordered_map&lt; ClientChannelId, ClientAdvertisement &gt;, std::owner_less&lt;&gt; &gt;</type>
      <name>_clientChannels</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>aed0c2e5d5142f25423a8b960ab79c901</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_mutex</type>
      <name>_clientChannelsMutex</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a9d52c2646d2695ef28cc8ab7b77362fc</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::map&lt; ConnHandle, std::unordered_set&lt; std::string &gt;, std::owner_less&lt;&gt; &gt;</type>
      <name>_clientParamSubscriptions</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a7ff720964bb259129e12a6b266f600c5</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::mutex</type>
      <name>_clientParamSubscriptionsMutex</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a7a362c5497bab862548ebc41cc2705f1</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::map&lt; ConnHandle, ClientInfo, std::owner_less&lt;&gt; &gt;</type>
      <name>_clients</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>aa5744ca755a84c7305ac037996270d0c</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_mutex</type>
      <name>_clientsMutex</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>ac6ad1c0c523d0656e58697dbd2bb9792</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>struct foxglove::Server::@0</type>
      <name>_connectionGraph</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a6795d3632b530127bf4237b2a7c12b3a</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_mutex</type>
      <name>_connectionGraphMutex</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a889dba984f1c89fa655a72b900aea947</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unique_ptr&lt; CallbackQueue &gt;</type>
      <name>_handlerCallbackQueue</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>abed359034120943cae3697c2905ae80b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ServerHandlers&lt; ConnHandle &gt;</type>
      <name>_handlers</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a914d82e67ed582308917688bbc201644</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>LogCallback</type>
      <name>_logger</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a77e735c473d301c59c143d70a670cdcf</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::string</type>
      <name>_name</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a9fe74dc49375d1c0bfc533db63aa21c1</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>uint32_t</type>
      <name>_nextChannelId</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a9cefe68f73b1f5e0405d923b2247c662</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ServiceId</type>
      <name>_nextServiceId</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>afd924ab5e609b801fdeac3bde8720942</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ServerOptions</type>
      <name>_options</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a87817326146838e06595c6d08ee6d159</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ServerType</type>
      <name>_server</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a75064a77b6c5f8d6a086207dd2fc08cb</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unique_ptr&lt; std::thread &gt;</type>
      <name>_serverThread</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a088053029d75ada4a3567642ab89b085</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unordered_map&lt; ServiceId, ServiceWithoutId &gt;</type>
      <name>_services</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>a98920fa02540f7dd25a18e3d7a4fa1d3</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_mutex</type>
      <name>_servicesMutex</name>
      <anchorfile>classfoxglove_1_1Server.html</anchorfile>
      <anchor>aac6b42434e36322d3b9b06c62b31916a</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove::ServerFactory</name>
    <filename>classfoxglove_1_1ServerFactory.html</filename>
    <member kind="function">
      <type>std::unique_ptr&lt; ServerInterface&lt; websocketpp::connection_hdl &gt; &gt;</type>
      <name>createServer</name>
      <anchorfile>classfoxglove_1_1ServerFactory.html</anchorfile>
      <anchor>ac0a4e88687696eaee21f2036cfba3a17</anchor>
      <arglist>(const std::string &amp;name, const std::function&lt; void(WebSocketLogLevel, char const *)&gt; &amp;logHandler, const ServerOptions &amp;options)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static std::unique_ptr&lt; ServerInterface&lt; ConnectionHandle &gt; &gt;</type>
      <name>createServer</name>
      <anchorfile>classfoxglove_1_1ServerFactory.html</anchorfile>
      <anchor>a994a233a24be68a3bc2fb2d49514493b</anchor>
      <arglist>(const std::string &amp;name, const std::function&lt; void(WebSocketLogLevel, char const *)&gt; &amp;logHandler, const ServerOptions &amp;options)</arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove::ServerHandlers</name>
    <filename>structfoxglove_1_1ServerHandlers.html</filename>
    <templarg>ConnectionHandle</templarg>
    <member kind="variable">
      <type>std::function&lt; void(const ClientAdvertisement &amp;, ConnectionHandle)&gt;</type>
      <name>clientAdvertiseHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>ad4712d288f3b52788930a8e5613796c5</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(const ClientMessage &amp;, ConnectionHandle)&gt;</type>
      <name>clientMessageHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>a49f31b431fd0915b1fb9431466ed0b48</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(ClientChannelId, ConnectionHandle)&gt;</type>
      <name>clientUnadvertiseHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>ace13d0e0275469d573088fac92a6e9a7</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(const std::vector&lt; Parameter &gt; &amp;, const std::optional&lt; std::string &gt; &amp;, ConnectionHandle)&gt;</type>
      <name>parameterChangeHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>a8310a218f7adfb24e7d00d20f56cda3a</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(const std::vector&lt; std::string &gt; &amp;, const std::optional&lt; std::string &gt; &amp;, ConnectionHandle)&gt;</type>
      <name>parameterRequestHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>adc9b0cedaa533b0a87af5f17df7dce4e</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(const std::vector&lt; std::string &gt; &amp;, ParameterSubscriptionOperation, ConnectionHandle)&gt;</type>
      <name>parameterSubscriptionHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>a4fec5b31bf0e87202f9f9e4c648176e0</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(const ServiceRequest &amp;, ConnectionHandle)&gt;</type>
      <name>serviceRequestHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>a97c11677b1bb020bb396544168a24f24</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(bool)&gt;</type>
      <name>subscribeConnectionGraphHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>ab05347812bea9c27787681dccba2eb5b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(ChannelId, ConnectionHandle)&gt;</type>
      <name>subscribeHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>aad990639106d58afe9168b6f41e0772e</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(ChannelId, ConnectionHandle)&gt;</type>
      <name>unsubscribeHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>aeadfdc2f447152ef373793d71257ac8c</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>ServerHandlers&lt; ConnHandle &gt;</name>
    <filename>structfoxglove_1_1ServerHandlers.html</filename>
    <member kind="variable">
      <type>std::function&lt; void(const ClientAdvertisement &amp;, ConnHandle)&gt;</type>
      <name>clientAdvertiseHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>ad4712d288f3b52788930a8e5613796c5</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(const ClientMessage &amp;, ConnHandle)&gt;</type>
      <name>clientMessageHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>a49f31b431fd0915b1fb9431466ed0b48</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(ClientChannelId, ConnHandle)&gt;</type>
      <name>clientUnadvertiseHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>ace13d0e0275469d573088fac92a6e9a7</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(const std::vector&lt; Parameter &gt; &amp;, const std::optional&lt; std::string &gt; &amp;, ConnHandle)&gt;</type>
      <name>parameterChangeHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>a8310a218f7adfb24e7d00d20f56cda3a</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(const std::vector&lt; std::string &gt; &amp;, const std::optional&lt; std::string &gt; &amp;, ConnHandle)&gt;</type>
      <name>parameterRequestHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>adc9b0cedaa533b0a87af5f17df7dce4e</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(const std::vector&lt; std::string &gt; &amp;, ParameterSubscriptionOperation, ConnHandle)&gt;</type>
      <name>parameterSubscriptionHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>a4fec5b31bf0e87202f9f9e4c648176e0</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(const ServiceRequest &amp;, ConnHandle)&gt;</type>
      <name>serviceRequestHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>a97c11677b1bb020bb396544168a24f24</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(bool)&gt;</type>
      <name>subscribeConnectionGraphHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>ab05347812bea9c27787681dccba2eb5b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(ChannelId, ConnHandle)&gt;</type>
      <name>subscribeHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>aad990639106d58afe9168b6f41e0772e</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::function&lt; void(ChannelId, ConnHandle)&gt;</type>
      <name>unsubscribeHandler</name>
      <anchorfile>structfoxglove_1_1ServerHandlers.html</anchorfile>
      <anchor>aeadfdc2f447152ef373793d71257ac8c</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove::ServerInterface</name>
    <filename>classfoxglove_1_1ServerInterface.html</filename>
    <templarg>ConnectionHandle</templarg>
    <member kind="function" virtualness="pure">
      <type>virtual std::vector&lt; ChannelId &gt;</type>
      <name>addChannels</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>ab3d46931341c6e0f14302e0455a13a6c</anchor>
      <arglist>(const std::vector&lt; ChannelWithoutId &gt; &amp;channels)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual std::vector&lt; ServiceId &gt;</type>
      <name>addServices</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>afcc453c5eadd627feeb45cba17e2b109</anchor>
      <arglist>(const std::vector&lt; ServiceWithoutId &gt; &amp;services)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>broadcastTime</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>ae534f9c8b4c4c9ca4ae33a61ceabad5c</anchor>
      <arglist>(uint64_t timestamp)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual uint16_t</type>
      <name>getPort</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>ad9ee134ff5065e94ea6696763339cb59</anchor>
      <arglist>()=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>publishParameterValues</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a76b4642ba86c3ea91c34c6da101129e1</anchor>
      <arglist>(ConnectionHandle clientHandle, const std::vector&lt; Parameter &gt; &amp;parameters, const std::optional&lt; std::string &gt; &amp;requestId)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual std::string</type>
      <name>remoteEndpointString</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a7c674c9570e4a7da88ba70fd8114050b</anchor>
      <arglist>(ConnectionHandle clientHandle)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>removeChannels</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a2446c34fb03f085fff2f8e81039bb4eb</anchor>
      <arglist>(const std::vector&lt; ChannelId &gt; &amp;channelIds)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>removeServices</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>abac5004ce8cbc9ba3a90d82c0a97b2c0</anchor>
      <arglist>(const std::vector&lt; ServiceId &gt; &amp;serviceIds)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>sendMessage</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a41af9313c686d4caeb7d859c93a4fa50</anchor>
      <arglist>(ConnectionHandle clientHandle, ChannelId chanId, uint64_t timestamp, const uint8_t *payload, size_t payloadSize)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>sendServiceResponse</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a38a64ccfc8f135b523b046753401b27d</anchor>
      <arglist>(ConnectionHandle clientHandle, const ServiceResponse &amp;response)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>setHandlers</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>ada6516884a3faade2b828c4bdc9b6abe</anchor>
      <arglist>(ServerHandlers&lt; ConnectionHandle &gt; &amp;&amp;handlers)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>start</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>aa6f34cb3987329c21e2e1f91203281c4</anchor>
      <arglist>(const std::string &amp;host, uint16_t port)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>stop</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a9016b40f9b3dec42e315c7a7925a9ca4</anchor>
      <arglist>()=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>updateConnectionGraph</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a09cd9d736ebccd6b08de783720ec7ff4</anchor>
      <arglist>(const MapOfSets &amp;publishedTopics, const MapOfSets &amp;subscribedTopics, const MapOfSets &amp;advertisedServices)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>updateParameterValues</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a7a5428566d3d780682335c7a333d5c77</anchor>
      <arglist>(const std::vector&lt; Parameter &gt; &amp;parameters)=0</arglist>
    </member>
    <member kind="function" virtualness="virtual">
      <type>virtual</type>
      <name>~ServerInterface</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a5fabdc8b48f4d374e25f51eda7fc82b0</anchor>
      <arglist>()</arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>ServerInterface&lt; ConnHandle &gt;</name>
    <filename>classfoxglove_1_1ServerInterface.html</filename>
    <member kind="function" virtualness="pure">
      <type>virtual std::vector&lt; ChannelId &gt;</type>
      <name>addChannels</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>ab3d46931341c6e0f14302e0455a13a6c</anchor>
      <arglist>(const std::vector&lt; ChannelWithoutId &gt; &amp;channels)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual std::vector&lt; ServiceId &gt;</type>
      <name>addServices</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>afcc453c5eadd627feeb45cba17e2b109</anchor>
      <arglist>(const std::vector&lt; ServiceWithoutId &gt; &amp;services)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>broadcastTime</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>ae534f9c8b4c4c9ca4ae33a61ceabad5c</anchor>
      <arglist>(uint64_t timestamp)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual uint16_t</type>
      <name>getPort</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>ad9ee134ff5065e94ea6696763339cb59</anchor>
      <arglist>()=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>publishParameterValues</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a76b4642ba86c3ea91c34c6da101129e1</anchor>
      <arglist>(ConnHandle clientHandle, const std::vector&lt; Parameter &gt; &amp;parameters, const std::optional&lt; std::string &gt; &amp;requestId)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual std::string</type>
      <name>remoteEndpointString</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a7c674c9570e4a7da88ba70fd8114050b</anchor>
      <arglist>(ConnHandle clientHandle)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>removeChannels</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a2446c34fb03f085fff2f8e81039bb4eb</anchor>
      <arglist>(const std::vector&lt; ChannelId &gt; &amp;channelIds)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>removeServices</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>abac5004ce8cbc9ba3a90d82c0a97b2c0</anchor>
      <arglist>(const std::vector&lt; ServiceId &gt; &amp;serviceIds)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>sendMessage</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a41af9313c686d4caeb7d859c93a4fa50</anchor>
      <arglist>(ConnHandle clientHandle, ChannelId chanId, uint64_t timestamp, const uint8_t *payload, size_t payloadSize)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>sendServiceResponse</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a38a64ccfc8f135b523b046753401b27d</anchor>
      <arglist>(ConnHandle clientHandle, const ServiceResponse &amp;response)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>setHandlers</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>ada6516884a3faade2b828c4bdc9b6abe</anchor>
      <arglist>(ServerHandlers&lt; ConnHandle &gt; &amp;&amp;handlers)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>start</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>aa6f34cb3987329c21e2e1f91203281c4</anchor>
      <arglist>(const std::string &amp;host, uint16_t port)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>stop</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a9016b40f9b3dec42e315c7a7925a9ca4</anchor>
      <arglist>()=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>updateConnectionGraph</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a09cd9d736ebccd6b08de783720ec7ff4</anchor>
      <arglist>(const MapOfSets &amp;publishedTopics, const MapOfSets &amp;subscribedTopics, const MapOfSets &amp;advertisedServices)=0</arglist>
    </member>
    <member kind="function" virtualness="pure">
      <type>virtual void</type>
      <name>updateParameterValues</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a7a5428566d3d780682335c7a333d5c77</anchor>
      <arglist>(const std::vector&lt; Parameter &gt; &amp;parameters)=0</arglist>
    </member>
    <member kind="function" virtualness="virtual">
      <type>virtual</type>
      <name>~ServerInterface</name>
      <anchorfile>classfoxglove_1_1ServerInterface.html</anchorfile>
      <anchor>a5fabdc8b48f4d374e25f51eda7fc82b0</anchor>
      <arglist>()</arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove::ServerOptions</name>
    <filename>structfoxglove_1_1ServerOptions.html</filename>
    <member kind="variable">
      <type>std::vector&lt; std::string &gt;</type>
      <name>capabilities</name>
      <anchorfile>structfoxglove_1_1ServerOptions.html</anchorfile>
      <anchor>a418386c59bf00c676bcb0dad8b5dc8d5</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>certfile</name>
      <anchorfile>structfoxglove_1_1ServerOptions.html</anchorfile>
      <anchor>a04d76632970f2fc835a2a989dc955586</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::vector&lt; std::regex &gt;</type>
      <name>clientTopicWhitelistPatterns</name>
      <anchorfile>structfoxglove_1_1ServerOptions.html</anchorfile>
      <anchor>a1a63d6c83a78773e3fd1520e624a4b7f</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>keyfile</name>
      <anchorfile>structfoxglove_1_1ServerOptions.html</anchorfile>
      <anchor>ae2feb0f710c3376a458add4d39433287</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::unordered_map&lt; std::string, std::string &gt;</type>
      <name>metadata</name>
      <anchorfile>structfoxglove_1_1ServerOptions.html</anchorfile>
      <anchor>a8aee89255a6260b7d16932b2c3d63369</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>size_t</type>
      <name>sendBufferLimitBytes</name>
      <anchorfile>structfoxglove_1_1ServerOptions.html</anchorfile>
      <anchor>a4cdcd1cb56c8a99a5f2c504ab7096a91</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>sessionId</name>
      <anchorfile>structfoxglove_1_1ServerOptions.html</anchorfile>
      <anchor>abd47878c11e263489557cabe3a3cec21</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::vector&lt; std::string &gt;</type>
      <name>supportedEncodings</name>
      <anchorfile>structfoxglove_1_1ServerOptions.html</anchorfile>
      <anchor>a70fd1fc69b5dce70a4b72e2d5e91decf</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>bool</type>
      <name>useCompression</name>
      <anchorfile>structfoxglove_1_1ServerOptions.html</anchorfile>
      <anchor>a9c13e49bb3571de8e4057ed0fd4c72a4</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>bool</type>
      <name>useTls</name>
      <anchorfile>structfoxglove_1_1ServerOptions.html</anchorfile>
      <anchor>a6543e43e00a1318974f819517b1c4f7c</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove::Service</name>
    <filename>structfoxglove_1_1Service.html</filename>
    <base>foxglove::ServiceWithoutId</base>
    <member kind="function">
      <type></type>
      <name>Service</name>
      <anchorfile>structfoxglove_1_1Service.html</anchorfile>
      <anchor>ad90278a67f9be62682ace7bea32a8f8d</anchor>
      <arglist>()=default</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Service</name>
      <anchorfile>structfoxglove_1_1Service.html</anchorfile>
      <anchor>a4b8dc8ef5bc89af1c0e97fb16ff3a666</anchor>
      <arglist>(const ServiceWithoutId &amp;s, const ServiceId &amp;id)</arglist>
    </member>
    <member kind="variable">
      <type>ServiceId</type>
      <name>id</name>
      <anchorfile>structfoxglove_1_1Service.html</anchorfile>
      <anchor>a8a5037aa2584921f4cd5ee25e324968b</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>foxglove::ServiceError</name>
    <filename>classfoxglove_1_1ServiceError.html</filename>
    <base>ExeptionWithId&lt; ServiceId &gt;</base>
  </compound>
  <compound kind="struct">
    <name>foxglove::ServiceResponse</name>
    <filename>structfoxglove_1_1ServiceResponse.html</filename>
    <member kind="function">
      <type>bool</type>
      <name>operator==</name>
      <anchorfile>structfoxglove_1_1ServiceResponse.html</anchorfile>
      <anchor>a301aea90027eff2e26634e1825c5dafd</anchor>
      <arglist>(const ServiceResponse &amp;other) const</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>read</name>
      <anchorfile>structfoxglove_1_1ServiceResponse.html</anchorfile>
      <anchor>a25d8c782f43b80d5af3da4938097d1d3</anchor>
      <arglist>(const uint8_t *data, size_t size)</arglist>
    </member>
    <member kind="function">
      <type>size_t</type>
      <name>size</name>
      <anchorfile>structfoxglove_1_1ServiceResponse.html</anchorfile>
      <anchor>a410f42e7ccbc48dee74e4d0aa90fdd83</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>write</name>
      <anchorfile>structfoxglove_1_1ServiceResponse.html</anchorfile>
      <anchor>ac37dd1924fc0a83c9223fe6ef8ffd438</anchor>
      <arglist>(uint8_t *data) const</arglist>
    </member>
    <member kind="variable">
      <type>uint32_t</type>
      <name>callId</name>
      <anchorfile>structfoxglove_1_1ServiceResponse.html</anchorfile>
      <anchor>a4e4ab2179d704851a42fbb070e770fd1</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::vector&lt; uint8_t &gt;</type>
      <name>data</name>
      <anchorfile>structfoxglove_1_1ServiceResponse.html</anchorfile>
      <anchor>ae36a4a2c26d033f8755bfe4fc27ba38f</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>encoding</name>
      <anchorfile>structfoxglove_1_1ServiceResponse.html</anchorfile>
      <anchor>a4afc345cf3962d7b7bb9e075b627ed90</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>ServiceId</type>
      <name>serviceId</name>
      <anchorfile>structfoxglove_1_1ServiceResponse.html</anchorfile>
      <anchor>a6e257029d0cc0327393ba7579fb40990</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>ServiceTest</name>
    <filename>classServiceTest.html</filename>
    <member kind="variable" static="yes">
      <type>static const std::string</type>
      <name>SERVICE_NAME</name>
      <anchorfile>classServiceTest.html</anchorfile>
      <anchor>ac34aee8ec62ca683d516c7711a7860a1</anchor>
      <arglist></arglist>
    </member>
    <member kind="function" protection="protected">
      <type>void</type>
      <name>SetUp</name>
      <anchorfile>classServiceTest.html</anchorfile>
      <anchor>ad0607974315450cf712d9a8e6a466680</anchor>
      <arglist>() override</arglist>
    </member>
    <member kind="function" protection="protected">
      <type>void</type>
      <name>SetUp</name>
      <anchorfile>classServiceTest.html</anchorfile>
      <anchor>ad0607974315450cf712d9a8e6a466680</anchor>
      <arglist>() override</arglist>
    </member>
    <member kind="function" protection="protected">
      <type>void</type>
      <name>TearDown</name>
      <anchorfile>classServiceTest.html</anchorfile>
      <anchor>a3b6bfa8bc0faeb151cc8c6d67ce947d6</anchor>
      <arglist>() override</arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>rclcpp::executors::SingleThreadedExecutor</type>
      <name>_executor</name>
      <anchorfile>classServiceTest.html</anchorfile>
      <anchor>a768062201d4b80a49b87d291a8d0dbe2</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>std::thread</type>
      <name>_executorThread</name>
      <anchorfile>classServiceTest.html</anchorfile>
      <anchor>a5515c622d7454954323f67efc0875b5e</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>rclcpp::Node::SharedPtr</type>
      <name>_node</name>
      <anchorfile>classServiceTest.html</anchorfile>
      <anchor>a5ed82f80c8964b6699b8c84f0eaf740a</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>rclcpp::ServiceBase::SharedPtr</type>
      <name>_service</name>
      <anchorfile>classServiceTest.html</anchorfile>
      <anchor>abc3ee89d8deaae92ae3f6cba874371a9</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="protected">
      <type>std::shared_ptr&lt; foxglove::Client&lt; websocketpp::config::asio_client &gt; &gt;</type>
      <name>_wsClient</name>
      <anchorfile>classServiceTest.html</anchorfile>
      <anchor>a9d9609a6f0abc9a40e69fc2684bc1cfd</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ros::NodeHandle</type>
      <name>_nh</name>
      <anchorfile>classServiceTest.html</anchorfile>
      <anchor>ad0c1162203c4387a61c73765301cb1bc</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ros::ServiceServer</type>
      <name>_service</name>
      <anchorfile>classServiceTest.html</anchorfile>
      <anchor>a1911e12810145db6ece82f4a47c8073d</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove::ServiceWithoutId</name>
    <filename>structfoxglove_1_1ServiceWithoutId.html</filename>
    <member kind="variable">
      <type>std::string</type>
      <name>name</name>
      <anchorfile>structfoxglove_1_1ServiceWithoutId.html</anchorfile>
      <anchor>af75a4a1212bc30829832f1f6ecf57378</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>requestSchema</name>
      <anchorfile>structfoxglove_1_1ServiceWithoutId.html</anchorfile>
      <anchor>adb3c3b6651834300b58062a5e04dfab3</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>responseSchema</name>
      <anchorfile>structfoxglove_1_1ServiceWithoutId.html</anchorfile>
      <anchor>a2e5b298314ca629217306ff80eb1136c</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>type</name>
      <anchorfile>structfoxglove_1_1ServiceWithoutId.html</anchorfile>
      <anchor>a313240164f3b3f98f39d193730fa9d44</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove::WebSocketTls::transport_config</name>
    <filename>structfoxglove_1_1WebSocketTls_1_1transport__config.html</filename>
    <member kind="typedef">
      <type>CallbackLogger</type>
      <name>alog_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls_1_1transport__config.html</anchorfile>
      <anchor>a7f5aceee60d82c65a328abd9f3e46f03</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>type::concurrency_type</type>
      <name>concurrency_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls_1_1transport__config.html</anchorfile>
      <anchor>af95c33d7ca2fdc1e7fe78d2f0234ecd8</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>CallbackLogger</type>
      <name>elog_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls_1_1transport__config.html</anchorfile>
      <anchor>a52427af284f46b2d64e9d6bd87673abb</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>type::request_type</type>
      <name>request_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls_1_1transport__config.html</anchorfile>
      <anchor>ab9401b71b51f42751cd207d4deb6ed2f</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>type::response_type</type>
      <name>response_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls_1_1transport__config.html</anchorfile>
      <anchor>afefb990fd4b156eebdb047682e03f42a</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>websocketpp::transport::asio::tls_socket::endpoint</type>
      <name>socket_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls_1_1transport__config.html</anchorfile>
      <anchor>a7900454cb846d718324eac4a3b2cddb1</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove::WebSocketNoTls::transport_config</name>
    <filename>structfoxglove_1_1WebSocketNoTls_1_1transport__config.html</filename>
    <member kind="typedef">
      <type>CallbackLogger</type>
      <name>alog_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls_1_1transport__config.html</anchorfile>
      <anchor>a05053a5cab72b4240f3798cba40a0aff</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>type::concurrency_type</type>
      <name>concurrency_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls_1_1transport__config.html</anchorfile>
      <anchor>a1b3fafdd3ad625651f6949fb3ed5874f</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>CallbackLogger</type>
      <name>elog_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls_1_1transport__config.html</anchorfile>
      <anchor>ae6b1495cada73e734f879392f1c7fde1</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>type::request_type</type>
      <name>request_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls_1_1transport__config.html</anchorfile>
      <anchor>ae27079142ff7664284775632ca1c2dc7</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>type::response_type</type>
      <name>response_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls_1_1transport__config.html</anchorfile>
      <anchor>a19375ab82a1b7fe7d86b3fe57acff4d7</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>websocketpp::transport::asio::basic_socket::endpoint</type>
      <name>socket_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls_1_1transport__config.html</anchorfile>
      <anchor>a76ef674774832877576362028a14b60b</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove::WebSocketNoTls</name>
    <filename>structfoxglove_1_1WebSocketNoTls.html</filename>
    <class kind="struct">foxglove::WebSocketNoTls::permessage_deflate_config</class>
    <class kind="struct">foxglove::WebSocketNoTls::transport_config</class>
    <member kind="typedef">
      <type>CallbackLogger</type>
      <name>alog_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls.html</anchorfile>
      <anchor>a9ffd41d93a37adbe9375cb9ab28b42cd</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>core</type>
      <name>base</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls.html</anchorfile>
      <anchor>ab55315b22b6eda9a27146f6e77c70a26</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>base::con_msg_manager_type</type>
      <name>con_msg_manager_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls.html</anchorfile>
      <anchor>aeb9816b1c7ca7ca1ac77f65f789796af</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>base::concurrency_type</type>
      <name>concurrency_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls.html</anchorfile>
      <anchor>acf0d6c42f558f2a411be579ce41b9e07</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>CallbackLogger</type>
      <name>elog_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls.html</anchorfile>
      <anchor>aeec74a1cefeab4715144ab09f9dc5738</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>base::endpoint_msg_manager_type</type>
      <name>endpoint_msg_manager_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls.html</anchorfile>
      <anchor>aac4c29fb98d1b8d5d26e543a04117d4c</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>base::message_type</type>
      <name>message_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls.html</anchorfile>
      <anchor>abd8ee921df8df575aff34dbb2fc224df</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>websocketpp::extensions::permessage_deflate::enabled&lt; permessage_deflate_config &gt;</type>
      <name>permessage_deflate_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls.html</anchorfile>
      <anchor>aed61373e2037f7ab972806b791864147</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>base::request_type</type>
      <name>request_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls.html</anchorfile>
      <anchor>a23f9f22b5afd6f9df1e13a5912c7ef41</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>base::response_type</type>
      <name>response_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls.html</anchorfile>
      <anchor>a9a9e11d12d7ceb1858bb3fdf2212d66e</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>base::rng_type</type>
      <name>rng_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls.html</anchorfile>
      <anchor>a7c509117598d161a041b0176c34613f6</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>websocketpp::transport::asio::endpoint&lt; transport_config &gt;</type>
      <name>transport_type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls.html</anchorfile>
      <anchor>ada17d1429b4f8d357108c49798029385</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>WebSocketNoTls</type>
      <name>type</name>
      <anchorfile>structfoxglove_1_1WebSocketNoTls.html</anchorfile>
      <anchor>a2bb43e31d17fb84a7c841f3434a6077b</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>foxglove::WebSocketTls</name>
    <filename>structfoxglove_1_1WebSocketTls.html</filename>
    <class kind="struct">foxglove::WebSocketTls::permessage_deflate_config</class>
    <class kind="struct">foxglove::WebSocketTls::transport_config</class>
    <member kind="typedef">
      <type>CallbackLogger</type>
      <name>alog_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls.html</anchorfile>
      <anchor>a6fb5a0cee39955347ca5bce7c25f7b8c</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>core</type>
      <name>base</name>
      <anchorfile>structfoxglove_1_1WebSocketTls.html</anchorfile>
      <anchor>abb0fb30ae4a1b2169bfe410b66faaf04</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>base::con_msg_manager_type</type>
      <name>con_msg_manager_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls.html</anchorfile>
      <anchor>aaf5524983f80e8e6ad6194e0b4e8d470</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>base::concurrency_type</type>
      <name>concurrency_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls.html</anchorfile>
      <anchor>a25961b270a315283f305ec614e99a8cb</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>CallbackLogger</type>
      <name>elog_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls.html</anchorfile>
      <anchor>a714563ac0f671f72516a8f1d08817756</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>base::endpoint_msg_manager_type</type>
      <name>endpoint_msg_manager_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls.html</anchorfile>
      <anchor>a89fbd3e06858e6dae7d8c4f6a893d670</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>base::message_type</type>
      <name>message_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls.html</anchorfile>
      <anchor>ae9ef0b08061c5b398d9aaeddbc8579c9</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>websocketpp::extensions::permessage_deflate::enabled&lt; permessage_deflate_config &gt;</type>
      <name>permessage_deflate_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls.html</anchorfile>
      <anchor>a6b491424f209ff0bc8fd81aa77a9b197</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>base::request_type</type>
      <name>request_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls.html</anchorfile>
      <anchor>a1d7ed8358ef4ef14f0a8f462af65f89d</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>base::response_type</type>
      <name>response_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls.html</anchorfile>
      <anchor>a060fc0251be51b73e01401dc70920779</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>base::rng_type</type>
      <name>rng_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls.html</anchorfile>
      <anchor>a25d2c1e4cee0b69f0f0ddb3ce9a73335</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>websocketpp::transport::asio::endpoint&lt; transport_config &gt;</type>
      <name>transport_type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls.html</anchorfile>
      <anchor>aa830ee1d0751bdaa65435c6ff45c9d74</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>WebSocketTls</type>
      <name>type</name>
      <anchorfile>structfoxglove_1_1WebSocketTls.html</anchorfile>
      <anchor>ac0a272899d82b61d9fd201326d86acec</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="namespace">
    <name>format</name>
    <filename>namespaceformat.html</filename>
    <member kind="function">
      <type>def</type>
      <name>main</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>a5f60a1ab8eff48673abd30fa94731434</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type></type>
      <name>action</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>a0f15a0c8d7ce0c6df4e2765cb2ae50d3</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type></type>
      <name>args</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>a676da881eedb0dc6d861d5fa31ee2786</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>list</type>
      <name>EXTENSIONS</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>a88fe074cc70297d64cd5e217f0c8003f</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type></type>
      <name>help</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>a44cc10070074ac49af90529b99152db8</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>list</type>
      <name>IGNORE_DIRS</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>a3d0eecac788cb7879ac00a667d179f35</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type></type>
      <name>nargs</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>ade44236ca9ce56cdefe31d5743bbbe44</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type></type>
      <name>parser</name>
      <anchorfile>namespaceformat.html</anchorfile>
      <anchor>acdd4178907e9eec0923d22a072d7cb59</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="namespace">
    <name>foxglove</name>
    <filename>namespacefoxglove.html</filename>
    <class kind="class">foxglove::CallbackLogger</class>
    <class kind="class">foxglove::CallbackQueue</class>
    <class kind="struct">foxglove::Channel</class>
    <class kind="class">foxglove::ChannelError</class>
    <class kind="struct">foxglove::ChannelWithoutId</class>
    <class kind="class">foxglove::Client</class>
    <class kind="struct">foxglove::ClientAdvertisement</class>
    <class kind="class">foxglove::ClientChannelError</class>
    <class kind="class">foxglove::ClientInterface</class>
    <class kind="struct">foxglove::ClientMessage</class>
    <class kind="struct">foxglove::DefinitionIdentifier</class>
    <class kind="class">foxglove::DefinitionNotFoundError</class>
    <class kind="class">foxglove::ExeptionWithId</class>
    <class kind="class">foxglove::MessageDefinitionCache</class>
    <class kind="struct">foxglove::MessageSpec</class>
    <class kind="class">foxglove::Parameter</class>
    <class kind="class">foxglove::ParameterValue</class>
    <class kind="class">foxglove::Server</class>
    <class kind="class">foxglove::ServerFactory</class>
    <class kind="struct">foxglove::ServerHandlers</class>
    <class kind="class">foxglove::ServerInterface</class>
    <class kind="struct">foxglove::ServerOptions</class>
    <class kind="struct">foxglove::Service</class>
    <class kind="class">foxglove::ServiceError</class>
    <class kind="struct">foxglove::ServiceResponse</class>
    <class kind="struct">foxglove::ServiceWithoutId</class>
    <class kind="struct">foxglove::WebSocketNoTls</class>
    <class kind="struct">foxglove::WebSocketTls</class>
    <member kind="typedef">
      <type>std::function&lt; void(const uint8_t *, size_t)&gt;</type>
      <name>BinaryMessageHandler</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>aaf8ba4176a525e406f946b264666ee69</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>uint32_t</type>
      <name>ChannelId</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ad935cd57c55b27cf49e0b0db3a69d2df</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>uint32_t</type>
      <name>ClientChannelId</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a03fcecbf1c0ca1d8d65d45bc15032b8d</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>websocketpp::connection_hdl</type>
      <name>ConnHandle</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>aa207f302060294b12fcad3bc01e6ebd1</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>nlohmann::json</type>
      <name>json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a96428a14df599319249110aba48c9b1b</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::function&lt; void(WebSocketLogLevel, char const  *)&gt;</type>
      <name>LogCallback</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a4f040c4285d4d79580e99a6086bc8a44</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::unordered_map&lt; std::string, std::unordered_set&lt; std::string &gt; &gt;</type>
      <name>MapOfSets</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a20ddfb98e19737c71659301cfbf3c999</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>websocketpp::frame::opcode::value</type>
      <name>OpCode</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a9eb8ab5e0673cb9580ccf6889b7350f8</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>uint32_t</type>
      <name>ServiceId</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a1d6af3833abee521353eefa7fc05fce8</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>ServiceResponse</type>
      <name>ServiceRequest</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ad6e6048cff7d68b85da1d1e446723f0f</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>uint32_t</type>
      <name>SubscriptionId</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>aa37f63e905602b9c24c83d24029af1b9</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::function&lt; void(const std::string &amp;)&gt;</type>
      <name>TextMessageHandler</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a8c2efecfb7d376f2ce15f9ba2f590f15</anchor>
      <arglist></arglist>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>BinaryOpcode</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a33f7c469f00a795a4bf8d3626f00ee52</anchor>
      <arglist></arglist>
      <enumvalue file="namespacefoxglove.html" anchor="a33f7c469f00a795a4bf8d3626f00ee52ac1abdb6377809fb7f888132f67eb310d">MESSAGE_DATA</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a33f7c469f00a795a4bf8d3626f00ee52ab4cd6bd65f4f2e3e563c5ca25156c0de">TIME_DATA</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a33f7c469f00a795a4bf8d3626f00ee52a393dfab5e6f8c707dd860d1241a90287">SERVICE_CALL_RESPONSE</enumvalue>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>ClientBinaryOpcode</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a990fdc919cb7820389d2c89d455e2516</anchor>
      <arglist></arglist>
      <enumvalue file="namespacefoxglove.html" anchor="a990fdc919cb7820389d2c89d455e2516ac1abdb6377809fb7f888132f67eb310d">MESSAGE_DATA</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a990fdc919cb7820389d2c89d455e2516a2b7fd743fe47ded584cd350097aa9403">SERVICE_CALL_REQUEST</enumvalue>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>MessageDefinitionFormat</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a44f00c3bf6ed807cd04f41af747c9fd1</anchor>
      <arglist></arglist>
      <enumvalue file="namespacefoxglove.html" anchor="a44f00c3bf6ed807cd04f41af747c9fd1a7f22811baaee38a2793307000816bd64">IDL</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a44f00c3bf6ed807cd04f41af747c9fd1a1b7ef95d69775316be10f7090f2d62fa">MSG</enumvalue>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>ParameterSubscriptionOperation</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>aeb7bbc9e93a0ec061da7b96c53736016</anchor>
      <arglist></arglist>
      <enumvalue file="namespacefoxglove.html" anchor="aeb7bbc9e93a0ec061da7b96c53736016a45b73ef479821e71be9f69a190f2bb86">SUBSCRIBE</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="aeb7bbc9e93a0ec061da7b96c53736016a62b18b8274e34fd701d0b684a32c633f">UNSUBSCRIBE</enumvalue>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>ParameterType</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ae86d385d418d43065d8fea835c3d4c1e</anchor>
      <arglist></arglist>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1ea8265ede4dab4a386295671b626e2e7e5">PARAMETER_NOT_SET</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1eaab5cdef997f2ad9512e39b4bc19033dd">PARAMETER_BOOL</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1eace9276c6c44bbb4fb7fbf1fbdeaaf19d">PARAMETER_INTEGER</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1ea5dd115b50b6ec04a8858d9fa7c234596">PARAMETER_DOUBLE</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1ea335f644af794cbc3700f9d08178d4550">PARAMETER_STRING</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1ea0fb2a7b595b013956be2891c7910dba2">PARAMETER_ARRAY</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1ea00c98b50304eea359d91f0266a05dde4">PARAMETER_STRUCT</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="ae86d385d418d43065d8fea835c3d4c1ea9d6abc473fe8353c5f7c6e34837e97fc">PARAMETER_BYTE_ARRAY</enumvalue>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>StatusLevel</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a7ea673aa2159847e2b72e02c4bd0b506</anchor>
      <arglist></arglist>
      <enumvalue file="namespacefoxglove.html" anchor="a7ea673aa2159847e2b72e02c4bd0b506a4059b0251f66a18cb56f544728796875">Info</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a7ea673aa2159847e2b72e02c4bd0b506a0eaadb4fcb48a0a0ed7bc9868be9fbaa">Warning</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a7ea673aa2159847e2b72e02c4bd0b506a902b0d55fddef6f8d651fe1035b7d4bd">Error</enumvalue>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>WebSocketLogLevel</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a1d4f43cde0d3b3d0b3086302f3a302fd</anchor>
      <arglist></arglist>
      <enumvalue file="namespacefoxglove.html" anchor="a1d4f43cde0d3b3d0b3086302f3a302fdaa603905470e2a5b8c13e96b579ef0dba">Debug</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a1d4f43cde0d3b3d0b3086302f3a302fda4059b0251f66a18cb56f544728796875">Info</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a1d4f43cde0d3b3d0b3086302f3a302fda56525ae64d370c0b448ac0d60710ef17">Warn</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a1d4f43cde0d3b3d0b3086302f3a302fda902b0d55fddef6f8d651fe1035b7d4bd">Error</enumvalue>
      <enumvalue file="namespacefoxglove.html" anchor="a1d4f43cde0d3b3d0b3086302f3a302fda278d01e5af56273bae1bb99a98b370cd">Critical</enumvalue>
    </member>
    <member kind="function">
      <type>std::vector&lt; unsigned char &gt;</type>
      <name>base64Decode</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ab89d6ed7e0449580a5a04a6d8410dea5</anchor>
      <arglist>(const std::string &amp;input)</arglist>
    </member>
    <member kind="function">
      <type>std::string</type>
      <name>base64Encode</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a6e55d2783c2ba70cb3c27dd0e10ced55</anchor>
      <arglist>(const std::string_view &amp;input)</arglist>
    </member>
    <member kind="function">
      <type>std::vector&lt; uint8_t &gt;</type>
      <name>connectClientAndReceiveMsg</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a4f3d55ec3d4bf793ba13c81be2ec3851</anchor>
      <arglist>(const std::string &amp;uri, const std::string &amp;topic_name)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static std::string</type>
      <name>delimiter</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ab65ed791852a395bb1bda77bc067ef46</anchor>
      <arglist>(const DefinitionIdentifier &amp;definition_identifier)</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>ends_with</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ab5cdfaf8351b1d41c453f9669d595140</anchor>
      <arglist>(const std::string &amp;str, const std::string &amp;suffix)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static const char *</type>
      <name>extension_for_format</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>acbd5097219d395140a5783b165065ede</anchor>
      <arglist>(MessageDefinitionFormat format)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>from_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>aac44d7b37f9fe5ed8b89cb8afc8b35bd</anchor>
      <arglist>(const nlohmann::json &amp;j, Channel &amp;c)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>from_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a4559bd5ff67dd027cefedd56f5a00b27</anchor>
      <arglist>(const nlohmann::json &amp;j, ParameterValue &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>from_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a32708f3c41ef223d004a04b7c0e92dd9</anchor>
      <arglist>(const nlohmann::json &amp;j, Parameter &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>from_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a18e2d72b1f1d417bfbabfb30baaecf95</anchor>
      <arglist>(const nlohmann::json &amp;j, Service &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>constexpr uint32_t</type>
      <name>Integer</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a1d96c766e22e4e41466bf80c52c0de40</anchor>
      <arglist>(const std::string_view str)</arglist>
    </member>
    <member kind="function">
      <type>std::string</type>
      <name>IPAddressToString</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ad5720eb3489f04cef937afb8d6555e6a</anchor>
      <arglist>(const asio::ip::address &amp;addr)</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>isWhitelisted</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a2832dab81c2e191c75b6988d54190a83</anchor>
      <arglist>(const std::string &amp;name, const std::vector&lt; std::regex &gt; &amp;regexPatterns)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>NoOpLogCallback</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a5a0ff45d39b9fac3c33e17254d5cba46</anchor>
      <arglist>(WebSocketLogLevel, char const *)</arglist>
    </member>
    <member kind="function">
      <type>std::set&lt; std::string &gt;</type>
      <name>parse_dependencies</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a1b206334b69d4292d948896f92e8ca21</anchor>
      <arglist>(MessageDefinitionFormat format, const std::string &amp;text, const std::string &amp;package_context)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static std::set&lt; std::string &gt;</type>
      <name>parse_idl_dependencies</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a5d141a3e33bd480524dceb85b2dbcf86</anchor>
      <arglist>(const std::string &amp;text)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static std::set&lt; std::string &gt;</type>
      <name>parse_msg_dependencies</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a9cee1b110d0cdf750a7f1751bf21563c</anchor>
      <arglist>(const std::string &amp;text, const std::string &amp;package_context)</arglist>
    </member>
    <member kind="function">
      <type>uint32_t</type>
      <name>ReadUint32LE</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ac564eaa07c308d0bd8effb1c6b4c19c3</anchor>
      <arglist>(const uint8_t *buf)</arglist>
    </member>
    <member kind="function">
      <type>std::string</type>
      <name>remove_action_subtype</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ac0eda47fe057a510e25bee7614befb43</anchor>
      <arglist>(const std::string action_type)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static std::tuple&lt; std::string, std::string, std::string &gt;</type>
      <name>split_action_msg_definition</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>af46a5bde5edf84a8837159b08d249bc0</anchor>
      <arglist>(const std::string &amp;action_definition)</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static std::vector&lt; std::string &gt;</type>
      <name>split_string</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a840e2a6495188a2a6e725e7f2460bd98</anchor>
      <arglist>(const std::string &amp;str, const std::string &amp;delimiter=&quot;\)</arglist>
    </member>
    <member kind="function">
      <type>constexpr websocketpp::log::level</type>
      <name>StatusLevelToLogLevel</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a743a76e0cdf4c217baeea606229b0d06</anchor>
      <arglist>(StatusLevel level)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>to_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a8bfddba95173637eaf359f7a26654967</anchor>
      <arglist>(nlohmann::json &amp;j, const ClientAdvertisement &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>to_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a6844a3b86f9025af77d4ff80f06e822c</anchor>
      <arglist>(nlohmann::json &amp;j, const Channel &amp;c)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>to_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a0d6c7f48b91a5e196c3f6ad8078dd666</anchor>
      <arglist>(nlohmann::json &amp;j, const ParameterValue &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>to_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a801ca9bb440b7eb71da549e5162d12e0</anchor>
      <arglist>(nlohmann::json &amp;j, const Parameter &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>to_json</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ad8a13eea138e9531a9c09f1f16611efb</anchor>
      <arglist>(nlohmann::json &amp;j, const Service &amp;p)</arglist>
    </member>
    <member kind="function">
      <type>std::future&lt; std::vector&lt; Parameter &gt; &gt;</type>
      <name>waitForParameters</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>acee4d92e84311cbb5fa214ef5324e5a8</anchor>
      <arglist>(std::shared_ptr&lt; ClientInterface &gt; client, const std::string &amp;requestId=std::string())</arglist>
    </member>
    <member kind="function">
      <type>std::future&lt; Service &gt;</type>
      <name>waitForService</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a3117e7515a5e0f487c66a6170cfaa453</anchor>
      <arglist>(std::shared_ptr&lt; ClientInterface &gt; client, const std::string &amp;serviceName)</arglist>
    </member>
    <member kind="function">
      <type>std::future&lt; ServiceResponse &gt;</type>
      <name>waitForServiceResponse</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a7ad0d1ba6c40feda0f843abf35c42280</anchor>
      <arglist>(std::shared_ptr&lt; ClientInterface &gt; client)</arglist>
    </member>
    <member kind="function">
      <type>const char *</type>
      <name>WebSocketUserAgent</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>af65a6e87f764e4a3a3cf3ef7613d9594</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>WriteUint32LE</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a2af2c0567e403956361bcac552fc2569</anchor>
      <arglist>(uint8_t *buf, uint32_t val)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>WriteUint64LE</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a8ea1f623e9788eb4bd403fe710fb57fd</anchor>
      <arglist>(uint8_t *buf, uint64_t val)</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>ACTION_FEEDBACK_MESSAGE_SUFFIX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a40c576135466a405fa60b98ba11013fc</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>ACTION_GOAL_SERVICE_SUFFIX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ad755fa16a0f567b1d19a8a86370fde24</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>ACTION_RESULT_SERVICE_SUFFIX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a9b2abf0786840acad0b6bd02f21c4298</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const websocketpp::log::level</type>
      <name>APP</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a9d0c1e03fbad6720dc881e4451f1681c</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>const std::unordered_map&lt; ClientBinaryOpcode, std::string &gt;</type>
      <name>CAPABILITY_BY_CLIENT_BINARY_OPERATION</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ae9686db20ee63a2a65f305d55bfc04ec</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>const std::unordered_map&lt; std::string, std::string &gt;</type>
      <name>CAPABILITY_BY_CLIENT_OPERATION</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a9c133f260074b0138b170487e0546be7</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>CAPABILITY_CLIENT_PUBLISH</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a54d858f9c625a63ae8cd0bcb05d09436</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>CAPABILITY_CONNECTION_GRAPH</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a2fdb6b05742d261e63f8f369a4ac7b92</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>CAPABILITY_PARAMETERS</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ac4ad801b7f100c8eef73a9c95602931e</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>CAPABILITY_PARAMETERS_SUBSCRIBE</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a0b0d5344d1fd63f2a485a9dc61707868</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>CAPABILITY_SERVICES</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ab31d965ee8f5aa5dbc9a8568c6a98cfc</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>CAPABILITY_TIME</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>accf663111ac756e74aeda11c69925def</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr std::array&lt; const char *, 5 &gt;</type>
      <name>DEFAULT_CAPABILITIES</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ae7f130bad9d716a07fd8bce20abc2968</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr size_t</type>
      <name>DEFAULT_SEND_BUFFER_LIMIT_BYTES</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a0f4f3ce136f3c84d8b56e8c5b739b8ba</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr auto</type>
      <name>DEFAULT_TIMEOUT</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ac0c927dd7dd5929083c9363c2686ef3c</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>const char</type>
      <name>FOXGLOVE_BRIDGE_GIT_HASH</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ab17b1987b1d0e2bb7e35b433f6c96247</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>const char</type>
      <name>FOXGLOVE_BRIDGE_VERSION</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a1f056b69403dd0be07a51b1ba651f691</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const std::regex</type>
      <name>IDL_FIELD_TYPE_REGEX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a697aaefee64f54cbe1ba71fd07ee5e6f</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const std::regex</type>
      <name>MSG_FIELD_TYPE_REGEX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>aece59ed00daf5643b8b55998779a0b8d</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const std::regex</type>
      <name>PACKAGE_TYPENAME_REGEX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>afe34dfbadf95712c163f0dd4dedfee5e</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const std::unordered_set&lt; std::string &gt;</type>
      <name>PRIMITIVE_TYPES</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>ad9a8c14cf11227b48fcfe182ca200137</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const websocketpp::log::level</type>
      <name>RECOVERABLE</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a4d629192b25a9d9895611523d444f622</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>SERVICE_REQUEST_MESSAGE_SUFFIX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a859013256011ea7e90e1a29512955694</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>SERVICE_RESPONSE_MESSAGE_SUFFIX</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a6e0b8fa4e2a03bb146d27c1df7b59e00</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>SUPPORTED_SUBPROTOCOL</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a9f8db197dce773c8b7ffa45a43cf4153</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static const websocketpp::log::level</type>
      <name>WARNING</name>
      <anchorfile>namespacefoxglove.html</anchorfile>
      <anchor>a3a4c8b1132fc596b01ed7dc637234b78</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="namespace">
    <name>foxglove_bridge</name>
    <filename>namespacefoxglove__bridge.html</filename>
    <class kind="class">foxglove_bridge::FoxgloveBridge</class>
    <class kind="class">foxglove_bridge::GenericClient</class>
    <class kind="struct">foxglove_bridge::GenericService</class>
    <class kind="class">foxglove_bridge::ParameterInterface</class>
    <member kind="typedef">
      <type>std::unordered_map&lt; foxglove::ClientChannelId, ros::Publisher &gt;</type>
      <name>ClientPublications</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>af5db5505ec1d917a3e43c6f103a0e4ca</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>websocketpp::connection_hdl</type>
      <name>ConnectionHandle</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ad6cb47322b783e4a9e126b44da0b0d68</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>foxglove::WebSocketLogLevel</type>
      <name>LogLevel</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>aaaba2dbeae81f8b4b89a5545e7d16bcf</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::vector&lt; foxglove::Parameter &gt;</type>
      <name>ParameterList</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a7ed2b6820f64c9e1391474ada83e7a5e</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::function&lt; void(const ParameterList &amp;)&gt;</type>
      <name>ParamUpdateFunc</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a20d59613a54f5b2947f11b7e24310540</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>rclcpp::GenericPublisher::SharedPtr</type>
      <name>Publication</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ab55904c1e90e7d934f218adfe7e8a55c</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::map&lt; ConnectionHandle, ClientPublications, std::owner_less&lt;&gt; &gt;</type>
      <name>PublicationsByClient</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ac5e6382bbaf1e1109a2c2021aa0b5c28</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>rclcpp::GenericSubscription::SharedPtr</type>
      <name>Subscription</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a48320a8beb85dc96453d548264a6714e</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::map&lt; ConnectionHandle, ros::Subscriber, std::owner_less&lt;&gt; &gt;</type>
      <name>SubscriptionsByClient</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ae8f63debbbab7d2cf0a7a847e12a0664</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::pair&lt; std::string, std::string &gt;</type>
      <name>TopicAndDatatype</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>af53c29f63301fd3e39dd1e9ef54dcc8c</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>std::shared_ptr&lt; void &gt;</type>
      <name>allocate_message</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a19e5c141ceb7050bce5cb0a893741a90</anchor>
      <arglist>(const MessageMembers *members)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>declareParameters</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ac0e790987ceafb23b45c3f93b0ad997f</anchor>
      <arglist>(rclcpp::Node *node)</arglist>
    </member>
    <member kind="function">
      <type>foxglove::ParameterValue</type>
      <name>fromRosParam</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a7311abae6e92806adfe70484e2e51b97</anchor>
      <arglist>(const XmlRpc::XmlRpcValue &amp;value)</arglist>
    </member>
    <member kind="function">
      <type>foxglove::Parameter</type>
      <name>fromRosParam</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ab3d5a67926ffbbaad304e4b02d80ba2d</anchor>
      <arglist>(const std::string &amp;name, const XmlRpc::XmlRpcValue &amp;value)</arglist>
    </member>
    <member kind="function">
      <type>std::pair&lt; std::string, std::string &gt;</type>
      <name>getNodeAndNodeNamespace</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a44864d815124e4619f6ba2a39ddcda90</anchor>
      <arglist>(const std::string &amp;fqnNodeName)</arglist>
    </member>
    <member kind="function">
      <type>std::string</type>
      <name>getServiceTypeSupportHandleSymbolName</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>afd0b3aa740692712aec561831d9a8c53</anchor>
      <arglist>(const std::string &amp;serviceType)</arglist>
    </member>
    <member kind="function">
      <type>std::string</type>
      <name>getTypeIntrospectionSymbolName</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a25567cf0881b9e3835d2a600771cfab1</anchor>
      <arglist>(const std::string &amp;serviceType)</arglist>
    </member>
    <member kind="function">
      <type>std::vector&lt; std::regex &gt;</type>
      <name>parseRegexPatterns</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ad26d3284ba467a7e40366c5510f49164</anchor>
      <arglist>(const std::vector&lt; std::string &gt; &amp;strings)</arglist>
    </member>
    <member kind="function">
      <type>std::vector&lt; std::regex &gt;</type>
      <name>parseRegexStrings</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ace6f415e4784a32442ff40f13dcfb919</anchor>
      <arglist>(rclcpp::Node *node, const std::vector&lt; std::string &gt; &amp;strings)</arglist>
    </member>
    <member kind="function">
      <type>std::future&lt; std::string &gt;</type>
      <name>retrieveServiceType</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ac2ee0179ad9b48a7f127ee0113daecb0</anchor>
      <arglist>(const std::string &amp;serviceName)</arglist>
    </member>
    <member kind="function">
      <type>XmlRpc::XmlRpcValue</type>
      <name>toRosParam</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>afac34a4155bda0917c220d4ba6984033</anchor>
      <arglist>(const foxglove::ParameterValue &amp;param)</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>DEFAULT_ADDRESS</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a4f9df82610cdd477ec263afad1777ce7</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr int64_t</type>
      <name>DEFAULT_MAX_QOS_DEPTH</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a26795b9a2695cc06ebf04d5724ed0e55</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr int</type>
      <name>DEFAULT_MAX_UPDATE_MS</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a168e13fff94813371da1f00e7ef428ba</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr int64_t</type>
      <name>DEFAULT_MIN_QOS_DEPTH</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a26a4a56107b241ea39b44a2d0a7e590d</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr int</type>
      <name>DEFAULT_PORT</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>acaf452edffc5ead2499c83372dac0d5b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr int64_t</type>
      <name>DEFAULT_SEND_BUFFER_LIMIT</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ae47d82a53869226b0a18535e448e50b4</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr double</type>
      <name>MIN_UPDATE_PERIOD_MS</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a221088972e2c238afb3696086b404370</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_ADDRESS</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>af8bb8f0d1d51111dc5f3cd3c13b7a015</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_CAPABILITIES</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ad75e85f8cfc78b060906930ace5ae688</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_CERTFILE</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a4ae5f9fb4349726f408798c543b44fce</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_CLIENT_TOPIC_WHITELIST</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a872c682d470568548355b708f08eb8e5</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_INCLUDE_HIDDEN</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ac9394a36ab26cf887fc15471de459197</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_KEYFILE</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a12ca21de7cc34557a783db2a63bb5f90</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_MAX_QOS_DEPTH</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a7166f5452d237311ec0bf56566fa3c9f</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_MIN_QOS_DEPTH</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>acfedba16131773ea94bfdb5e64e685f4</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_PARAMETER_WHITELIST</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a40a03cc5f151a50b9ebda340dd9ccf64</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_PORT</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ab8fff03b2cb1b856d6c84326760c421d</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_SEND_BUFFER_LIMIT</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a0a897b5aea3e13422604ac9177f701cb</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_SERVICE_WHITELIST</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a25e749764d6496ee7a91ae5b034a16c9</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_TOPIC_WHITELIST</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a65388cca9ce9ccc9b376ed2eb3196806</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_USE_COMPRESSION</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a71e4bc25a0669eb8b91bda85743da122</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>PARAM_USETLS</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a5f13b56b56fd29e4c59b308dfad88109</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr uint32_t</type>
      <name>PUBLICATION_QUEUE_LENGTH</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>ad8ec1267765a6005c2aee5a7cc5a5a28</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>ROS1_CHANNEL_ENCODING</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a01d39455f6874fe10ab3523e51640fa1</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr int</type>
      <name>SERVICE_TYPE_RETRIEVAL_TIMEOUT_MS</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a634cb581323c74dc879923e8c72d0efc</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr uint32_t</type>
      <name>SUBSCRIPTION_QUEUE_LENGTH</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a782e37858bbb0823f77f5937bec903d3</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>TYPESUPPORT_INTROSPECTION_LIB_NAME</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a727c50f5d6884269d6031c4728167b12</anchor>
      <arglist>[]</arglist>
    </member>
    <member kind="variable">
      <type>constexpr char</type>
      <name>TYPESUPPORT_LIB_NAME</name>
      <anchorfile>namespacefoxglove__bridge.html</anchorfile>
      <anchor>a262c8959edf7c525e2176d454e2fc60b</anchor>
      <arglist>[]</arglist>
    </member>
  </compound>
  <compound kind="namespace">
    <name>ros::serialization</name>
    <filename>namespaceros_1_1serialization.html</filename>
    <class kind="struct">ros::serialization::Serializer&lt; foxglove_bridge::GenericService &gt;</class>
  </compound>
  <compound kind="namespace">
    <name>ros::service_traits</name>
    <filename>namespaceros_1_1service__traits.html</filename>
    <class kind="struct">ros::service_traits::DataType&lt; foxglove_bridge::GenericService &gt;</class>
    <class kind="struct">ros::service_traits::MD5Sum&lt; foxglove_bridge::GenericService &gt;</class>
  </compound>
</tagfile>
