123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef COMPONENTS_POLICY_TEST_SUPPORT_CLIENT_STORAGE_H_
- #define COMPONENTS_POLICY_TEST_SUPPORT_CLIENT_STORAGE_H_
- #include <map>
- #include <set>
- #include <string>
- #include <vector>
- #include "third_party/abseil-cpp/absl/types/optional.h"
- namespace policy {
- // Stores information about registered clients.
- class ClientStorage {
- public:
- struct ClientInfo {
- ClientInfo();
- ClientInfo(const ClientInfo& client_info);
- ClientInfo& operator=(const ClientInfo& client_info);
- ClientInfo(ClientInfo&& client_info);
- ClientInfo& operator=(ClientInfo&& client_info);
- ~ClientInfo();
- std::string device_id;
- std::string device_token;
- std::string machine_name;
- absl::optional<std::string> username;
- std::vector<std::string> state_keys;
- std::set<std::string> allowed_policy_types;
- };
- ClientStorage();
- ClientStorage(ClientStorage&& client_storage);
- ClientStorage& operator=(ClientStorage&& client_storage);
- ~ClientStorage();
- // Register client so the server returns policy without the client having to
- // make a registration call. This could be called at any time (before or after
- // starting the server).
- void RegisterClient(const ClientInfo& client_info);
- // Returns true if there is a client associated with |device_id|.
- bool HasClient(const std::string& device_id) const;
- // Returns the client info associated with |device_id|. Fails if there is no
- // such a client.
- const ClientInfo& GetClient(const std::string& device_id) const;
- // Returns the client info associated with |device_id| or nullptr if there is
- // no such a client.
- const ClientInfo* GetClientOrNull(const std::string& device_id) const;
- // Returns the client info associated with |state_key| or nullptr if there is
- // no such a client.
- const ClientInfo* LookupByStateKey(const std::string& state_key) const;
- // Returns true if deletion of client with token |device_token| succeeded.
- bool DeleteClient(const std::string& device_token);
- // Returns the number of clients registered.
- size_t GetNumberOfRegisteredClients() const;
- // Returns hashes for all state keys registered with the server, which, when
- // divied by |modulus|, result in the specified |remainder|.
- std::vector<std::string> GetMatchingStateKeyHashes(uint64_t modulus,
- uint64_t remainder) const;
- // Returns all the clients in the storage.
- std::vector<ClientInfo> GetAllClients();
- private:
- // Key: device ids.
- std::map<std::string, ClientInfo> clients_;
- // Maps device tokens to device IDs.
- std::map<std::string, std::string> registered_tokens_;
- };
- } // namespace policy
- #endif // COMPONENTS_POLICY_TEST_SUPPORT_CLIENT_STORAGE_H_
|