#ifndef PRINTING_BACKEND_CUPS_CONNECTION_H_
#define PRINTING_BACKEND_CUPS_CONNECTION_H_
#include <memory>
#include <string>
#include <vector>
#include "base/component_export.h"
#include "printing/backend/cups_deleters.h"
#include "printing/backend/cups_jobs.h"
#include "printing/backend/cups_printer.h"
#include "printing/printer_status.h"
namespace printing {
struct COMPONENT_EXPORT(PRINT_BACKEND) QueueStatus {
QueueStatus();
QueueStatus(const QueueStatus& other);
~QueueStatus();
PrinterStatus printer_status;
std::vector<CupsJob> jobs;
};
class COMPONENT_EXPORT(PRINT_BACKEND) CupsConnection {
public:
virtual ~CupsConnection() = default;
static std::unique_ptr<CupsConnection> Create();
virtual bool GetDests(
std::vector<std::unique_ptr<CupsPrinter>>& printers) = 0;
virtual std::unique_ptr<CupsPrinter> GetPrinter(
const std::string& printer_name) = 0;
virtual bool GetJobs(const std::vector<std::string>& printer_ids,
std::vector<QueueStatus>* jobs) = 0;
virtual bool GetPrinterStatus(const std::string& printer_id,
PrinterStatus* printer_status) = 0;
virtual int last_error() const = 0;
virtual std::string last_error_message() const = 0;
};
}
#endif