12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- // Copyright 2020 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 CHROMEOS_PRINTING_CUPS_PRINTER_STATUS_H_
- #define CHROMEOS_PRINTING_CUPS_PRINTER_STATUS_H_
- #include <string>
- #include "base/component_export.h"
- #include "base/containers/flat_set.h"
- #include "base/time/time.h"
- #include "chromeos/crosapi/mojom/local_printer.mojom.h"
- namespace chromeos {
- // A container for the results of a printer status query. A printer status query
- // can return multiple error reasons so CupsPrinterStatus contains multiple
- // CupsPrinterStatusReasons. |timestamp| is set at the time of CupsPrinterStatus
- // creation.
- class COMPONENT_EXPORT(CHROMEOS_PRINTING) CupsPrinterStatus {
- public:
- // A combination of a reason, which describes the state of a printer, and a
- // severity, which is the level of seriousness of that state.
- class COMPONENT_EXPORT(CHROMEOS_PRINTING) CupsPrinterStatusReason {
- public:
- using Reason = crosapi::mojom::StatusReason::Reason;
- using Severity = crosapi::mojom::StatusReason::Severity;
- CupsPrinterStatusReason(const Reason& reason, const Severity& severity);
- ~CupsPrinterStatusReason();
- const Reason& GetReason() const;
- const Severity& GetSeverity() const;
- bool operator==(const CupsPrinterStatusReason& other) const {
- return reason_ == other.reason_ && severity_ == other.severity_;
- }
- // Comparison operator to support storing CupsPrinterStatusReason in a
- // flat_set. Two CupsPrinterStatusReasons are considered matching iff
- // |reason| and |severity| are the same.
- bool operator<(const CupsPrinterStatusReason& other) const {
- return reason_ < other.reason_ ||
- (reason_ == other.reason_ && severity_ < other.severity_);
- }
- private:
- Reason reason_;
- Severity severity_;
- };
- // Creates a CupsPrinterStatus from an existing printing::PrinterStatus.
- explicit CupsPrinterStatus(const std::string& printer_id);
- CupsPrinterStatus();
- CupsPrinterStatus(const CupsPrinterStatus& other);
- CupsPrinterStatus& operator=(const CupsPrinterStatus& other);
- ~CupsPrinterStatus();
- const std::string& GetPrinterId() const;
- // Returns set of status reasons. Each reason describing status of the
- // printer.
- const base::flat_set<CupsPrinterStatusReason>& GetStatusReasons() const;
- const base::Time& GetTimestamp() const;
- // Adds a new CupsPrinterStatusReason to an existing CupsPrinterStatus.
- void AddStatusReason(const CupsPrinterStatusReason::Reason& reason,
- const CupsPrinterStatusReason::Severity& severity);
- private:
- std::string printer_id_;
- base::flat_set<CupsPrinterStatusReason> status_reasons_;
- base::Time timestamp_;
- };
- } // namespace chromeos
- #endif // CHROMEOS_PRINTING_CUPS_PRINTER_STATUS_H_
|