diff options
| author | Julien Danjou <julien@danjou.info> | 2017-05-08 17:48:42 -0400 |
|---|---|---|
| committer | Julien Danjou <julien@danjou.info> | 2017-05-09 21:30:33 -0400 |
| commit | cae8421fd9df1e7c1f319b69be7a7b35baa504d3 (patch) | |
| tree | b03c4e3a9d8243b5d88e68a59af21217caf71029 /tooz/drivers/ipc.py | |
| parent | 17620203cb2c8e93a331875cc0e21736ec75dfc4 (diff) | |
| download | tooz-cae8421fd9df1e7c1f319b69be7a7b35baa504d3.tar.gz | |
coordination: factorize common async result futures code
Many drivers leverage concurrent.futures to return result, so let's just
factorize all of that in a same place.
Change-Id: Ibdec36912b553eb4b76c9f99619c171bc41766bb
Diffstat (limited to 'tooz/drivers/ipc.py')
| -rw-r--r-- | tooz/drivers/ipc.py | 27 |
1 files changed, 5 insertions, 22 deletions
diff --git a/tooz/drivers/ipc.py b/tooz/drivers/ipc.py index 72764f5..76b02dc 100644 --- a/tooz/drivers/ipc.py +++ b/tooz/drivers/ipc.py @@ -18,9 +18,7 @@ import hashlib import struct import time -from concurrent import futures import msgpack -from oslo_utils import encodeutils import six import sysv_ipc @@ -212,7 +210,8 @@ class IPCDriver(coordination.CoordinationDriver): group_list.add(group_id) self._write_group_list(group_list) - return IPCFutureResult(self._executor.submit(_create_group)) + return coordination.CoordinatorResult( + self._executor.submit(_create_group)) def delete_group(self, group_id): def _delete_group(): @@ -223,7 +222,8 @@ class IPCDriver(coordination.CoordinationDriver): group_list.remove(group_id) self._write_group_list(group_list) - return IPCFutureResult(self._executor.submit(_delete_group)) + return coordination.CoordinatorResult( + self._executor.submit(_delete_group)) def watch_join_group(self, group_id, callback): # Check the group exist @@ -240,26 +240,9 @@ class IPCDriver(coordination.CoordinationDriver): return self._read_group_list() def get_groups(self): - return IPCFutureResult(self._executor.submit( + return coordination.CoordinatorResult(self._executor.submit( self._get_groups_handler)) @staticmethod def get_lock(name): return IPCLock(name) - - -class IPCFutureResult(coordination.CoordAsyncResult): - """IPC asynchronous result that references a future.""" - def __init__(self, fut): - self._fut = fut - - def get(self, timeout=10): - try: - return self._fut.result(timeout=timeout) - except futures.TimeoutError as e: - utils.raise_with_cause(coordination.OperationTimedOut, - encodeutils.exception_to_unicode(e), - cause=e) - - def done(self): - return self._fut.done() |
