Index: cloud_print/gcp20/prototype/printer.h |
diff --git a/cloud_print/gcp20/prototype/printer.h b/cloud_print/gcp20/prototype/printer.h |
index c225d80f85375a51f4ca0f72f9e677bf78d5dc37..0326621e08a2403a9a9b4135ed347834943fc7aa 100644 |
--- a/cloud_print/gcp20/prototype/printer.h |
+++ b/cloud_print/gcp20/prototype/printer.h |
@@ -10,14 +10,16 @@ |
#include "cloud_print/gcp20/prototype/cloud_print_requester.h" |
#include "cloud_print/gcp20/prototype/dns_sd_server.h" |
+#include "cloud_print/gcp20/prototype/printjob_handler.h" |
#include "cloud_print/gcp20/prototype/privet_http_server.h" |
#include "cloud_print/gcp20/prototype/x_privet_token.h" |
extern const char kPrinterStatePath[]; |
-// This class maintain work of DNS-SD server, HTTP server and others. |
+// This class maintains work of DNS-SD server, HTTP server and others. |
class Printer : public PrivetHttpServer::Delegate, |
- public CloudPrintRequester::Delegate { |
+ public CloudPrintRequester::Delegate, |
+ public base::SupportsWeakPtr<Printer> { |
public: |
// Constructs uninitialized object. |
Printer(); |
@@ -31,6 +33,9 @@ class Printer : public PrivetHttpServer::Delegate, |
// Returns true if printer was started. |
bool IsOnline() const; |
+ // Method for trying to reconnecting to server. |
+ void WakeUp(); |
+ |
// Stops all servers. |
void Stop(); |
@@ -74,6 +79,12 @@ class Printer : public PrivetHttpServer::Delegate, |
REG_ACTION_COMPLETE, |
REG_ACTION_CANCEL |
}; |
+ enum ConnectionState { |
+ NOT_CONFIGURED, |
+ OFFLINE, |
+ ONLINE, |
+ CONNECTING |
+ }; |
// PrivetHttpServer::Delegate methods: |
virtual PrivetHttpServer::RegistrationErrorStatus RegistrationStart( |
@@ -100,6 +111,12 @@ class Printer : public PrivetHttpServer::Delegate, |
virtual void OnGetAuthCodeResponseParsed( |
const std::string& refresh_token) OVERRIDE; |
virtual void OnRegistrationError(const std::string& description) OVERRIDE; |
+ virtual void OnServerError(const std::string& description) OVERRIDE; |
+ virtual void OnNetworkError() OVERRIDE; |
+ virtual void OnPrintjobsAvailable( |
+ const std::vector<Printjob>& printjobs) OVERRIDE; |
+ virtual void OnPrintjobDownloaded(const Printjob& printjob) OVERRIDE; |
+ virtual void OnPrintjobDone() OVERRIDE; |
// Checks if register call is called correctly (|user| is correct, |
// error is no set etc). Returns |false| if error status is put into |status|. |
@@ -107,23 +124,37 @@ class Printer : public PrivetHttpServer::Delegate, |
PrivetHttpServer::RegistrationErrorStatus CheckCommonRegErrors( |
const std::string& user) const; |
- // Generates ProxyId for this device. |
- std::string GenerateProxyId() const; |
- |
// Checks if confirmation was received. |
void WaitUserConfirmation(base::Time valid_until); |
+ // Generates ProxyId for this device. |
+ std::string GenerateProxyId() const; |
+ |
// 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 std::string& filename) const; |
bool LoadFromFile(const std::string& filename); |
+ // Adds |WakeUp| method to the MessageLoop. |
+ void PostWakeUp(); |
+ |
+ // Adds |WakeUp| method to the MessageLoop with certain |delay|. |
+ void PostDelayedWakeUp(const base::TimeDelta& delay); |
+ |
// Converts errors. |
PrivetHttpServer::RegistrationErrorStatus ConfirmationToRegistrationError( |
RegistrationInfo::ConfirmationState state); |
+ std::string ConnectionStateToString(ConnectionState state) const; |
+ |
+ // Changes state and update info in DNS server. |
+ bool ChangeState(ConnectionState new_state); |
+ |
RegistrationInfo reg_info_; |
// Contains DNS-SD server. |
@@ -132,11 +163,16 @@ class Printer : public PrivetHttpServer::Delegate, |
// Contains Privet HTTP server. |
PrivetHttpServer http_server_; |
- // Contains Cloud Print client. |
+ // Connection state of device. |
+ ConnectionState connection_state_; |
+ |
+ // Contains CloudPrint client. |
scoped_ptr<CloudPrintRequester> requester_; |
XPrivetToken xtoken_; |
+ scoped_ptr<PrintjobHandler> printjob_handler_; |
+ |
// Uses for calculating uptime. |
base::Time starttime_; |