(self, data, callback)
| 144 | functools.partial(callback, data = data, err = e.args[0])) |
| 145 | |
| 146 | def asyncWriteAll(self, data, callback): |
| 147 | if (self.__acceptCallback): |
| 148 | raise AsyncException('Accept already in progress') |
| 149 | if (self.__connectCallback): |
| 150 | raise AsyncException('Connect already in progress') |
| 151 | if (self.__writeAllCallback): |
| 152 | raise AsyncException('Write all already in progress') |
| 153 | if (self.__closed): |
| 154 | raise AsyncException('AsyncSocket closed') |
| 155 | |
| 156 | self.__writeBuffer += data |
| 157 | writeWouldBlock = False |
| 158 | try: |
| 159 | bytesSent = self.__socket.send(self.__writeBuffer) |
| 160 | self.__writeBuffer = self.__writeBuffer[bytesSent:] |
| 161 | if (len(self.__writeBuffer) == 0): |
| 162 | self.__asyncIOService.invokeLater( |
| 163 | functools.partial(callback, err = 0)) |
| 164 | else: |
| 165 | writeWouldBlock = True |
| 166 | except socket.error as e: |
| 167 | if e.args[0] in (errno.EAGAIN, errno.EWOULDBLOCK): |
| 168 | writeWouldBlock = True |
| 169 | else: |
| 170 | self.__asyncIOService.invokeLater( |
| 171 | functools.partial(callback, err = e.args[0])) |
| 172 | |
| 173 | if (writeWouldBlock): |
| 174 | self.__writeAllCallback = callback |
| 175 | self.__asyncIOService.registerAsyncSocketForWrite(self) |
| 176 | |
| 177 | def close(self): |
| 178 | if self.__closed: |
no test coverage detected