def choose_eth_or_les_api( connection: ConnectionAPI ) -> Union[ETHAPI, ETHV63API, LESV1API, LESV2API]: if connection.has_protocol(ETHProtocol): return connection.get_logic(ETHAPI.name, ETHAPI) elif connection.has_protocol(ETHProtocolV63): return connection.get_logic(ETHV63API.name, ETHV63API) elif connection.has_protocol(LESProtocolV2): return connection.get_logic(LESV2API.name, LESV2API) elif connection.has_protocol(LESProtocolV1): return connection.get_logic(LESV1API.name, LESV1API) else: raise Exception("Unreachable code path")
def __call__(self, connection: ConnectionAPI, logic: LogicAPI) -> bool: return connection.has_protocol(self._protocol_type)