diff --git a/src/generic_mtrie.hpp b/src/generic_mtrie.hpp
index f11533fd..c35abc62 100644
--- a/src/generic_mtrie.hpp
+++ b/src/generic_mtrie.hpp
@@ -37,7 +37,7 @@ along with this program. If not, see .
namespace zmq
{
-// Multi-trie. Each node in the trie is a set of pointers to pipes.
+// Multi-trie (prefix tree). Each node in the trie is a set of pointers.
template class generic_mtrie_t
{
public:
@@ -47,47 +47,48 @@ template class generic_mtrie_t
generic_mtrie_t ();
~generic_mtrie_t ();
- // Add key to the trie. Returns true if it's a new subscription
+ // Add key to the trie. Returns true if it's a new entry
// rather than a duplicate (i.e. an entry with the same prefix
- // but a different pipe already exists).
- // TODO what if this is called with the same prefix AND pipe?
- // Is this legal? It is not checked anywhere.
- bool add (prefix_t prefix_, size_t size_, value_t *pipe_);
+ // and the same or different value already exists).
+ bool add (prefix_t prefix_, size_t size_, value_t *value_);
- // Remove all subscriptions for a specific peer from the trie.
+ // Remove all entries with a specific value from the trie.
// The call_on_uniq_ flag controls if the callback is invoked
- // when there are no subscriptions left on a topic only (true)
- // or on every removal (false).
+ // when there are no entries left on a prefix only (true)
+ // or on every removal (false). The arg_ argument is passed
+ // through to the callback function.
template
- void rm (value_t *pipe_,
+ void rm (value_t *value_,
void (*func_) (const unsigned char *data_, size_t size_, Arg arg_),
Arg arg_,
bool call_on_uniq_);
- // Remove specific subscription from the trie. Return true if it was
+ // Removes a specific entry from the trie. Return true if it was
// actually removed rather than de-duplicated.
- // TODO this must be made clearer, and the case where the prefix/pipe
+ // TODO this must be made clearer, and the case where the prefix/value
// pair was not found must be specified
- bool rm (prefix_t prefix_, size_t size_, value_t *pipe_);
+ bool rm (prefix_t prefix_, size_t size_, value_t *value_);
- // Signal all the matching pipes.
+ // Calls a callback function for all matching entries, i.e. any node
+ // corresponding to data_ or a prefix of it. The arg_ argument
+ // is passed through to the callback function.
template
void match (prefix_t data_,
size_t size_,
- void (*func_) (value_t *pipe_, Arg arg_),
+ void (*func_) (value_t *value_, Arg arg_),
Arg arg_);
private:
- bool add_helper (prefix_t prefix_, size_t size_, value_t *pipe_);
+ bool add_helper (prefix_t prefix_, size_t size_, value_t *value_);
template
- void rm_helper (value_t *pipe_,
+ void rm_helper (value_t *value_,
unsigned char **buff_,
size_t buffsize_,
size_t maxbuffsize_,
void (*func_) (prefix_t data_, size_t size_, Arg arg_),
Arg arg_,
bool call_on_uniq_);
- bool rm_helper (prefix_t prefix_, size_t size_, value_t *pipe_);
+ bool rm_helper (prefix_t prefix_, size_t size_, value_t *value_);
bool is_redundant () const;
typedef std::set pipes_t;