| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "net/base/winsock_util.h" | |
| 6 | |
| 7 #include "base/logging.h" | |
| 8 #include "net/base/net_errors.h" | |
| 9 | |
| 10 namespace net { | |
| 11 | |
| 12 namespace { | |
| 13 | |
| 14 // Prevent the compiler from optimizing away the arguments so they appear | |
| 15 // nicely on the stack in crash dumps. | |
| 16 #pragma warning(push) | |
| 17 #pragma warning (disable: 4748) | |
| 18 #pragma optimize( "", off ) | |
| 19 | |
| 20 // Pass the important values as function arguments so that they are available | |
| 21 // in crash dumps. | |
| 22 void CheckEventWait(WSAEVENT hEvent, DWORD wait_rv, DWORD expected) { | |
| 23 if (wait_rv != expected) { | |
| 24 DWORD err = ERROR_SUCCESS; | |
| 25 if (wait_rv == WAIT_FAILED) | |
| 26 err = GetLastError(); | |
| 27 CHECK(false); // Crash. | |
| 28 } | |
| 29 } | |
| 30 | |
| 31 #pragma optimize( "", on ) | |
| 32 #pragma warning(pop) | |
| 33 | |
| 34 } // namespace | |
| 35 | |
| 36 void AssertEventNotSignaled(WSAEVENT hEvent) { | |
| 37 DWORD wait_rv = WaitForSingleObject(hEvent, 0); | |
| 38 CheckEventWait(hEvent, wait_rv, WAIT_TIMEOUT); | |
| 39 } | |
| 40 | |
| 41 bool ResetEventIfSignaled(WSAEVENT hEvent) { | |
| 42 // TODO(wtc): Remove the CHECKs after enough testing. | |
| 43 DWORD wait_rv = WaitForSingleObject(hEvent, 0); | |
| 44 if (wait_rv == WAIT_TIMEOUT) | |
| 45 return false; // The event object is not signaled. | |
| 46 CheckEventWait(hEvent, wait_rv, WAIT_OBJECT_0); | |
| 47 BOOL ok = WSAResetEvent(hEvent); | |
| 48 CHECK(ok); | |
| 49 return true; | |
| 50 } | |
| 51 | |
| 52 } // namespace net | |
| OLD | NEW |