// NP: key is set at the same time as username_. Until then both are empty/NULL.
const char *userKey() {return !userKey_.isEmpty() ? userKey_.c_str() : NULL;}
+ // user key as a SBuf
+ const SBuf SBUserKey() { return userKey_;}
/**
* How long these credentials are still valid for.
}
}
+void
+UserNameCache::insert(Auth::User::Pointer anAuth_user)
+{
+ store_[anAuth_user->SBUserKey()] = anAuth_user;
+}
+
+std::vector<Auth::User::Pointer> UserNameCache::sortedUsersList ()
+{
+ std::vector<Auth::User::Pointer> rv(size(), nullptr);
+ std::transform(store_.begin(), store_.end(), rv.begin(),
+ [](StoreType::value_type v) { return v.second; }
+ );
+ sort(rv.begin(), rv.end(),
+ [](const Auth::User::Pointer &lhs, const Auth::User::Pointer &rhs) {
+ return strcmp(lhs->username(), rhs->username()) < 0;
+ }
+ );
+ return rv;
+}
+
} /* namespace Auth */
/// obtain pointer to user if present, or Pointer(nullptr) if not
Auth::User::Pointer lookup(const SBuf &userKey);
+ /// add an user to the cache
+ void insert(Auth::User::Pointer anAuth_user);
+
void reset();
size_t size();
/** periodic cleanup function, removes timed-out entries
*
- * Must be static to support EVH interface. Argument is this
+ * Must be static to support EVH interface. Argument will be this
*/
static void cleanup(void *);
+ /** obtain sorted list of usernames
+ *
+ */
+ std::vector<Auth::User::Pointer> sortedUsersList();
private:
StoreType store_;