wsasend.pxi 624 B

123456789101112131415161718192021222324252627
  1. # Copyright (c) Twisted Matrix Laboratories.
  2. # See LICENSE for details.
  3. def send(long s, object buff, object obj, unsigned long flags = 0):
  4. cdef int rc
  5. cdef myOVERLAPPED *ov
  6. cdef WSABUF ws_buf
  7. cdef unsigned long bytes
  8. cdef Py_ssize_t size
  9. PyObject_AsReadBuffer(buff, <void **>&ws_buf.buf, &size)
  10. ws_buf.len = <DWORD>size
  11. ov = makeOV(obj, buff)
  12. rc = WSASend(s, &ws_buf, 1, &bytes, flags, <OVERLAPPED *>ov, NULL)
  13. if rc == SOCKET_ERROR:
  14. rc = WSAGetLastError()
  15. if rc != ERROR_IO_PENDING:
  16. unmakeOV(ov)
  17. return rc, bytes
  18. return rc, bytes