def get(self, count: int=1, readOnly: bool=False, recurlvl=0): with open(self.FILE, "r+") as file: portalocker.lock(file, portalocker.LOCK_EX) ports = [] while len(ports) < count: file.seek(0) port = int(file.readline()) if readOnly: return port port += 1 if port > self.maxPort: port = self.minPort file.seek(0) file.write(str(port)) try: checkPortAvailable(("", port)) ports.append(port) self.logger.debug("new port dispensed: {}".format(port)) except Exception: if recurlvl < self.maxportretries: self.logger.debug("port {} unavailable, trying again...". format(port)) recurlvl += 1 else: self.logger.debug("port {} unavailable, max retries {} " "reached". format(port, self.maxportretries)) raise return ports
def __init__(self, name: str = None, basedirpath: str = None, client: Client = None, port: int = None, loop=None, config=None, endpointArgs=None): self.endpoint = None if port: checkPortAvailable(HA("0.0.0.0", port)) Motor.__init__(self) self.loop = loop or asyncio.get_event_loop() self._eventListeners = {} # Dict[str, set(Callable)] self._name = name or 'Agent' self._port = port self.config = config or getConfig() self.basedirpath = basedirpath or os.path.expanduser( self.config.baseDir) self.endpointArgs = endpointArgs # Client used to connect to Sovrin and forward on owner's txns self._client = client # type: Client # known identifiers of this agent's owner self.ownerIdentifiers = {} # type: Dict[Identifier, Identity]
def testCreateAgentDoesNotAllocatePort(tdirWithPoolTxns): for i in range(2): checkPortAvailable(HA("0.0.0.0", agentPort)) agent = getNewAgent("Agent0", tdirWithPoolTxns, agentPort, agentWallet()) checkPortAvailable(HA("0.0.0.0", agentPort)) agent.stop()
def __init__(self, name: str=None, basedirpath: str=None, client: Client=None, port: int=None, loop=None, config=None, endpointArgs=None): self.endpoint = None if port: checkPortAvailable(HA("0.0.0.0", port)) Motor.__init__(self) self.loop = loop or asyncio.get_event_loop() self._eventListeners = {} # Dict[str, set(Callable)] self._name = name or 'Agent' self._port = port self.config = config or getConfig() self.basedirpath = basedirpath or os.path.expanduser( self.config.CLI_BASE_DIR) self.endpointArgs = endpointArgs # Client used to connect to Indy and forward on owner's txns self._client = client # type: Client # known identifiers of this agent's owner self.ownerIdentifiers = {} # type: Dict[Identifier, Identity] self.logger = logger
def testCreateAgentDoesNotAllocatePort(tdirWithPoolTxns): for i in range(2): checkPortAvailable(HA("0.0.0.0", agentPort)) agent = getNewAgent("Agent0", tdirWithPoolTxns, agentPort, agentWallet()) checkPortAvailable(HA("0.0.0.0", agentPort)) agent.stop()
def get(self, count: int = 1, readOnly: bool = False, recurlvl=0): with open(self.FILE, "r+") as file: portalocker.lock(file, portalocker.LOCK_EX) ports = [] while len(ports) < count: file.seek(0) port = int(file.readline()) if readOnly: return port port += 1 if port > self.maxPort: port = self.minPort file.seek(0) file.write(str(port)) try: checkPortAvailable(("", port)) ports.append(port) self.logger.debug("new port dispensed: {}".format(port)) except Exception: if recurlvl < self.maxportretries: self.logger.debug( "port {} unavailable, trying again...".format( port)) recurlvl += 1 else: self.logger.debug( "port {} unavailable, max retries {} " "reached".format(port, self.maxportretries)) raise return ports
def __init__(self, *args, **kwargs): checkPortAvailable(kwargs['ha']) basedirpath = kwargs.get('basedirpath') keep = RoadKeep(basedirpath=basedirpath, stackname=kwargs['name'], auto=kwargs.get('auto'), baseroledirpath=basedirpath) # type: RoadKeep kwargs['keep'] = keep localRoleData = keep.loadLocalRoleData() sighex = kwargs.pop('sighex', None) or localRoleData['sighex'] if not sighex: (sighex, _), (prihex, _) = getEd25519AndCurve25519Keys() else: prihex = ed25519SkToCurve25519(sighex, toHex=True) kwargs['sigkey'] = sighex kwargs['prikey'] = prihex self.msgHandler = kwargs.pop('msgHandler', None) # type: Callable # if no timeout is set then message will never timeout self.messageTimeout = kwargs.pop('messageTimeout', 0) self.raetStack = RoadStack(*args, **kwargs) if self.ha[1] != kwargs['ha'].port: error("the stack port number has changed, likely due to " "information in the keep. {} passed {}, actual {}".format( kwargs['name'], kwargs['ha'].port, self.ha[1])) self._created = time.perf_counter() self.coro = None self._conns = set() # type: Set[str]
def chk(): for port in ports: checkPortAvailable(("", port))
def chk(): for port in ports: checkPortAvailable(("", port))