| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
To more closely match the standard Queue, asyncio.Queue has "join" and "task_done".
JoinableQueue remains as a deprecated alias for Queue to avoid needlessly breaking
too much code that depended on it.
|
| |
|
|
|
|
|
| |
To more closely match the standard Queue, asyncio.Queue has "join" and
"task_done". JoinableQueue is deleted.
|
|
|
|
|
| |
Fixing some comments. The server listens on 12345 and client connects
on 12345, but the comments state 1234. Patch written by bryan.neff.
|
|
|
|
|
| |
The special case for connect_pipe() is not more needed. connect_pipe() doesn't
use overlapped operations anymore.
|
|
|
|
|
| |
Fix create_datagram_endpoint(), connect_read_pipe() and connect_write_pipe():
close the transport if the task is cancelled or on error.
|
|
|
|
|
|
|
|
| |
Overlapped.ConnectNamedPipe() now returns a boolean: True if the pipe is
connected (if ConnectNamedPipe() failed with ERROR_PIPE_CONNECTED), False if
the connection is in progress.
This change removes multiple hacks in IocpProactor.
|
|
|
|
|
|
|
|
| |
Add _overlapped.ConnectPipe() which tries to connect to the pipe for
asynchronous I/O (overlapped): call CreateFile() in a loop until it doesn't
fail with ERROR_PIPE_BUSY. Use an increasing delay between 1 ms and 100 ms.
Remove Overlapped.WaitNamedPipeAndConnect() which is no more used.
|
| |
|
| |
|
|
|
|
| |
_WaitCancelFuture futures
|
|
|
|
| |
Exception
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change fixes a race conditon related to _WaitHandleFuture.cancel() leading
to Python crash or "GetQueuedCompletionStatus() returned an unexpected event"
logs. Before, the overlapped object was destroyed too early, it was possible
that the wait completed whereas the overlapped object was already destroyed.
Sometimes, a different overlapped was allocated at the same address, leading to
unexpected completition.
_WaitHandleFuture.cancel() now waits until the wait is cancelled to clear its
reference to the overlapped object. To wait until the cancellation is done,
UnregisterWaitEx() is used with an event instead of UnregisterWait().
To wait for this event, a new _WaitCancelFuture class was added. It's a
simplified version of _WaitCancelFuture. For example, its cancel() method calls
UnregisterWait(), not UnregisterWaitEx(). _WaitCancelFuture should not be
cancelled.
The overlapped object is kept alive in _WaitHandleFuture until the wait is
unregistered.
Other changes:
* Add _overlapped.UnregisterWaitEx()
* Remove fast-path in IocpProactor.wait_for_handle() to immediatly set the
result if the wait already completed. I'm not sure that it's safe to
call immediatly UnregisterWaitEx() before the completion was signaled.
* Add IocpProactor._unregistered() to forget an overlapped which may never be
signaled, but may be signaled for the next loop iteration. It avoids to
block forever IocpProactor.close() if a wait was cancelled, and it may also
avoid some "... unexpected event ..." warnings.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
* Handle correctly CancelledError: just exit
* On error, log the exception and exit
Don't try to close the event loop, it is probably running and so it cannot be
closed.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Remove the exc variable, it's not used.
|
|
|
|
|
|
|
| |
Override the connect_read_pipe() method of the loop to mock immediatly
pause_reading() and resume_reading() methods.
The test failed randomly on FreeBSD 9 buildbot and on Windows using trollius.
|
|
|
|
|
|
|
| |
StreamWriter: close() now clears the reference to the transport
StreamWriter now raises an exception if it is closed: write(), writelines(),
write_eof(), can_write_eof(), get_extra_info(), drain().
|
| |
|
|
|
|
|
|
|
|
|
| |
* Use test_utils.run_briefly() to execute pending calls to really close
transports
* sslproto: mock also _SSLPipe.shutdown(), it's need to close the transport
* pipe test: the test doesn't close explicitly the PipeHandle, so ignore
the warning instead
* test_popen: use the context manager ("with p:") to explicitly close pipes
|
| |
|
|
|
|
|
|
|
| |
Set the _read_fut attribute to None after cancelling it.
This change should fix a race condition with
_ProactorWritePipeTransport._pipe_closed().
|
|
|
|
| |
Check if the _sock attribute is None to check if the transport is closed.
|
| |
|
| |
|
|
|
|
|
| |
Do nothing if the transport is already closed. Before it was not possible to
close the transport twice.
|
| |
|
|
|
|
|
|
| |
transport at subprocess exit.
Clear also its reference to the transport.
|
|
|
|
|
|
| |
Don't call immediatly self._process_write_backlog() but schedule the call using
call_soon(). _on_handshake_complete() can be called indirectly from
_process_write_backlog(), and _process_write_backlog() is not reentrant.
|
|
|
|
|
| |
StreamWriter now raises an exception if it is closed: write(), writelines(),
write_eof(), can_write_eof(), get_extra_info(), drain().
|
|
|
|
| |
Sort also imports in windows_utils.
|
|
|
|
| |
Skip SSL tests on the ProactorEventLoop if ssl.MemoryIO is missing
|
|
|
|
|
| |
Close the transport if the creation of the transport (if the waiter) gets an
exception.
|
| |
|
|
|
|
| |
Ignore pipes for which the protocol is not set yet (still equal to None).
|
|
|
|
| |
(BaseEventLoop)
|
|
|
|
| |
Create the protocol on a separated line for readability and ease debugging.
|
|
|
|
| |
Set the _returncode attribute, so close() doesn't try to terminate the process.
|
| |
|
|
|
|
|
| |
Add "closed" or "closing" state in the __repr__() method of
_UnixReadPipeTransport and _UnixWritePipeTransport classes.
|
|
|
|
| |
the waiter is cancelled before setting its exception.
|
|
|
|
|
|
| |
before setting its exception.
Add unit tests for this case.
|
| |
|
|
|
|
|
|
| |
cancelled waiter.
Add unit test cancelling subprocess methods.
|