| OLD | NEW |
| 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 #include "build/build_config.h" | 7 #include "build/build_config.h" |
| 8 | 8 |
| 9 #if defined(OS_WIN) | 9 #if defined(OS_WIN) |
| 10 #include <windows.h> | 10 #include <windows.h> |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 HANDLE exit_flag; | 83 HANDLE exit_flag; |
| 84 #endif | 84 #endif |
| 85 }; | 85 }; |
| 86 | 86 |
| 87 // This thread calls CheckServerReachable() whenever a change occurs in the | 87 // This thread calls CheckServerReachable() whenever a change occurs in the |
| 88 // 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 |
| 89 // unplugs his network cable. | 89 // unplugs his network cable. |
| 90 void* AddressWatchThread(void* arg) { | 90 void* AddressWatchThread(void* arg) { |
| 91 NameCurrentThreadForDebugging("SyncEngine_AddressWatcher"); | 91 NameCurrentThreadForDebugging("SyncEngine_AddressWatcher"); |
| 92 LOG(INFO) << "starting the address watch thread"; | 92 LOG(INFO) << "starting the address watch thread"; |
| 93 #if defined(OS_WIN) |
| 93 const ThreadParams* const params = reinterpret_cast<const ThreadParams*>(arg); | 94 const ThreadParams* const params = reinterpret_cast<const ThreadParams*>(arg); |
| 94 #if defined(OS_WIN) | |
| 95 OVERLAPPED overlapped = {0}; | 95 OVERLAPPED overlapped = {0}; |
| 96 overlapped.hEvent = CreateEvent(NULL, FALSE, TRUE, NULL); | 96 overlapped.hEvent = CreateEvent(NULL, FALSE, TRUE, NULL); |
| 97 HANDLE file; | 97 HANDLE file; |
| 98 DWORD rc = WAIT_OBJECT_0; | 98 DWORD rc = WAIT_OBJECT_0; |
| 99 while (true) { | 99 while (true) { |
| 100 // 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 |
| 101 // is the first time through the loop. | 101 // is the first time through the loop. |
| 102 if (WAIT_OBJECT_0 == rc) { | 102 if (WAIT_OBJECT_0 == rc) { |
| 103 ResetEvent(overlapped.hEvent); | 103 ResetEvent(overlapped.hEvent); |
| 104 DWORD notify_result = NotifyAddrChange(&file, &overlapped); | 104 DWORD notify_result = NotifyAddrChange(&file, &overlapped); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 return kInvalidId; | 149 return kInvalidId; |
| 150 return entry.Get(syncable::META_HANDLE); | 150 return entry.Get(syncable::META_HANDLE); |
| 151 } | 151 } |
| 152 | 152 |
| 153 // Checks whether |name| is a server-illegal name followed by zero or more space | 153 // Checks whether |name| is a server-illegal name followed by zero or more space |
| 154 // characters. The three server-illegal names are the empty string, dot, and | 154 // characters. The three server-illegal names are the empty string, dot, and |
| 155 // dot-dot. Very long names (>255 bytes in UTF-8 Normalization Form C) are | 155 // dot-dot. Very long names (>255 bytes in UTF-8 Normalization Form C) are |
| 156 // also illegal, but are not considered here. | 156 // also illegal, but are not considered here. |
| 157 static bool IsNameServerIllegalAfterTrimming(const string16& name) { | 157 static bool IsNameServerIllegalAfterTrimming(const string16& name) { |
| 158 size_t untrimmed_count = name.find_last_not_of(' ') + 1; | 158 size_t untrimmed_count = name.find_last_not_of(' ') + 1; |
| 159 for (int i = 0; i < arraysize(kForbiddenServerNames); ++i) { | 159 for (size_t i = 0; i < arraysize(kForbiddenServerNames); ++i) { |
| 160 if (name.compare(0, untrimmed_count, kForbiddenServerNames[i]) == 0) | 160 if (name.compare(0, untrimmed_count, kForbiddenServerNames[i]) == 0) |
| 161 return true; | 161 return true; |
| 162 } | 162 } |
| 163 return false; | 163 return false; |
| 164 } | 164 } |
| 165 | 165 |
| 166 static bool EndsWithSpace(const string16& string) { | 166 static bool EndsWithSpace(const string16& string) { |
| 167 return !string.empty() && *string.rbegin() == ' '; | 167 return !string.empty() && *string.rbegin() == ' '; |
| 168 } | 168 } |
| 169 | 169 |
| (...skipping 845 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1015 // platform independent in here. | 1015 // platform independent in here. |
| 1016 // TODO(ncarter): When this gets cleaned up, the implementation of | 1016 // TODO(ncarter): When this gets cleaned up, the implementation of |
| 1017 // CreatePThread can also be removed. | 1017 // CreatePThread can also be removed. |
| 1018 #if defined(OS_WIN) | 1018 #if defined(OS_WIN) |
| 1019 HANDLE exit_flag = CreateEvent(NULL, TRUE /*manual reset*/, FALSE, NULL); | 1019 HANDLE exit_flag = CreateEvent(NULL, TRUE /*manual reset*/, FALSE, NULL); |
| 1020 address_watch_params_.exit_flag = exit_flag; | 1020 address_watch_params_.exit_flag = exit_flag; |
| 1021 #endif | 1021 #endif |
| 1022 address_watch_params_.conn_mgr = connection_manager(); | 1022 address_watch_params_.conn_mgr = connection_manager(); |
| 1023 address_watch_thread_ = CreatePThread(AddressWatchThread, | 1023 address_watch_thread_ = CreatePThread(AddressWatchThread, |
| 1024 &address_watch_params_); | 1024 &address_watch_params_); |
| 1025 #if defined(OS_WIN) |
| 1025 DCHECK(NULL != address_watch_thread_); | 1026 DCHECK(NULL != address_watch_thread_); |
| 1027 #endif |
| 1026 | 1028 |
| 1027 // Hand over the bridged POST factory to be owned by the connection | 1029 // Hand over the bridged POST factory to be owned by the connection |
| 1028 // dir_manager. | 1030 // dir_manager. |
| 1029 connection_manager()->SetHttpPostProviderFactory(post_factory); | 1031 connection_manager()->SetHttpPostProviderFactory(post_factory); |
| 1030 | 1032 |
| 1031 // Watch various objects for aggregated status. | 1033 // Watch various objects for aggregated status. |
| 1032 allstatus()->WatchConnectionManager(connection_manager()); | 1034 allstatus()->WatchConnectionManager(connection_manager()); |
| 1033 | 1035 |
| 1034 std::string gaia_url = browser_sync::kGaiaUrl; | 1036 std::string gaia_url = browser_sync::kGaiaUrl; |
| 1035 const char* service_id = gaia_service_id ? | 1037 const char* service_id = gaia_service_id ? |
| (...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1558 BaseTransaction::~BaseTransaction() { | 1560 BaseTransaction::~BaseTransaction() { |
| 1559 delete lookup_; | 1561 delete lookup_; |
| 1560 } | 1562 } |
| 1561 | 1563 |
| 1562 UserShare* SyncManager::GetUserShare() const { | 1564 UserShare* SyncManager::GetUserShare() const { |
| 1563 DCHECK(data_->initialized()) << "GetUserShare requires initialization!"; | 1565 DCHECK(data_->initialized()) << "GetUserShare requires initialization!"; |
| 1564 return data_->GetUserShare(); | 1566 return data_->GetUserShare(); |
| 1565 } | 1567 } |
| 1566 | 1568 |
| 1567 } // namespace sync_api | 1569 } // namespace sync_api |
| OLD | NEW |