| 1739 | static void proactor_shutdown(pn_proactor_t *p); |
| 1740 | |
| 1741 | static void post_completion(iocp_t *iocp, ULONG_PTR arg1, void *arg2) { |
| 1742 | // Despite the vagueness of the official documentation, the |
| 1743 | // following args to Post are passed undisturbed and unvalidated |
| 1744 | // to GetQueuedCompletionStatus(). In particular, arg2 does not |
| 1745 | // have to be an OVERLAPPED struct and may be NULL. |
| 1746 | |
| 1747 | DWORD nxfer = 0; // We could pass this through too if needed. |
| 1748 | PostQueuedCompletionStatus(iocp->completion_port, nxfer, arg1, (LPOVERLAPPED) arg2); |
| 1749 | } |
| 1750 | |
| 1751 | static inline bool is_write_result(iocp_result_t *r) { |
| 1752 | return r && r->type == IOCP_WRITE; |
no outgoing calls
no test coverage detected