Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Side by Side Diff: cloud_print/gcp20/prototype/printer.h

Issue 19866002: GCP2.0 Device: Receiving printjobs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@confirmation
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef GCP20_PROTOTYPE_PRINTER_H_ 5 #ifndef GCP20_PROTOTYPE_PRINTER_H_
6 #define GCP20_PROTOTYPE_PRINTER_H_ 6 #define GCP20_PROTOTYPE_PRINTER_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "cloud_print/gcp20/prototype/cloud_print_requester.h" 11 #include "cloud_print/gcp20/prototype/cloud_print_requester.h"
12 #include "cloud_print/gcp20/prototype/dns_sd_server.h" 12 #include "cloud_print/gcp20/prototype/dns_sd_server.h"
13 #include "cloud_print/gcp20/prototype/printjob_handler.h"
13 #include "cloud_print/gcp20/prototype/privet_http_server.h" 14 #include "cloud_print/gcp20/prototype/privet_http_server.h"
14 #include "cloud_print/gcp20/prototype/x_privet_token.h" 15 #include "cloud_print/gcp20/prototype/x_privet_token.h"
15 16
16 extern const char kPrinterStatePath[]; 17 extern const char kPrinterStatePath[];
17 18
18 // This class maintain work of DNS-SD server, HTTP server and others. 19 // This class maintains work of DNS-SD server, HTTP server and others.
19 class Printer : public PrivetHttpServer::Delegate, 20 class Printer : public PrivetHttpServer::Delegate,
20 public CloudPrintRequester::Delegate { 21 public CloudPrintRequester::Delegate,
22 public base::SupportsWeakPtr<Printer> {
21 public: 23 public:
22 // Constructs uninitialized object. 24 // Constructs uninitialized object.
23 Printer(); 25 Printer();
24 26
25 // Destroys the object. 27 // Destroys the object.
26 virtual ~Printer(); 28 virtual ~Printer();
27 29
28 // Starts all servers. 30 // Starts all servers.
29 bool Start(); 31 bool Start();
30 32
31 // Returns true if printer was started. 33 // Returns true if printer was started.
32 bool IsOnline() const; 34 bool IsOnline() const;
33 35
36 // Method for trying to reconnecting to server.
37 void WakeUp();
38
34 // Stops all servers. 39 // Stops all servers.
35 void Stop(); 40 void Stop();
36 41
37 private: 42 private:
38 struct RegistrationInfo { 43 struct RegistrationInfo {
39 enum RegistrationState { 44 enum RegistrationState {
40 DEV_REG_UNREGISTERED, 45 DEV_REG_UNREGISTERED,
41 DEV_REG_REGISTRATION_STARTED, 46 DEV_REG_REGISTRATION_STARTED,
42 DEV_REG_REGISTRATION_CLAIM_TOKEN_READY, 47 DEV_REG_REGISTRATION_CLAIM_TOKEN_READY,
43 DEV_REG_REGISTRATION_COMPLETING, 48 DEV_REG_REGISTRATION_COMPLETING,
(...skipping 23 matching lines...) Expand all
67 // Contains error response if |DEV_REG_REGISTRATION_ERROR| is set. 72 // Contains error response if |DEV_REG_REGISTRATION_ERROR| is set.
68 std::string error_description; 73 std::string error_description;
69 }; 74 };
70 75
71 enum RegistrationAction { 76 enum RegistrationAction {
72 REG_ACTION_START, 77 REG_ACTION_START,
73 REG_ACTION_GET_CLAIM_TOKEN, 78 REG_ACTION_GET_CLAIM_TOKEN,
74 REG_ACTION_COMPLETE, 79 REG_ACTION_COMPLETE,
75 REG_ACTION_CANCEL 80 REG_ACTION_CANCEL
76 }; 81 };
82 enum ConnectionState {
83 NOT_CONFIGURED,
84 OFFLINE,
85 ONLINE,
86 CONNECTING
87 };
77 88
78 // PrivetHttpServer::Delegate methods: 89 // PrivetHttpServer::Delegate methods:
79 virtual PrivetHttpServer::RegistrationErrorStatus RegistrationStart( 90 virtual PrivetHttpServer::RegistrationErrorStatus RegistrationStart(
80 const std::string& user) OVERRIDE; 91 const std::string& user) OVERRIDE;
81 virtual PrivetHttpServer::RegistrationErrorStatus RegistrationGetClaimToken( 92 virtual PrivetHttpServer::RegistrationErrorStatus RegistrationGetClaimToken(
82 const std::string& user, 93 const std::string& user,
83 std::string* token, 94 std::string* token,
84 std::string* claim_url) OVERRIDE; 95 std::string* claim_url) OVERRIDE;
85 virtual PrivetHttpServer::RegistrationErrorStatus RegistrationComplete( 96 virtual PrivetHttpServer::RegistrationErrorStatus RegistrationComplete(
86 const std::string& user, 97 const std::string& user,
87 std::string* device_id) OVERRIDE; 98 std::string* device_id) OVERRIDE;
88 virtual PrivetHttpServer::RegistrationErrorStatus RegistrationCancel( 99 virtual PrivetHttpServer::RegistrationErrorStatus RegistrationCancel(
89 const std::string& user) OVERRIDE; 100 const std::string& user) OVERRIDE;
90 virtual void GetRegistrationServerError(std::string* description) OVERRIDE; 101 virtual void GetRegistrationServerError(std::string* description) OVERRIDE;
91 virtual void CreateInfo(PrivetHttpServer::DeviceInfo* info) OVERRIDE; 102 virtual void CreateInfo(PrivetHttpServer::DeviceInfo* info) OVERRIDE;
92 virtual bool IsRegistered() const OVERRIDE; 103 virtual bool IsRegistered() const OVERRIDE;
93 virtual bool CheckXPrivetTokenHeader(const std::string& token) const OVERRIDE; 104 virtual bool CheckXPrivetTokenHeader(const std::string& token) const OVERRIDE;
94 105
95 // CloudRequester::Delegate methods: 106 // CloudRequester::Delegate methods:
96 virtual void OnRegistrationStartResponseParsed( 107 virtual void OnRegistrationStartResponseParsed(
97 const std::string& registration_token, 108 const std::string& registration_token,
98 const std::string& complete_invite_url, 109 const std::string& complete_invite_url,
99 const std::string& device_id) OVERRIDE; 110 const std::string& device_id) OVERRIDE;
100 virtual void OnGetAuthCodeResponseParsed( 111 virtual void OnGetAuthCodeResponseParsed(
101 const std::string& refresh_token) OVERRIDE; 112 const std::string& refresh_token) OVERRIDE;
102 virtual void OnRegistrationError(const std::string& description) OVERRIDE; 113 virtual void OnRegistrationError(const std::string& description) OVERRIDE;
114 virtual void OnServerError(const std::string& description) OVERRIDE;
115 virtual void OnNetworkError() OVERRIDE;
116 virtual void OnPrintjobsAvailable(
117 const std::vector<Printjob>& printjobs) OVERRIDE;
118 virtual void OnPrintjobDownloaded(const Printjob& printjob) OVERRIDE;
119 virtual void OnPrintjobDone() OVERRIDE;
103 120
104 // Checks if register call is called correctly (|user| is correct, 121 // Checks if register call is called correctly (|user| is correct,
105 // error is no set etc). Returns |false| if error status is put into |status|. 122 // error is no set etc). Returns |false| if error status is put into |status|.
106 // Otherwise no error was occurred. 123 // Otherwise no error was occurred.
107 PrivetHttpServer::RegistrationErrorStatus CheckCommonRegErrors( 124 PrivetHttpServer::RegistrationErrorStatus CheckCommonRegErrors(
108 const std::string& user) const; 125 const std::string& user) const;
109 126
127 // Checks if confirmation was received.
128 void WaitUserConfirmation(base::Time valid_until);
129
110 // Generates ProxyId for this device. 130 // Generates ProxyId for this device.
111 std::string GenerateProxyId() const; 131 std::string GenerateProxyId() const;
112 132
113 // Checks if confirmation was received.
114 void WaitUserConfirmation(base::Time valid_until);
115
116 // Creates data for DNS TXT respond. 133 // Creates data for DNS TXT respond.
117 std::vector<std::string> CreateTxt() const; 134 std::vector<std::string> CreateTxt() const;
118 135
136 // Ask CloudPrint server for printjobs.
137 void FetchPrintjobs();
138
119 // Saving and loading registration info from file. 139 // Saving and loading registration info from file.
120 void SaveToFile(const std::string& filename) const; 140 void SaveToFile(const std::string& filename) const;
121 bool LoadFromFile(const std::string& filename); 141 bool LoadFromFile(const std::string& filename);
122 142
143 // Adds |WakeUp| method to the MessageLoop.
144 void PostWakeUp();
145
146 // Adds |WakeUp| method to the MessageLoop with certain |delay|.
147 void PostDelayedWakeUp(const base::TimeDelta& delay);
148
123 // Converts errors. 149 // Converts errors.
124 PrivetHttpServer::RegistrationErrorStatus ConfirmationToRegistrationError( 150 PrivetHttpServer::RegistrationErrorStatus ConfirmationToRegistrationError(
125 RegistrationInfo::ConfirmationState state); 151 RegistrationInfo::ConfirmationState state);
126 152
153 std::string ConnectionStateToString(ConnectionState state) const;
154
155 // Changes state and update info in DNS server.
156 bool ChangeState(ConnectionState new_state);
157
127 RegistrationInfo reg_info_; 158 RegistrationInfo reg_info_;
128 159
129 // Contains DNS-SD server. 160 // Contains DNS-SD server.
130 DnsSdServer dns_server_; 161 DnsSdServer dns_server_;
131 162
132 // Contains Privet HTTP server. 163 // Contains Privet HTTP server.
133 PrivetHttpServer http_server_; 164 PrivetHttpServer http_server_;
134 165
135 // Contains Cloud Print client. 166 // Connection state of device.
167 ConnectionState connection_state_;
168
169 // Contains CloudPrint client.
136 scoped_ptr<CloudPrintRequester> requester_; 170 scoped_ptr<CloudPrintRequester> requester_;
137 171
138 XPrivetToken xtoken_; 172 XPrivetToken xtoken_;
139 173
174 scoped_ptr<PrintjobHandler> printjob_handler_;
175
140 // Uses for calculating uptime. 176 // Uses for calculating uptime.
141 base::Time starttime_; 177 base::Time starttime_;
142 178
143 DISALLOW_COPY_AND_ASSIGN(Printer); 179 DISALLOW_COPY_AND_ASSIGN(Printer);
144 }; 180 };
145 181
146 #endif // GCP20_PROTOTYPE_PRINTER_H_ 182 #endif // GCP20_PROTOTYPE_PRINTER_H_
147 183
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698