chromium/ash/lobster/lobster_candidate_store.h

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ASH_LOBSTER_LOBSTER_CANDIDATE_STORE_H_
#define ASH_LOBSTER_LOBSTER_CANDIDATE_STORE_H_

#include <map>
#include <optional>

#include "ash/ash_export.h"
#include "ash/public/cpp/lobster/lobster_image_candidate.h"

namespace ash {

class ASH_EXPORT LobsterCandidateStore {
 public:
  LobsterCandidateStore();
  LobsterCandidateStore(const LobsterCandidateStore& other);

  ~LobsterCandidateStore();

  void Cache(const LobsterImageCandidate& candidate);

  std::optional<LobsterImageCandidate> FindCandidateById(uint32_t id);

 private:
  std::map<uint32_t, LobsterImageCandidate> cache_;
};

}  // namespace ash

#endif  // ASH_LOBSTER_LOBSTER_CANDIDATE_STORE_H_