blob: 2a69d9ba20dc5450fc4e7ee776c4c38aebb2ddf7 [file] [log] [blame]
// Copyright 2020 The Chromium OS 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 ATTESTATION_SERVER_ENROLLMENT_QUEUE_H_
#define ATTESTATION_SERVER_ENROLLMENT_QUEUE_H_
#include <memory>
#include <vector>
#include "attestation/server/attestation_flow.h"
namespace attestation {
// This class maintains the coming attestation flow entry when the enrollment is
// in progress.
class EnrollmentQueue {
public:
explicit EnrollmentQueue(size_t size_limit);
~EnrollmentQueue() = default;
// Enqueues |data| if the size limit is not reached yet for
// |data->aca_type()|.
bool Push(const std::shared_ptr<AttestationFlowData>& data);
// Pops and returns all stored |AttestationFlowData| with |aca_type|.
std::vector<std::shared_ptr<AttestationFlowData>> PopAll(ACAType aca_type);
private:
// Size limit for each ACA type.
const size_t size_limit_;
// Constainer instances for each ACA type.
std::vector<std::shared_ptr<AttestationFlowData>> entries_[ACAType_ARRAYSIZE];
};
} // namespace attestation
#endif // ATTESTATION_SERVER_ENROLLMENT_QUEUE_H_