OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 BASE_SYNC_SOCKET_H_ | 5 #ifndef BASE_SYNC_SOCKET_H_ |
6 #define BASE_SYNC_SOCKET_H_ | 6 #define BASE_SYNC_SOCKET_H_ |
7 | 7 |
8 // A socket abstraction used for sending and receiving plain | 8 // A socket abstraction used for sending and receiving plain |
9 // data. Because the receiving is blocking, they can be used to perform | 9 // data. Because the receiving is blocking, they can be used to perform |
10 // rudimentary cross-process synchronization with low latency. | 10 // rudimentary cross-process synchronization with low latency. |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 virtual size_t Receive(void* buffer, size_t length); | 76 virtual size_t Receive(void* buffer, size_t length); |
77 | 77 |
78 // Same as Receive() but only blocks for data until |timeout| has elapsed or | 78 // Same as Receive() but only blocks for data until |timeout| has elapsed or |
79 // |buffer| |length| is exhausted. Currently only timeouts less than one | 79 // |buffer| |length| is exhausted. Currently only timeouts less than one |
80 // second are allowed. Return the amount of data read. | 80 // second are allowed. Return the amount of data read. |
81 virtual size_t ReceiveWithTimeout(void* buffer, | 81 virtual size_t ReceiveWithTimeout(void* buffer, |
82 size_t length, | 82 size_t length, |
83 TimeDelta timeout); | 83 TimeDelta timeout); |
84 | 84 |
85 // Returns the number of bytes available. If non-zero, Receive() will not | 85 // Returns the number of bytes available. If non-zero, Receive() will not |
86 // not block when called. NOTE: Some implementations cannot reliably | 86 // not block when called. |
87 // determine the number of bytes available so avoid using the returned | 87 virtual size_t Peek(); |
88 // size as a promise and simply test against zero. | |
89 size_t Peek(); | |
90 | 88 |
91 // Extracts the contained handle. Used for transferring between | 89 // Extracts the contained handle. Used for transferring between |
92 // processes. | 90 // processes. |
93 Handle handle() const { return handle_; } | 91 Handle handle() const { return handle_; } |
94 | 92 |
95 protected: | 93 protected: |
96 Handle handle_; | 94 Handle handle_; |
97 | 95 |
98 private: | 96 private: |
99 DISALLOW_COPY_AND_ASSIGN(SyncSocket); | 97 DISALLOW_COPY_AND_ASSIGN(SyncSocket); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 | 146 |
149 #if defined(OS_WIN) && !defined(COMPONENT_BUILD) | 147 #if defined(OS_WIN) && !defined(COMPONENT_BUILD) |
150 // TODO(cpu): remove this once chrome is split in two dlls. | 148 // TODO(cpu): remove this once chrome is split in two dlls. |
151 __declspec(selectany) | 149 __declspec(selectany) |
152 const SyncSocket::Handle SyncSocket::kInvalidHandle = INVALID_HANDLE_VALUE; | 150 const SyncSocket::Handle SyncSocket::kInvalidHandle = INVALID_HANDLE_VALUE; |
153 #endif | 151 #endif |
154 | 152 |
155 } // namespace base | 153 } // namespace base |
156 | 154 |
157 #endif // BASE_SYNC_SOCKET_H_ | 155 #endif // BASE_SYNC_SOCKET_H_ |
OLD | NEW |