def sendall()

in nailgun-client/py/ng.py [0:0]


    def sendall(self, data):
        olap = OVERLAPPED()
        olap.hEvent = self.write_waitable
        p = (ctypes.c_ubyte * len(data))(*(bytearray(data)))
        immediate = WriteFile(self.pipe, p, len(data), None, olap)

        if not immediate:
            err = GetLastError()
            if err != ERROR_IO_PENDING:
                self._raise_win_err(
                    "failed to write %d bytes" % len(data), GetLastError()
                )

        # Obtain results, waiting if needed
        nwrote = wintypes.DWORD()
        if not GetOverlappedResult(self.pipe, olap, nwrote, True):
            err = GetLastError()
            self._raise_win_err("error while waiting for write", err)
        nwrote = nwrote.value
        if nwrote != len(data):
            raise IOError("Async wrote less bytes!")
        return nwrote