open-coroutine-core 0.7.0

The open-coroutine is a simple, efficient and generic coroutine library.
Documentation
use std::ffi::c_int;
use windows_sys::Win32::Networking::WinSock::{LPCONDITIONPROC, SOCKADDR, SOCKET};

trait WSAAcceptSyscall {
    extern "system" fn WSAAccept(
        &self,
        fn_ptr: Option<
            &extern "system" fn(
                SOCKET,
                *mut SOCKADDR,
                *mut c_int,
                LPCONDITIONPROC,
                usize
            ) -> SOCKET
        >,
        fd: SOCKET,
        address: *mut SOCKADDR,
        address_len: *mut c_int,
        lpfncondition: LPCONDITIONPROC,
        dwcallbackdata: usize,
    ) -> SOCKET;
}

impl_syscall!(WSAAcceptSyscallFacade, NioWSAAcceptSyscall, RawWSAAcceptSyscall,
    WSAAccept(
        fd: SOCKET,
        address: *mut SOCKADDR,
        address_len: *mut c_int,
        lpfncondition: LPCONDITIONPROC,
        dwcallbackdata: usize
    ) -> SOCKET
);

impl_facade!(WSAAcceptSyscallFacade, WSAAcceptSyscall,
    WSAAccept(
        fd: SOCKET,
        address: *mut SOCKADDR,
        address_len: *mut c_int,
        lpfncondition: LPCONDITIONPROC,
        dwcallbackdata: usize
    ) -> SOCKET
);

impl_nio_read!(NioWSAAcceptSyscall, WSAAcceptSyscall,
    WSAAccept(
        fd: SOCKET,
        address: *mut SOCKADDR,
        address_len: *mut c_int,
        lpfncondition: LPCONDITIONPROC,
        dwcallbackdata: usize
    ) -> SOCKET
);

impl_raw!(RawWSAAcceptSyscall, WSAAcceptSyscall, windows_sys::Win32::Networking::WinSock,
    WSAAccept(
        fd: SOCKET,
        address: *mut SOCKADDR,
        address_len: *mut c_int,
        lpfncondition: LPCONDITIONPROC,
        dwcallbackdata: usize
    ) -> SOCKET
);