diff options
author | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-21 11:37:37 +0000 |
---|---|---|
committer | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-21 11:37:37 +0000 |
commit | 1b2ad303f87487cbdc6f1d73c403a1eddc9ba548 (patch) | |
tree | 5e0c51f16314fd8a80aa725c8c346607ddbc1e94 /cloud_print/gcp20/prototype/print_job_handler.h | |
parent | 63086aa1fbf8313b81747952bdb2ff32c1aac6a8 (diff) | |
download | chromium_src-1b2ad303f87487cbdc6f1d73c403a1eddc9ba548.zip chromium_src-1b2ad303f87487cbdc6f1d73c403a1eddc9ba548.tar.gz chromium_src-1b2ad303f87487cbdc6f1d73c403a1eddc9ba548.tar.bz2 |
https://chromiumcodereview.appspot.com/23271004 with fixed include.
TBR=gene@chromium.org
Review URL: https://chromiumcodereview.appspot.com/22911028
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@218702 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cloud_print/gcp20/prototype/print_job_handler.h')
-rw-r--r-- | cloud_print/gcp20/prototype/print_job_handler.h | 67 |
1 files changed, 60 insertions, 7 deletions
diff --git a/cloud_print/gcp20/prototype/print_job_handler.h b/cloud_print/gcp20/prototype/print_job_handler.h index fc48a1e..61c043a 100644 --- a/cloud_print/gcp20/prototype/print_job_handler.h +++ b/cloud_print/gcp20/prototype/print_job_handler.h @@ -5,9 +5,13 @@ #ifndef CLOUD_PRINT_GCP20_PROTOTYPE_PRINT_JOB_HANDLER_H_ #define CLOUD_PRINT_GCP20_PROTOTYPE_PRINT_JOB_HANDLER_H_ +#include <map> #include <string> #include "base/basictypes.h" +#include "base/memory/scoped_ptr.h" +#include "base/memory/weak_ptr.h" +#include "base/time/time.h" #include "cloud_print/gcp20/prototype/local_print_job.h" namespace base { @@ -17,18 +21,39 @@ class Time; } // namespace base -class PrintJobHandler { +class PrintJobHandler : public base::SupportsWeakPtr<PrintJobHandler> { public: PrintJobHandler(); ~PrintJobHandler(); - LocalPrintJob::CreateResult CreatePrintJob(std::string* job_id, - int* expires_in); - LocalPrintJob::SaveResult SaveLocalPrintJob(const LocalPrintJob& job, - std::string* job_id, - std::string* error_description, - int* timeout); + // Creates printer job draft + LocalPrintJob::CreateResult CreatePrintJob( + const std::string& ticket, + std::string* job_id_out, + int* expires_in_out, + int* error_timeout_out, + std::string* error_description_out); + // Creates printer job with empty ticket and "prints" it + LocalPrintJob::SaveResult SaveLocalPrintJob( + const LocalPrintJob& job, + std::string* job_id_out, + int* expires_in_out, + std::string* error_description_out, + int* timeout_out); + + // Completes printer job from draft + LocalPrintJob::SaveResult CompleteLocalPrintJob( + const LocalPrintJob& job, + const std::string& job_id, + int* expires_in_out, + std::string* error_description_out, + int* timeout_out); + + // Gives info about job + bool GetJobState(const std::string& id, LocalPrintJob::Info* info_out); + + // Saving print job directly to drive bool SavePrintJob(const std::string& content, const std::string& ticket, const base::Time& create_time, @@ -38,6 +63,34 @@ class PrintJobHandler { const std::string& file_extension); private: + // Contains ticket info and job info together + struct LocalPrintJobExtended; + + // Contains job ticket + struct LocalPrintJobDraft; + + // Contains all unexpired drafts + std::map<std::string, LocalPrintJobDraft> drafts; // id -> draft + + // Contains all unexpired jobs + std::map<std::string, LocalPrintJobExtended> jobs; // id -> printjob + + // Changes job state and creates timeouts to delete old jobs from memory + void SetJobState(const std::string& id, LocalPrintJob::State); + + // Moves draft to jobs + void CompleteDraft(const std::string& id, const LocalPrintJob& job); + + // Calculates expiration for job + // TODO(maksymb): Use base::Time for expiration + base::TimeDelta GetJobExpiration(const std::string& id) const; + + // Erases draft from memory + void ForgetDraft(const std::string& id); + + // Erases job from memory + void ForgetLocalJob(const std::string& id); + DISALLOW_COPY_AND_ASSIGN(PrintJobHandler); }; |