Commit e6224fd3003a49e575aea2a3fd375cb02346ba82

Authored by Rowan
Committed by Wiebe Cazemier
1 parent 541ef599

Some small docstring tweaks

Showing 2 changed files with 9 additions and 5 deletions
acltree.cpp
@@ -202,13 +202,13 @@ void AclTree::findPermissionRecursive(std::vector<std::string>::const_iterator c @@ -202,13 +202,13 @@ void AclTree::findPermissionRecursive(std::vector<std::string>::const_iterator c
202 } 202 }
203 203
204 /** 204 /**
205 - * @brief AclTree::findPermission tests permissions as loaded from the Mosquitto acl_file. 205 + * @brief AclTree::findPermission tests permissions as loaded from the Mosquitto-compatible acl_file.
206 * @param subtopicsPublish 206 * @param subtopicsPublish
207 - * @param access  
208 - * @param username 207 + * @param access Whether to test read access or write access (`AclGrant::Read` or `AclGrant::Write` respectively).
  208 + * @param username The user to test permission for.
209 * @return 209 * @return
210 * 210 *
211 - * It's behaves like Mosquitto's ACL file. Some of that behavior is a bit limited, but sticking to it for compatability: 211 + * It behaves like Mosquitto's ACL file. Some of that behavior is a bit limited, but sticking to it for compatability:
212 * 212 *
213 * - If your user is authenticated, there must a user specific definition for that user; it won't fall back on anonymous ACLs. 213 * - If your user is authenticated, there must a user specific definition for that user; it won't fall back on anonymous ACLs.
214 * - You can't combine ACLs, like 'all clients read bla/#' and add 'user john readwrite bla/#. User specific ACLs don't add 214 * - You can't combine ACLs, like 'all clients read bla/#' and add 'user john readwrite bla/#. User specific ACLs don't add
acltree.h
@@ -26,12 +26,16 @@ enum class AclTopicType @@ -26,12 +26,16 @@ enum class AclTopicType
26 26
27 AclGrant stringToAclGrant(const std::string &s); 27 AclGrant stringToAclGrant(const std::string &s);
28 28
  29 +/**
  30 + * @brief Permissions for an MQTT topic path is a tree of `AclNode`s. Topic paths are broken up and matched down the tree. A '#' wildcard will match
  31 + * all following subtopics, so therefore '#' is a 'grant', not a 'child'.
  32 + */
29 class AclNode 33 class AclNode
30 { 34 {
31 bool empty = false; 35 bool empty = false;
32 36
33 std::unordered_map<std::string, std::unique_ptr<AclNode>> children; 37 std::unordered_map<std::string, std::unique_ptr<AclNode>> children;
34 - std::unique_ptr<AclNode> childrenPlus; 38 + std::unique_ptr<AclNode> childrenPlus; // The + sign in MQTT represents a single-level wildcard
35 39
36 std::vector<AclGrant> grants; 40 std::vector<AclGrant> grants;
37 std::vector<AclGrant> grantsPound; // The # sign. This is short-hand for avoiding one memory access though a layer of std::unique_ptr<AclNode> 41 std::vector<AclGrant> grantsPound; // The # sign. This is short-hand for avoiding one memory access though a layer of std::unique_ptr<AclNode>