summaryrefslogtreecommitdiffstats
path: root/Lib/asyncio
diff options
context:
space:
mode:
authorINADA Naoki <songofacandy@gmail.com>2016-10-21 03:30:15 (GMT)
committerINADA Naoki <songofacandy@gmail.com>2016-10-21 03:30:15 (GMT)
commita83636247e3de138e017a04474236ef5aa8b4f4a (patch)
tree1ab8a9a8dba1c7969860de6b7298404b3420ec36 /Lib/asyncio
parent56b2cf5e8564c7221a42675d35aaa0d0c503365e (diff)
downloadcpython-a83636247e3de138e017a04474236ef5aa8b4f4a.zip
cpython-a83636247e3de138e017a04474236ef5aa8b4f4a.tar.gz
cpython-a83636247e3de138e017a04474236ef5aa8b4f4a.tar.bz2
Issue #28448: Fix C implemented asyncio.Future didn't work on Windows
Diffstat (limited to 'Lib/asyncio')
-rw-r--r--Lib/asyncio/futures.py8
-rw-r--r--Lib/asyncio/windows_events.py9
2 files changed, 11 insertions, 6 deletions
diff --git a/Lib/asyncio/futures.py b/Lib/asyncio/futures.py
index 73215f5..e45d6aa 100644
--- a/Lib/asyncio/futures.py
+++ b/Lib/asyncio/futures.py
@@ -247,10 +247,10 @@ class Future:
if self._state != _PENDING:
return False
self._state = _CANCELLED
- self._schedule_callbacks()
+ self.__schedule_callbacks()
return True
- def _schedule_callbacks(self):
+ def __schedule_callbacks(self):
"""Internal: Ask the event loop to call all callbacks.
The callbacks are scheduled to be called as soon as possible. Also
@@ -352,7 +352,7 @@ class Future:
raise InvalidStateError('{}: {!r}'.format(self._state, self))
self._result = result
self._state = _FINISHED
- self._schedule_callbacks()
+ self.__schedule_callbacks()
def set_exception(self, exception):
"""Mark the future done and set an exception.
@@ -369,7 +369,7 @@ class Future:
"and cannot be raised into a Future")
self._exception = exception
self._state = _FINISHED
- self._schedule_callbacks()
+ self.__schedule_callbacks()
if compat.PY34:
self._log_traceback = True
else:
diff --git a/Lib/asyncio/windows_events.py b/Lib/asyncio/windows_events.py
index 668fe14..b777dd0 100644
--- a/Lib/asyncio/windows_events.py
+++ b/Lib/asyncio/windows_events.py
@@ -171,8 +171,13 @@ class _WaitCancelFuture(_BaseWaitHandleFuture):
def cancel(self):
raise RuntimeError("_WaitCancelFuture must not be cancelled")
- def _schedule_callbacks(self):
- super(_WaitCancelFuture, self)._schedule_callbacks()
+ def set_result(self, result):
+ super().set_result(result)
+ if self._done_callback is not None:
+ self._done_callback(self)
+
+ def set_exception(self, exception):
+ super().set_exception(exception)
if self._done_callback is not None:
self._done_callback(self)