MCPcopy Create free account
hub / github.com/ActiveState/code / asyncWriteAll

Method asyncWriteAll

recipes/Python/577662_ASIO/recipe-577662.py:146–175  ·  view source on GitHub ↗
(self, data, callback)

Source from the content-addressed store, hash-verified

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:

Callers 2

Calls 4

AsyncExceptionClass · 0.85
invokeLaterMethod · 0.80
sendMethod · 0.45

Tested by

no test coverage detected