summaryrefslogtreecommitdiff
path: root/tooz/drivers/ipc.py
diff options
context:
space:
mode:
authorJulien Danjou <julien@danjou.info>2017-05-08 17:48:42 -0400
committerJulien Danjou <julien@danjou.info>2017-05-09 21:30:33 -0400
commitcae8421fd9df1e7c1f319b69be7a7b35baa504d3 (patch)
treeb03c4e3a9d8243b5d88e68a59af21217caf71029 /tooz/drivers/ipc.py
parent17620203cb2c8e93a331875cc0e21736ec75dfc4 (diff)
downloadtooz-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.py27
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()