// Copyright 2016 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 PRINTING_BACKEND_CUPS_CONNECTION_H_ #define PRINTING_BACKEND_CUPS_CONNECTION_H_ #include #include #include #include #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "printing/backend/cups_deleters.h" #include "printing/backend/cups_printer.h" #include "printing/printing_export.h" #include "url/gurl.h" namespace printing { // Represents a print job sent to the queue. struct PRINTING_EXPORT CupsJob { enum JobState { UNKNOWN, PENDING, HELD, COMPLETED, PROCESSING, STOPPED, CANCELED, ABORTED }; int id; std::string title; std::string printer_id; JobState state; }; // Represents a connection to a CUPS server. class PRINTING_EXPORT CupsConnection { public: CupsConnection(const GURL& print_server_url, http_encryption_t encryption, bool blocking); CupsConnection(CupsConnection&& connection); ~CupsConnection(); // Returns a vector of all the printers configure on the CUPS server. std::vector GetDests(); // Returns a printer for |printer_name| from the connected server. std::unique_ptr GetPrinter(const std::string& printer_name); // Returns a list of print jobs from all connected printers. std::vector GetJobs(); std::string server_name() const; int last_error() const; private: // lazily initialize http connection bool Connect(); GURL print_server_url_; http_encryption_t cups_encryption_; bool blocking_; std::unique_ptr cups_http_; DISALLOW_COPY_AND_ASSIGN(CupsConnection); }; } // namespace printing #endif // PRINTING_BACKEND_CUPS_CONNECTION_H_