Generate context IDs like handles.

pull/35/head
dmw 7 years ago
parent f9df857a57
commit 92a4a61f11

@ -8,6 +8,7 @@ import errno
import getpass
import imp
import inspect
import itertools
import logging
import os
import pkgutil
@ -428,12 +429,7 @@ def _proxy_connect(econtext, name, context_id, klass, kwargs):
class Router(econtext.core.Router):
next_slave_id = 10
def alloc_slave_id(self):
"""Allocate a context_id for a slave about to be created."""
self.next_slave_id += 1
return self.next_slave_id
context_id_counter = itertools.count(1)
def __enter__(self):
return self
@ -463,11 +459,13 @@ class Router(econtext.core.Router):
if via is not None:
return self.proxy_connect(via, klass, name=name, **kwargs)
context_id = self.alloc_slave_id()
context_id = self.context_id_counter.next()
return self._connect(context_id, klass, name=name, **kwargs)
def proxy_connect(self, via_context, klass, name=None, **kwargs):
context_id = self.alloc_slave_id()
context_id = self.context_id_counter.next()
# Must be added prior to _proxy_connect() to avoid a race.
self.add_route(context_id, via_context.context_id)
name = via_context.call_with_deadline(None, True,
_proxy_connect, name, context_id, klass, kwargs
)
@ -486,6 +484,5 @@ class Router(econtext.core.Router):
)
)
self.add_route(context_id, via_context.context_id)
self._context_by_id[context.context_id] = context
return context

Loading…
Cancel
Save