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

Side by Side Diff: chrome/browser/sync/engine/syncapi.cc

Issue 193103: Build sync engine as part of the browser build (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 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
« no previous file with comments | « chrome/browser/sync/engine/syncapi.h ('k') | chrome/browser/sync/engine/syncer_thread.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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 #include "chrome/browser/sync/engine/syncapi.h" 5 #include "chrome/browser/sync/engine/syncapi.h"
6 6
7 #if defined(OS_WINDOWS) 7 #include "build/build_config.h"
8
9 #if defined(OS_WIN)
8 #include <windows.h> 10 #include <windows.h>
9 #include <iphlpapi.h> 11 #include <iphlpapi.h>
10 #endif 12 #endif
11 13
12 #include <iomanip> 14 #include <iomanip>
13 #include <list> 15 #include <list>
14 #include <string> 16 #include <string>
15 #include <vector> 17 #include <vector>
16 18
17 #include "base/at_exit.h" 19 #include "base/at_exit.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 // of multiple threads, and if some other part also tries to call InitLogFiles 72 // of multiple threads, and if some other part also tries to call InitLogFiles
71 // apart from this file. But this is okay for now since this is the only place 73 // apart from this file. But this is okay for now since this is the only place
72 // we call InitLogFiles. 74 // we call InitLogFiles.
73 namespace { 75 namespace {
74 static bool g_log_files_initialized = false; 76 static bool g_log_files_initialized = false;
75 static base::AtExitManager g_at_exit_manager; // Necessary for NewCallback. 77 static base::AtExitManager g_at_exit_manager; // Necessary for NewCallback.
76 } // namespace 78 } // namespace
77 79
78 struct ThreadParams { 80 struct ThreadParams {
79 browser_sync::ServerConnectionManager* conn_mgr; 81 browser_sync::ServerConnectionManager* conn_mgr;
80 #if defined(OS_WINDOWS) 82 #if defined(OS_WIN)
81 HANDLE exit_flag; 83 HANDLE exit_flag;
82 #endif 84 #endif
83 }; 85 };
84 86
85 // This thread calls CheckServerReachable() whenever a change occurs in the 87 // This thread calls CheckServerReachable() whenever a change occurs in the
86 // table that maps IP addresses to interfaces, for example when the user 88 // table that maps IP addresses to interfaces, for example when the user
87 // unplugs his network cable. 89 // unplugs his network cable.
88 void* AddressWatchThread(void* arg) { 90 void* AddressWatchThread(void* arg) {
89 NameCurrentThreadForDebugging("SyncEngine_AddressWatcher"); 91 NameCurrentThreadForDebugging("SyncEngine_AddressWatcher");
90 LOG(INFO) << "starting the address watch thread"; 92 LOG(INFO) << "starting the address watch thread";
91 const ThreadParams* const params = reinterpret_cast<const ThreadParams*>(arg); 93 const ThreadParams* const params = reinterpret_cast<const ThreadParams*>(arg);
92 #if defined(OS_WINDOWS) 94 #if defined(OS_WIN)
93 OVERLAPPED overlapped = {0}; 95 OVERLAPPED overlapped = {0};
94 overlapped.hEvent = CreateEvent(NULL, FALSE, TRUE, NULL); 96 overlapped.hEvent = CreateEvent(NULL, FALSE, TRUE, NULL);
95 HANDLE file; 97 HANDLE file;
96 DWORD rc = WAIT_OBJECT_0; 98 DWORD rc = WAIT_OBJECT_0;
97 while (true) { 99 while (true) {
98 // Only call NotifyAddrChange() after the IP address has changed or if this 100 // Only call NotifyAddrChange() after the IP address has changed or if this
99 // is the first time through the loop. 101 // is the first time through the loop.
100 if (WAIT_OBJECT_0 == rc) { 102 if (WAIT_OBJECT_0 == rc) {
101 ResetEvent(overlapped.hEvent); 103 ResetEvent(overlapped.hEvent);
102 DWORD notify_result = NotifyAddrChange(&file, &overlapped); 104 DWORD notify_result = NotifyAddrChange(&file, &overlapped);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 return false; 163 return false;
162 } 164 }
163 165
164 static bool EndsWithSpace(const string16& string) { 166 static bool EndsWithSpace(const string16& string) {
165 return !string.empty() && *string.rbegin() == ' '; 167 return !string.empty() && *string.rbegin() == ' ';
166 } 168 }
167 169
168 static inline void String16ToPathString(const sync_char16 *in, 170 static inline void String16ToPathString(const sync_char16 *in,
169 PathString *out) { 171 PathString *out) {
170 string16 in_str(in); 172 string16 in_str(in);
171 #if defined(OS_WINDOWS) 173 #if defined(OS_WIN)
172 out->assign(in_str); 174 out->assign(in_str);
173 #else 175 #else
174 UTF16ToUTF8(in_str.c_str(), in_str.length(), out); 176 UTF16ToUTF8(in_str.c_str(), in_str.length(), out);
175 #endif 177 #endif
176 } 178 }
177 179
178 static inline void PathStringToString16(const PathString& in, string16* out) { 180 static inline void PathStringToString16(const PathString& in, string16* out) {
179 #if defined(OS_WINDOWS) 181 #if defined(OS_WIN)
180 out->assign(in); 182 out->assign(in);
181 #else 183 #else
182 UTF8ToUTF16(in.c_str(), in.length(), out); 184 UTF8ToUTF16(in.c_str(), in.length(), out);
183 #endif 185 #endif
184 } 186 }
185 187
186 // When taking a name from the syncapi, append a space if it matches the 188 // When taking a name from the syncapi, append a space if it matches the
187 // pattern of a server-illegal name followed by zero or more spaces. 189 // pattern of a server-illegal name followed by zero or more spaces.
188 static void SyncAPINameToServerName(const sync_char16 *sync_api_name, 190 static void SyncAPINameToServerName(const sync_char16 *sync_api_name,
189 PathString* out) { 191 PathString* out) {
(...skipping 816 matching lines...) Expand 10 before | Expand all | Expand 10 after
1006 string client_id = user_settings_->GetClientId(); 1008 string client_id = user_settings_->GetClientId();
1007 connection_manager_.reset(new SyncAPIServerConnectionManager( 1009 connection_manager_.reset(new SyncAPIServerConnectionManager(
1008 sync_server_and_path, port, use_ssl, user_agent, client_id)); 1010 sync_server_and_path, port, use_ssl, user_agent, client_id));
1009 1011
1010 // TODO(timsteele): This is temporary windows crap needed to listen for 1012 // TODO(timsteele): This is temporary windows crap needed to listen for
1011 // network status changes. We should either pump this up to the embedder to 1013 // network status changes. We should either pump this up to the embedder to
1012 // do (and call us in CheckServerReachable, for ex), or at least make this 1014 // do (and call us in CheckServerReachable, for ex), or at least make this
1013 // platform independent in here. 1015 // platform independent in here.
1014 // TODO(ncarter): When this gets cleaned up, the implementation of 1016 // TODO(ncarter): When this gets cleaned up, the implementation of
1015 // CreatePThread can also be removed. 1017 // CreatePThread can also be removed.
1016 #if defined(OS_WINDOWS) 1018 #if defined(OS_WIN)
1017 HANDLE exit_flag = CreateEvent(NULL, TRUE /*manual reset*/, FALSE, NULL); 1019 HANDLE exit_flag = CreateEvent(NULL, TRUE /*manual reset*/, FALSE, NULL);
1018 address_watch_params_.exit_flag = exit_flag; 1020 address_watch_params_.exit_flag = exit_flag;
1019 #endif 1021 #endif
1020 address_watch_params_.conn_mgr = connection_manager(); 1022 address_watch_params_.conn_mgr = connection_manager();
1021 address_watch_thread_ = CreatePThread(AddressWatchThread, 1023 address_watch_thread_ = CreatePThread(AddressWatchThread,
1022 &address_watch_params_); 1024 &address_watch_params_);
1023 DCHECK(NULL != address_watch_thread_); 1025 DCHECK(NULL != address_watch_thread_);
1024 1026
1025 // Hand over the bridged POST factory to be owned by the connection 1027 // Hand over the bridged POST factory to be owned by the connection
1026 // dir_manager. 1028 // dir_manager.
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
1200 // Reset the DirectoryManager and UserSettings so they relinquish sqlite 1202 // Reset the DirectoryManager and UserSettings so they relinquish sqlite
1201 // handles to backing files. 1203 // handles to backing files.
1202 share_.dir_manager.reset(); 1204 share_.dir_manager.reset();
1203 user_settings_.reset(); 1205 user_settings_.reset();
1204 1206
1205 // We don't want to process any more events. 1207 // We don't want to process any more events.
1206 dir_change_hookup_.reset(); 1208 dir_change_hookup_.reset();
1207 syncer_event_.reset(); 1209 syncer_event_.reset();
1208 authwatcher_hookup_.reset(); 1210 authwatcher_hookup_.reset();
1209 1211
1210 #if defined(OS_WINDOWS) 1212 #if defined(OS_WIN)
1211 // Stop the address watch thread by signaling the exit flag. 1213 // Stop the address watch thread by signaling the exit flag.
1212 // TODO(timsteele): Same as todo in Init(). 1214 // TODO(timsteele): Same as todo in Init().
1213 SetEvent(address_watch_params_.exit_flag); 1215 SetEvent(address_watch_params_.exit_flag);
1214 const DWORD wait_result = WaitForSingleObject(address_watch_thread_, 1216 const DWORD wait_result = WaitForSingleObject(address_watch_thread_,
1215 kThreadExitTimeoutMsec); 1217 kThreadExitTimeoutMsec);
1216 LOG_IF(ERROR, WAIT_FAILED == wait_result) << "Waiting for addr change thread " 1218 LOG_IF(ERROR, WAIT_FAILED == wait_result) << "Waiting for addr change thread "
1217 "to exit failed. GetLastError(): " << hex << GetLastError(); 1219 "to exit failed. GetLastError(): " << hex << GetLastError();
1218 LOG_IF(ERROR, WAIT_TIMEOUT == wait_result) << "Thread exit timeout expired"; 1220 LOG_IF(ERROR, WAIT_TIMEOUT == wait_result) << "Thread exit timeout expired";
1219 CloseHandle(address_watch_params_.exit_flag); 1221 CloseHandle(address_watch_params_.exit_flag);
1220 #endif 1222 #endif
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
1556 BaseTransaction::~BaseTransaction() { 1558 BaseTransaction::~BaseTransaction() {
1557 delete lookup_; 1559 delete lookup_;
1558 } 1560 }
1559 1561
1560 UserShare* SyncManager::GetUserShare() const { 1562 UserShare* SyncManager::GetUserShare() const {
1561 DCHECK(data_->initialized()) << "GetUserShare requires initialization!"; 1563 DCHECK(data_->initialized()) << "GetUserShare requires initialization!";
1562 return data_->GetUserShare(); 1564 return data_->GetUserShare();
1563 } 1565 }
1564 1566
1565 } // namespace sync_api 1567 } // namespace sync_api
OLDNEW
« no previous file with comments | « chrome/browser/sync/engine/syncapi.h ('k') | chrome/browser/sync/engine/syncer_thread.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698