| Index: cloud_print/gcp20/prototype/printer.h
|
| diff --git a/cloud_print/gcp20/prototype/printer.h b/cloud_print/gcp20/prototype/printer.h
|
| index 3f402b9859d33493e759225e9e9500924ad1e66e..7b1ba50b8aab8fd38bae4f158f6a6dee1e83a459 100644
|
| --- a/cloud_print/gcp20/prototype/printer.h
|
| +++ b/cloud_print/gcp20/prototype/printer.h
|
| @@ -11,6 +11,7 @@
|
| #include "base/files/file_path.h"
|
| #include "base/memory/weak_ptr.h"
|
| #include "cloud_print/gcp20/prototype/cloud_print_requester.h"
|
| +#include "cloud_print/gcp20/prototype/cloud_print_xmpp_listener.h"
|
| #include "cloud_print/gcp20/prototype/dns_sd_server.h"
|
| #include "cloud_print/gcp20/prototype/print_job_handler.h"
|
| #include "cloud_print/gcp20/prototype/privet_http_server.h"
|
| @@ -21,7 +22,8 @@ extern const base::FilePath::CharType kPrinterStatePath[];
|
| // This class maintains work of DNS-SD server, HTTP server and others.
|
| class Printer : public base::SupportsWeakPtr<Printer>,
|
| public PrivetHttpServer::Delegate,
|
| - public CloudPrintRequester::Delegate {
|
| + public CloudPrintRequester::Delegate,
|
| + public CloudPrintXmppListener::Delegate {
|
| public:
|
| // Constructs uninitialized object.
|
| Printer();
|
| @@ -33,10 +35,7 @@ class Printer : public base::SupportsWeakPtr<Printer>,
|
| bool Start();
|
|
|
| // Returns true if printer was started.
|
| - bool IsOnline() const;
|
| -
|
| - // Method for trying to reconnecting to server.
|
| - void WakeUp();
|
| + bool IsRunning() const;
|
|
|
| // Stops all servers.
|
| void Stop();
|
| @@ -69,6 +68,7 @@ class Printer : public base::SupportsWeakPtr<Printer>,
|
| std::string user;
|
| std::string refresh_token;
|
| std::string device_id;
|
| + std::string xmpp_jid;
|
| RegistrationState state;
|
| ConfirmationState confirmation_state;
|
|
|
| @@ -116,16 +116,55 @@ class Printer : public base::SupportsWeakPtr<Printer>,
|
| const std::string& complete_invite_url,
|
| const std::string& device_id) OVERRIDE;
|
| virtual void OnGetAuthCodeResponseParsed(
|
| - const std::string& refresh_token) OVERRIDE;
|
| + const std::string& refresh_token,
|
| + const std::string& access_token,
|
| + int access_token_expires_in_seconds) OVERRIDE;
|
| + virtual void OnXmppJidReceived(const std::string& xmpp_jid) OVERRIDE;
|
| + virtual void OnAccesstokenReceviced(const std::string& access_token,
|
| + int expires_in_seconds) OVERRIDE;
|
| virtual void OnRegistrationError(const std::string& description) OVERRIDE;
|
| - virtual void OnServerError(const std::string& description) OVERRIDE;
|
| virtual void OnNetworkError() OVERRIDE;
|
| + virtual void OnServerError(const std::string& description) OVERRIDE;
|
| + virtual void OnAuthError() OVERRIDE;
|
| + virtual std::string GetAccessToken() OVERRIDE;
|
| virtual void OnPrintJobsAvailable(
|
| const std::vector<cloud_print_response_parser::Job>& jobs) OVERRIDE;
|
| virtual void OnPrintJobDownloaded(
|
| const cloud_print_response_parser::Job& job) OVERRIDE;
|
| virtual void OnPrintJobDone() OVERRIDE;
|
|
|
| + // CloudPrintXmppListener::Delegate methods:
|
| + virtual void OnXmppConnected() OVERRIDE;
|
| + virtual void OnXmppAuthError() OVERRIDE;
|
| + virtual void OnXmppNetworkError() OVERRIDE;
|
| + virtual void OnXmppNewPrintJob(const std::string& device_id) OVERRIDE;
|
| + virtual void OnXmppNewLocalSettings(const std::string& device_id) OVERRIDE;
|
| + virtual void OnXmppDeleteNotification(const std::string& device_id) OVERRIDE;
|
| +
|
| + // Method for trying to reconnecting to server on start or after network fail.
|
| + void TryConnect();
|
| +
|
| + // Connects XMPP.
|
| + void ConnectXmpp();
|
| +
|
| + // Method to handle pending events.
|
| + // Do *NOT* call this method instantly. Only with |PostOnIdle|.
|
| + void OnIdle();
|
| +
|
| + // Method for checking printer status.
|
| + // (e.g. printjobs, local settings, deleted status).
|
| + void CheckPendingUpdates();
|
| +
|
| + // Ask CloudPrint server for new local sendings.
|
| + void GetLocalSettings();
|
| +
|
| + // Ask CloudPrint server for printjobs.
|
| + void FetchPrintJobs();
|
| +
|
| + // Saves |access_token| and calculates time for next update.
|
| + void RememberAccessToken(const std::string& access_token,
|
| + int expires_in_seconds);
|
| +
|
| // Checks if register call is called correctly (|user| is correct,
|
| // error is no set etc). Returns |false| if error status is put into |status|.
|
| // Otherwise no error was occurred.
|
| @@ -141,18 +180,12 @@ class Printer : public base::SupportsWeakPtr<Printer>,
|
| // Creates data for DNS TXT respond.
|
| std::vector<std::string> CreateTxt() const;
|
|
|
| - // Ask CloudPrint server for printjobs.
|
| - void FetchPrintJobs();
|
| -
|
| // Saving and loading registration info from file.
|
| void SaveToFile(const base::FilePath& file_path) const;
|
| bool LoadFromFile(const base::FilePath& file_path);
|
|
|
| - // Adds |WakeUp| method to the MessageLoop.
|
| - void PostWakeUp();
|
| -
|
| - // Adds |WakeUp| method to the MessageLoop with certain |delay|.
|
| - void PostDelayedWakeUp(const base::TimeDelta& delay);
|
| + // Adds |OnIdle| method to the MessageLoop.
|
| + void PostOnIdle();
|
|
|
| // Converts errors.
|
| PrivetHttpServer::RegistrationErrorStatus ConfirmationToRegistrationError(
|
| @@ -177,13 +210,29 @@ class Printer : public base::SupportsWeakPtr<Printer>,
|
| // Contains CloudPrint client.
|
| scoped_ptr<CloudPrintRequester> requester_;
|
|
|
| + // XMPP Listener.
|
| + scoped_ptr<CloudPrintXmppListener> xmpp_listener_;
|
| +
|
| XPrivetToken xtoken_;
|
|
|
| scoped_ptr<PrintJobHandler> print_job_handler_;
|
|
|
| + // Last valid |access_token|.
|
| + std::string access_token_;
|
| + base::Time access_token_update_;
|
| +
|
| // Uses for calculating uptime.
|
| base::Time starttime_;
|
|
|
| + // Used for preventing two and more OnIdle posted in message loop.
|
| + bool on_idle_posted_;
|
| +
|
| + // Contains |true| if Printer has to check pending local settings.
|
| + bool pending_local_settings_check_;
|
| +
|
| + // Contains |true| if Printer has to check available printjobs.
|
| + bool pending_print_jobs_check_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(Printer);
|
| };
|
|
|
|
|