This class provides different utilities related with topics. More...
#include <gz/transport/TopicUtils.hh>
Static Public Member Functions | |
static std::string | AsValidTopic (const std::string &_topic) |
Convert a topic name to a valid topic. The input topic is modified by: | |
static bool | DecomposeFullyQualifiedTopic (const std::string &_fullyQualifiedName, std::string &_partition, std::string &_namespaceAndTopic) |
Decompose a fully qualified topic name into its partition and topic strings. Note that if the topic is preceded by a namespace, then the namespace and topic name will remain together as one string. | |
static bool | FullyQualifiedName (const std::string &_partition, const std::string &_ns, const std::string &_topic, std::string &_name) |
Get the full topic path given a namespace and a topic name. A fully qualified topic name's length must not exceed kMaxNameLength. The fully qualified name follows the next syntax: @<PARTITION>@<NAMESPACE>/<TOPIC> where: <PARTITION>: The name of the partition or empty string. A "/" will be prefixed to the partition name unless is empty or it already starts with slash. A trailing slash will always be removed. <NAMESPACE>: The namespace or empty string. A namespace is a prefix applied to the topic name. If not empty, it will always start with a "/". A trailing slash will always be removed <TOPIC>: The topic name. A trailing slash will always be removed. | |
static bool | IsValidNamespace (const std::string &_ns) |
Determines if a namespace is valid. A namespace's length must not exceed kMaxNameLength. The following symbols are not allowed as part of the namespace: '@', ':=', '~'. | |
static bool | IsValidPartition (const std::string &_partition) |
Determines if a partition is valid. The same rules to validate a topic name applies to a partition with the addition of the empty string, which is a valid partition (meaning no partition is used). A partition name's length must not exceed kMaxNameLength. | |
static bool | IsValidTopic (const std::string &_topic) |
Determines if a topic name is valid. A topic name is any non-empty alphanumeric string. The symbol '/' is also allowed as part of a topic name. The following symbols are not allowed as part of the topic name: '@', ':=', '~'. A topic name's length must not exceed kMaxNameLength. Examples of valid topics: abc, /abc, /abc/de, /abc/de/. | |
Static Public Attributes | |
static const uint16_t | kMaxNameLength = 65535 |
The kMaxNameLength specifies the maximum number of characters allowed in a namespace, a partition name, a topic name, and a fully qualified topic name. | |
Detailed Description
This class provides different utilities related with topics.
Member Function Documentation
◆ AsValidTopic()
|
static |
Convert a topic name to a valid topic. The input topic is modified by:
- turning white space into
_
. - removing special characters and combinations.
- Parameters
-
[in] _topic Input topic, which may be invalid.
- Returns
- A valid topic, or empty string if not possible to convert.
◆ DecomposeFullyQualifiedTopic()
|
static |
Decompose a fully qualified topic name into its partition and topic strings. Note that if the topic is preceded by a namespace, then the namespace and topic name will remain together as one string.
Given a fully qualified topic name with the following syntax:
@<PARTITION>@<NAMESPACE>/<TOPIC>
The _partition output argument will be set to <PARTITION>, and the _namespaceAndTopic output argument will be set to <NAMESPACE>/<TOPIC>.
- Parameters
-
[in] _fullyQualifiedName The fully qualified topic name. [out] _partition The partition component of the fully qualified topic name. [out] _namespaceAndTopic The namespace and topic name component. Note that there is no way to distinguish between where a namespace ends and a topic name begins, since topic names may contain slashes.
- Returns
- True if the topic and partition were set.
- See also
- FullyQualifiedName
◆ FullyQualifiedName()
|
static |
Get the full topic path given a namespace and a topic name. A fully qualified topic name's length must not exceed kMaxNameLength. The fully qualified name follows the next syntax: @<PARTITION>@<NAMESPACE>/<TOPIC> where: <PARTITION>: The name of the partition or empty string. A "/" will be prefixed to the partition name unless is empty or it already starts with slash. A trailing slash will always be removed. <NAMESPACE>: The namespace or empty string. A namespace is a prefix applied to the topic name. If not empty, it will always start with a "/". A trailing slash will always be removed <TOPIC>: The topic name. A trailing slash will always be removed.
Note: Intuitively, you can imagine the fully qualified name as a UNIX absolute path, where the partition is always sorrounded by "@". A namespace, if present, corresponds with the directories of the path, and you can imagine the topic as the filename.
E.g.: Only topic: @/topic No partition: @/namespace/topic1 No namespace: @/partition@/topic1 Partition+namespace+topic: @/my_partition@/name/space/topic
- Parameters
-
[in] _partition Partition name. [in] _ns Namespace. [in] _topic Topic name. [out] _name Fully qualified topic name.
- Returns
- True if the fully qualified name is valid (if partition, namespace and topic are correct).
◆ IsValidNamespace()
|
static |
Determines if a namespace is valid. A namespace's length must not exceed kMaxNameLength. The following symbols are not allowed as part of the namespace: '@', ':=', '~'.
- Parameters
-
[in] _ns Namespace to be checked.
- Returns
- true if the namespace is valid.
◆ IsValidPartition()
|
static |
Determines if a partition is valid. The same rules to validate a topic name applies to a partition with the addition of the empty string, which is a valid partition (meaning no partition is used). A partition name's length must not exceed kMaxNameLength.
- Parameters
-
[in] _partition Partition to be checked.
- Returns
- true if the partition is valid.
◆ IsValidTopic()
|
static |
Determines if a topic name is valid. A topic name is any non-empty alphanumeric string. The symbol '/' is also allowed as part of a topic name. The following symbols are not allowed as part of the topic name: '@', ':=', '~'. A topic name's length must not exceed kMaxNameLength. Examples of valid topics: abc, /abc, /abc/de, /abc/de/.
- Parameters
-
[in] _topic Topic name to be checked.
- Returns
- true if the topic name is valid.
Member Data Documentation
◆ kMaxNameLength
|
static |
The kMaxNameLength specifies the maximum number of characters allowed in a namespace, a partition name, a topic name, and a fully qualified topic name.
The documentation for this class was generated from the following file: