MCPcopy Create free account
hub / github.com/DeusData/codebase-memory-mcp / win_io_once

Function win_io_once

src/daemon/ipc.c:6003–6029  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6001}
6002
6003static int win_io_once(cbm_daemon_ipc_connection_t *connection, void *buffer, DWORD length,
6004 bool writing, uint64_t deadline_ms, DWORD *transferred_out) {
6005 OVERLAPPED overlapped;
6006 memset(&overlapped, 0, sizeof(overlapped));
6007 overlapped.hEvent = CreateEventW(NULL, TRUE, FALSE, NULL);
6008 if (!overlapped.hEvent) {
6009 return -1;
6010 }
6011 DWORD transferred = 0;
6012 BOOL completed = writing
6013 ? WriteFile(connection->handle, buffer, length, &transferred, &overlapped)
6014 : ReadFile(connection->handle, buffer, length, &transferred, &overlapped);
6015 int result = 1;
6016 if (!completed) {
6017 if (GetLastError() != ERROR_IO_PENDING) {
6018 result = -1;
6019 } else {
6020 result = win_overlapped_wait(connection->handle, &overlapped,
6021 win_deadline_remaining(deadline_ms), &transferred);
6022 }
6023 }
6024 (void)CloseHandle(overlapped.hEvent);
6025 if (result == 1) {
6026 *transferred_out = transferred;
6027 }
6028 return result;
6029}
6030
6031static int connection_read_full(cbm_daemon_ipc_connection_t *connection, void *buffer,
6032 size_t length, uint64_t deadline_ms) {

Callers 3

connection_read_fullFunction · 0.85
connection_write_fullFunction · 0.85

Calls 2

win_overlapped_waitFunction · 0.85
win_deadline_remainingFunction · 0.85

Tested by

no test coverage detected