MCPcopy Create free account
hub / github.com/apache/thrift / pseudo_sync_write

Function pseudo_sync_write

lib/cpp/src/thrift/transport/TPipe.cpp:179–201  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

177}
178
179void pseudo_sync_write(HANDLE pipe, HANDLE event, const uint8_t* buf, uint32_t len) {
180 OVERLAPPED tempOverlap;
181 memset(&tempOverlap, 0, sizeof(tempOverlap));
182 tempOverlap.hEvent = event;
183
184 uint32_t written = 0;
185 while (written < len) {
186 BOOL result = ::WriteFile(pipe, buf + written, len - written, nullptr, &tempOverlap);
187
188 if (result == FALSE && ::GetLastError() != ERROR_IO_PENDING) {
189 TOutput::instance().perror("TPipe ::WriteFile errored GLE=", ::GetLastError());
190 throw TTransportException(TTransportException::UNKNOWN, "TPipe: write failed");
191 }
192
193 DWORD bytes = 0;
194 result = ::GetOverlappedResult(pipe, &tempOverlap, &bytes, TRUE);
195 if (!result) {
196 TOutput::instance().perror("TPipe ::GetOverlappedResult errored GLE=", ::GetLastError());
197 throw TTransportException(TTransportException::UNKNOWN, "TPipe: GetOverlappedResult failed");
198 }
199 written += bytes;
200 }
201}
202
203uint32_t pseudo_sync_read(HANDLE pipe, HANDLE event, uint8_t* buf, uint32_t len) {
204 OVERLAPPED tempOverlap;

Callers 2

writeMethod · 0.85
writeMethod · 0.85

Calls 2

TTransportExceptionClass · 0.70
perrorMethod · 0.45

Tested by

no test coverage detected