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

Side by Side Diff: chrome/browser/sync/engine/net/server_connection_manager.h

Issue 6142009: Upating the app, ceee, chrome, ipc, media, and net directories to use the correct lock.h file. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Unified patch updating all references to the new base/synchronization/lock.h Created 9 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 CHROME_BROWSER_SYNC_ENGINE_NET_SERVER_CONNECTION_MANAGER_H_ 5 #ifndef CHROME_BROWSER_SYNC_ENGINE_NET_SERVER_CONNECTION_MANAGER_H_
6 #define CHROME_BROWSER_SYNC_ENGINE_NET_SERVER_CONNECTION_MANAGER_H_ 6 #define CHROME_BROWSER_SYNC_ENGINE_NET_SERVER_CONNECTION_MANAGER_H_
7 #pragma once 7 #pragma once
8 8
9 #include <iosfwd> 9 #include <iosfwd>
10 #include <string> 10 #include <string>
11 11
12 #include "base/atomicops.h" 12 #include "base/atomicops.h"
13 #include "base/lock.h"
14 #include "base/string_util.h" 13 #include "base/string_util.h"
14 #include "base/synchronization/lock.h"
15 #include "chrome/browser/sync/syncable/syncable_id.h" 15 #include "chrome/browser/sync/syncable/syncable_id.h"
16 #include "chrome/common/deprecated/event_sys.h" 16 #include "chrome/common/deprecated/event_sys.h"
17 #include "chrome/common/deprecated/event_sys-inl.h" 17 #include "chrome/common/deprecated/event_sys-inl.h"
18 #include "chrome/common/net/http_return.h" 18 #include "chrome/common/net/http_return.h"
19 19
20 namespace syncable { 20 namespace syncable {
21 class WriteTransaction; 21 class WriteTransaction;
22 class DirectoryManager; 22 class DirectoryManager;
23 } 23 }
24 24
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 DISALLOW_COPY_AND_ASSIGN(ScopedServerStatusWatcher); 142 DISALLOW_COPY_AND_ASSIGN(ScopedServerStatusWatcher);
143 }; 143 };
144 144
145 // Use this class to interact with the sync server. 145 // Use this class to interact with the sync server.
146 // The ServerConnectionManager currently supports POSTing protocol buffers. 146 // The ServerConnectionManager currently supports POSTing protocol buffers.
147 // 147 //
148 // *** This class is thread safe. In fact, you should consider creating only 148 // *** This class is thread safe. In fact, you should consider creating only
149 // one instance for every server that you need to talk to. 149 // one instance for every server that you need to talk to.
150 class ServerConnectionManager { 150 class ServerConnectionManager {
151 public: 151 public:
152 typedef EventChannel<ServerConnectionEvent, Lock> Channel; 152 typedef EventChannel<ServerConnectionEvent, base::Lock> Channel;
153 153
154 // buffer_in - will be POSTed 154 // buffer_in - will be POSTed
155 // buffer_out - string will be overwritten with response 155 // buffer_out - string will be overwritten with response
156 struct PostBufferParams { 156 struct PostBufferParams {
157 const std::string& buffer_in; 157 const std::string& buffer_in;
158 std::string* buffer_out; 158 std::string* buffer_out;
159 HttpResponse* response; 159 HttpResponse* response;
160 RequestTimingInfo* timing_info; 160 RequestTimingInfo* timing_info;
161 }; 161 };
162 162
(...skipping 22 matching lines...) Expand all
185 RequestTimingInfo* timing_info() { return timing_info_; } 185 RequestTimingInfo* timing_info() { return timing_info_; }
186 186
187 protected: 187 protected:
188 std::string MakeConnectionURL(const std::string& sync_server, 188 std::string MakeConnectionURL(const std::string& sync_server,
189 const std::string& path, 189 const std::string& path,
190 bool use_ssl) const; 190 bool use_ssl) const;
191 191
192 void GetServerParams(std::string* server, 192 void GetServerParams(std::string* server,
193 int* server_port, 193 int* server_port,
194 bool* use_ssl) const { 194 bool* use_ssl) const {
195 AutoLock lock(scm_->server_parameters_mutex_); 195 base::AutoLock lock(scm_->server_parameters_mutex_);
196 server->assign(scm_->sync_server_); 196 server->assign(scm_->sync_server_);
197 *server_port = scm_->sync_server_port_; 197 *server_port = scm_->sync_server_port_;
198 *use_ssl = scm_->use_ssl_; 198 *use_ssl = scm_->use_ssl_;
199 } 199 }
200 200
201 std::string buffer_; 201 std::string buffer_;
202 ServerConnectionManager* scm_; 202 ServerConnectionManager* scm_;
203 203
204 private: 204 private:
205 int ReadResponse(void* buffer, int length); 205 int ReadResponse(void* buffer, int length);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 bool use_ssl); 262 bool use_ssl);
263 263
264 // Returns the current server parameters in server_url, port and use_ssl. 264 // Returns the current server parameters in server_url, port and use_ssl.
265 void GetServerParameters(std::string* server_url, 265 void GetServerParameters(std::string* server_url,
266 int* port, 266 int* port,
267 bool* use_ssl) const; 267 bool* use_ssl) const;
268 268
269 std::string GetServerHost() const; 269 std::string GetServerHost() const;
270 270
271 bool terminate_all_io() const { 271 bool terminate_all_io() const {
272 AutoLock lock(terminate_all_io_mutex_); 272 base::AutoLock lock(terminate_all_io_mutex_);
273 return terminate_all_io_; 273 return terminate_all_io_;
274 } 274 }
275 275
276 // Factory method to create a Post object we can use for communication with 276 // Factory method to create a Post object we can use for communication with
277 // the server. 277 // the server.
278 virtual Post* MakePost(); 278 virtual Post* MakePost();
279 279
280 void set_client_id(const std::string& client_id) { 280 void set_client_id(const std::string& client_id) {
281 DCHECK(client_id_.empty()); 281 DCHECK(client_id_.empty());
282 client_id_.assign(client_id); 282 client_id_.assign(client_id);
283 } 283 }
284 284
285 void set_auth_token(const std::string& auth_token) { 285 void set_auth_token(const std::string& auth_token) {
286 // TODO(chron): Consider adding a message loop check here. 286 // TODO(chron): Consider adding a message loop check here.
287 AutoLock lock(auth_token_mutex_); 287 base::AutoLock lock(auth_token_mutex_);
288 auth_token_.assign(auth_token); 288 auth_token_.assign(auth_token);
289 } 289 }
290 290
291 const std::string auth_token() const { 291 const std::string auth_token() const {
292 AutoLock lock(auth_token_mutex_); 292 base::AutoLock lock(auth_token_mutex_);
293 return auth_token_; 293 return auth_token_;
294 } 294 }
295 295
296 protected: 296 protected:
297 inline std::string proto_sync_path() const { 297 inline std::string proto_sync_path() const {
298 AutoLock lock(path_mutex_); 298 base::AutoLock lock(path_mutex_);
299 return proto_sync_path_; 299 return proto_sync_path_;
300 } 300 }
301 301
302 std::string get_time_path() const { 302 std::string get_time_path() const {
303 AutoLock lock(path_mutex_); 303 base::AutoLock lock(path_mutex_);
304 return get_time_path_; 304 return get_time_path_;
305 } 305 }
306 306
307 // Called wherever a failure should be taken as an indication that we may 307 // Called wherever a failure should be taken as an indication that we may
308 // be experiencing connection difficulties. 308 // be experiencing connection difficulties.
309 virtual bool IncrementErrorCount(); 309 virtual bool IncrementErrorCount();
310 310
311 // NOTE: Tests rely on this protected function being virtual. 311 // NOTE: Tests rely on this protected function being virtual.
312 // 312 //
313 // Internal PostBuffer base function. 313 // Internal PostBuffer base function.
314 virtual bool PostBufferToPath(const PostBufferParams*, 314 virtual bool PostBufferToPath(const PostBufferParams*,
315 const std::string& path, 315 const std::string& path,
316 const std::string& auth_token, 316 const std::string& auth_token,
317 ScopedServerStatusWatcher* watcher); 317 ScopedServerStatusWatcher* watcher);
318 318
319 // Protects access to sync_server_, sync_server_port_ and use_ssl_: 319 // Protects access to sync_server_, sync_server_port_ and use_ssl_:
320 mutable Lock server_parameters_mutex_; 320 mutable base::Lock server_parameters_mutex_;
321 321
322 // The sync_server_ is the server that requests will be made to. 322 // The sync_server_ is the server that requests will be made to.
323 std::string sync_server_; 323 std::string sync_server_;
324 324
325 // The sync_server_port_ is the port that HTTP requests will be made on. 325 // The sync_server_port_ is the port that HTTP requests will be made on.
326 int sync_server_port_; 326 int sync_server_port_;
327 327
328 // The unique id of the user's client. 328 // The unique id of the user's client.
329 std::string client_id_; 329 std::string client_id_;
330 330
331 // The user-agent string for HTTP. 331 // The user-agent string for HTTP.
332 std::string user_agent_; 332 std::string user_agent_;
333 333
334 // Indicates whether or not requests should be made using HTTPS. 334 // Indicates whether or not requests should be made using HTTPS.
335 bool use_ssl_; 335 bool use_ssl_;
336 336
337 // The paths we post to. 337 // The paths we post to.
338 mutable Lock path_mutex_; 338 mutable base::Lock path_mutex_;
339 std::string proto_sync_path_; 339 std::string proto_sync_path_;
340 std::string get_time_path_; 340 std::string get_time_path_;
341 341
342 mutable Lock auth_token_mutex_; 342 mutable base::Lock auth_token_mutex_;
343 // The auth token to use in authenticated requests. Set by the AuthWatcher. 343 // The auth token to use in authenticated requests. Set by the AuthWatcher.
344 std::string auth_token_; 344 std::string auth_token_;
345 345
346 Lock error_count_mutex_; // Protects error_count_ 346 base::Lock error_count_mutex_; // Protects error_count_
347 int error_count_; // Tracks the number of connection errors. 347 int error_count_; // Tracks the number of connection errors.
348 348
349 Channel* const channel_; 349 Channel* const channel_;
350 350
351 // Volatile so various threads can call server_status() without 351 // Volatile so various threads can call server_status() without
352 // synchronization. 352 // synchronization.
353 volatile HttpResponse::ServerConnectionCode server_status_; 353 volatile HttpResponse::ServerConnectionCode server_status_;
354 bool server_reachable_; 354 bool server_reachable_;
355 355
356 // A counter that is incremented everytime ResetAuthStatus() is called. 356 // A counter that is incremented everytime ResetAuthStatus() is called.
357 volatile base::subtle::AtomicWord reset_count_; 357 volatile base::subtle::AtomicWord reset_count_;
358 358
359 private: 359 private:
360 friend class Post; 360 friend class Post;
361 friend class ScopedServerStatusWatcher; 361 friend class ScopedServerStatusWatcher;
362 362
363 void NotifyStatusChanged(); 363 void NotifyStatusChanged();
364 void ResetConnection(); 364 void ResetConnection();
365 365
366 mutable Lock terminate_all_io_mutex_; 366 mutable base::Lock terminate_all_io_mutex_;
367 bool terminate_all_io_; // When set to true, terminate all connections asap. 367 bool terminate_all_io_; // When set to true, terminate all connections asap.
368 DISALLOW_COPY_AND_ASSIGN(ServerConnectionManager); 368 DISALLOW_COPY_AND_ASSIGN(ServerConnectionManager);
369 }; 369 };
370 370
371 // Fills a ClientToServerMessage with the appropriate share and birthday 371 // Fills a ClientToServerMessage with the appropriate share and birthday
372 // settings. 372 // settings.
373 bool FillMessageWithShareDetails(sync_pb::ClientToServerMessage* csm, 373 bool FillMessageWithShareDetails(sync_pb::ClientToServerMessage* csm,
374 syncable::DirectoryManager* manager, 374 syncable::DirectoryManager* manager,
375 const std::string& share); 375 const std::string& share);
376 376
377 std::ostream& operator<<(std::ostream& s, const struct HttpResponse& hr); 377 std::ostream& operator<<(std::ostream& s, const struct HttpResponse& hr);
378 378
379 } // namespace browser_sync 379 } // namespace browser_sync
380 380
381 #endif // CHROME_BROWSER_SYNC_ENGINE_NET_SERVER_CONNECTION_MANAGER_H_ 381 #endif // CHROME_BROWSER_SYNC_ENGINE_NET_SERVER_CONNECTION_MANAGER_H_
OLDNEW
« no previous file with comments | « chrome/browser/sync/engine/all_status.cc ('k') | chrome/browser/sync/engine/net/server_connection_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698