From acfd4f5d9a1ce5d1e1ce71d5d5c50f402c06b04b Mon Sep 17 00:00:00 2001 From: Cobinja Date: Sat, 28 Feb 2026 21:24:49 +0100 Subject: [PATCH] Remove registration API v1 This removes the old API for registering warpinator clients on the network. It retains the internal API for multi-version support, just in case we ever introduce a v3. --- src/remote.py | 118 +-------------------------------- src/remote_registration.py | 129 +------------------------------------ src/server.py | 16 +---- src/warp.proto | 2 - src/warp_pb2.py | 8 +-- src/warp_pb2_grpc.py | 48 +------------- 6 files changed, 13 insertions(+), 308 deletions(-) diff --git a/src/remote.py b/src/remote.py index 8ec2302e..883d4fd8 100644 --- a/src/remote.py +++ b/src/remote.py @@ -85,11 +85,7 @@ def __init__(self, ident, hostname, display_hostname, ip_info, port, local_ident def start_remote_thread(self): # func = lambda: return - - if self.api_version == "1": - func = self.remote_thread_v1 - elif self.api_version == "2": - func = self.remote_thread_v2 + func = self.remote_thread_v2 self.remote_thread = threading.Thread(target=func, name="remote-main-thread-v%s-%s-%s:%d-%s" % (self.api_version, self.hostname, self.ip_info.ip4_address, self.port, self.ident)) @@ -97,103 +93,6 @@ def start_remote_thread(self): # % (self.hostname, self.ip_info.ip4_address, self.port, self.ident)) self.remote_thread.start() - def remote_thread_v1(self): - self.ping_timer.clear() - - self.emit_machine_info_changed() # Let's make sure the button doesn't have junk in it if we fail to connect. - - logging.debug("Remote: Attempting to connect to %s (%s) - api version 1" % (self.display_hostname, self.ip_info.ip4_address)) - - self.set_remote_status(RemoteStatus.INIT_CONNECTING) - - def run_secure_loop(): - logging.debug("Remote: Starting a new connection loop for %s (%s:%d)" - % (self.display_hostname, self.ip_info, self.port)) - - cert = auth.get_singleton().get_cached_cert(self.hostname, self.ip_info) - creds = grpc.ssl_channel_credentials(cert) - - with grpc.secure_channel("%s:%d" % (self.ip_info.ip4_address, self.port), creds) as channel: - future = grpc.channel_ready_future(channel) - - try: - future.result(timeout=4) - self.stub = warp_pb2_grpc.WarpStub(channel) - except grpc.FutureTimeoutError: - self.set_remote_status(RemoteStatus.UNREACHABLE) - future.cancel() - - if not self.ping_timer.is_set(): - logging.debug("Remote: Unable to establish secure connection with %s (%s:%d). Trying again in %ds" - % (self.display_hostname, self.ip_info, self.port, CHANNEL_RETRY_WAIT_TIME)) - self.ping_timer.wait(CHANNEL_RETRY_WAIT_TIME) - return True # run_secure_loop() - - return False # run_secure_loop() - - duplex_fail_counter = 0 - one_ping = False # A successful duplex response lets us finish setting things up. - - while not self.ping_timer.is_set(): - - if self.busy: - logging.debug("Remote Ping: Skipping keepalive ping to %s (%s:%d) (busy)" - % (self.display_hostname, self.ip_info, self.port)) - self.busy = False - else: - try: - # t = GLib.get_monotonic_time() - logging.debug("Remote Ping: to %s (%s:%d)" - % (self.display_hostname, self.ip_info, self.port)) - self.stub.Ping(warp_pb2.LookupName(id=self.local_ident, - readable_name=util.get_hostname()), - timeout=5) - # logging.debug("Latency: %s (%s)" - # % (util.precise_format_time_span(GLib.get_monotonic_time() - t), self.display_hostname)) - if not one_ping: - self.set_remote_status(RemoteStatus.AWAITING_DUPLEX) - if self.check_duplex_connection(): - logging.debug("Remote: Connected to %s (%s:%d)" - % (self.display_hostname, self.ip_info, self.port)) - - self.set_remote_status(RemoteStatus.ONLINE) - - self.rpc_call(self.update_remote_machine_info) - self.rpc_call(self.update_remote_machine_avatar) - one_ping = True - else: - duplex_fail_counter += 1 - if duplex_fail_counter > DUPLEX_MAX_FAILURES: - logging.debug("Remote: CheckDuplexConnection to %s (%s:%d) failed too many times" - % (self.display_hostname, self.ip_info, self.port)) - self.ping_timer.wait(CHANNEL_RETRY_WAIT_TIME) - return True - except grpc.RpcError as e: - logging.debug("Remote: Ping failed, shutting down %s (%s:%d)" - % (self.display_hostname, self.ip_info, self.port)) - break - - self.ping_timer.wait(CONNECTED_PING_TIME if self.status == RemoteStatus.ONLINE else DUPLEX_WAIT_PING_TIME) - - # This is reached by the RpcError break above. If the remote is still discoverable, start - # the secure loop over. This could have happened as a result of a quick disco/reconnect, - # And we don't notice until it has already come back. In this case, try a new connection. - if self.has_zc_presence and not self.ping_timer.is_set(): - return True # run_secure_loop() - - # The ping timer has been triggered, this is an orderly shutdown. - return False # run_secure_loop() - - try: - while run_secure_loop(): - continue - except Exception as e: - logging.critical("!! Major problem starting connection loop for %s (%s:%d): %s" - % (self.display_hostname, self.ip_info, self.port, e)) - - self.set_remote_status(RemoteStatus.OFFLINE) - self.run_thread_alive = False - def remote_thread_v2(self): self.channel_keepalive.clear() @@ -275,10 +174,8 @@ def channel_state_changed(state): self.set_remote_status(RemoteStatus.OFFLINE) def shutdown(self): - if self.api_version == "1": - self.ping_timer.set() - else: - self.channel_keepalive.set() + # api v2 + self.channel_keepalive.set() # This is called by server just before running start_remote_thread, so the first time # self.remote_thread will be None. try: @@ -343,15 +240,6 @@ def rpc_call(self, func, *args, **kargs): logging.critical("!! RPC threadpool failure while submitting call to %s (%s:%d): %s" % (self.display_hostname, self.ip_info, self.port, e)) - # Not added to thread pool - def check_duplex_connection(self): - logging.debug("Remote: checking duplex with '%s'" % self.display_hostname) - - ret = self.stub.CheckDuplexConnection(warp_pb2.LookupName(id=self.local_ident, - readable_name=util.get_hostname())) - - return ret.response - def wait_for_duplex(self): logging.debug("Remote: waiting for duplex from '%s'" % self.display_hostname) diff --git a/src/remote_registration.py b/src/remote_registration.py index 2f0275cf..ca45f935 100644 --- a/src/remote_registration.py +++ b/src/remote_registration.py @@ -22,9 +22,6 @@ def __init__(self, ident, hostname, ip_info, port, auth_port, api_version): self.ip_info = ip_info self.port = port - #v1 only - self.request = None - #v2 only self.auth_port = auth_port self.locked_cert = None @@ -36,7 +33,6 @@ def cancel(self): class Registrar(): def __init__(self, ip_info, port, auth_port): - self.reg_server_v1 = None self.reg_server_v2 = None self.active_registrations = {} self.reg_lock = threading.Lock() @@ -48,15 +44,10 @@ def __init__(self, ip_info, port, auth_port): self.start_registration_servers() def start_registration_servers(self): - if self.reg_server_v1 is not None: - self.reg_server_v1.stop() - if self.reg_server_v2 is not None: self.reg_server_v2.stop(grace=2).wait() self.reg_server_v2 = None - logging.debug("Starting v1 registration server (%s) with port %d" % (self.ip_info, self.port)) - self.reg_server_v1 = RegistrationServer_v1(self.ip_info, self.port) logging.debug("Starting v2 registration server (%s) with auth port %d" % (self.ip_info, self.auth_port)) self.reg_server_v2 = RegistrationServer_v2(self.ip_info, self.auth_port) @@ -66,11 +57,6 @@ def shutdown_registration_servers(self): self.active_registrations[key].cancel() self.active_registrations = {} - if self.reg_server_v1 is not None: - logging.debug("Stopping v1 registration server.") - self.reg_server_v1.stop() - self.reg_server_v1 = None - if self.reg_server_v2: logging.debug("Stopping v2 registration server.") self.reg_server_v2.stop() @@ -81,12 +67,8 @@ def register(self, ident, hostname, ip_info, port, auth_port, api_version): with self.reg_lock: self.active_registrations[ident] = details - ret = None - - if api_version == "1": - ret = register_v1(details) - elif api_version == "2": - ret = register_v2(details) + # api v2 + ret = register_v2(details) with self.reg_lock: # shutdown_registration_servers may have been called on a different thread. @@ -97,113 +79,6 @@ def register(self, ident, hostname, ip_info, port, auth_port, api_version): return ret -####################### api v1 - -def register_v1(details): - # This will block if the remote's warp udp port is closed, until either the port is unblocked - # or we tell the auth object to shutdown, in which case the request timer will cancel and return - # here immediately (with None) - - logging.debug("Registering with %s (%s:%d) - api version 1" % (details.hostname, details.ip_info, details.port)) - - success = retrieve_remote_cert(details) - - if success == util.CertProcessingResult.FAILURE: - logging.debug("Unable to register with %s (%s:%d) - api version 1" - % (details.hostname, details.ip_info, details.port)) - return False - - return True - -def retrieve_remote_cert(details): - logging.debug("Auth: Starting a new RequestLoop for '%s' (%s:%d)" % (details.hostname, details.ip_info, details.port)) - - details.request = Request(details.ip_info, details.port) - data = details.request.request() - - if data is None or details.cancelled: - return util.CertProcessingResult.FAILURE - - return auth.get_singleton().process_remote_cert(details.hostname, - details.ip_info, - data) - -REQUEST = b"REQUEST" - -#v1 client -class Request(): - def __init__(self, ip_info, port): - self.ip_info = ip_info - self.port = port - - def request(self): - logging.debug("Auth: Requesting cert from remote (%s:%d)" % (self.ip_info, self.port)) - - remote_ip, _, ip_version = self.ip_info.get_usable_ip() - - try: - ip = remote_ip if ip_version == socket.AF_INET else "[%s]" % (remote_ip,) - server_sock = socket.socket(ip_version, socket.SOCK_DGRAM) - server_sock.settimeout(5.0) - server_sock.sendto(REQUEST, (ip, self.port)) - - reply, addr = server_sock.recvfrom(2000) - - if addr == (remote_ip, self.port): - return reply - except socket.timeout: - logging.debug("Auth: Cert request failed from remote (%s:%d) - (Is their udp port blocked?" - % (self.ip_info, self.port)) - except socket.error as e: - logging.critical("Something wrong with cert request (%s:%s): " % (remote_ip, self.port, e)) - - return None - -# v1 server -class RegistrationServer_v1(): - def __init__(self, ip_info, port): - self.exit = False - self.ip_info = ip_info - self.port = port - - self.thread4 = threading.Thread(target=self.serve_cert_thread, args=(socket.AF_INET,)) - self.thread6 = threading.Thread(target=self.serve_cert_thread, args=(socket.AF_INET6,)) - self.thread4.start() - self.thread6.start() - - def serve_cert_thread(self, ip_version): - local_ip = None - if ip_version == socket.AF_INET: - local_ip = self.ip_info.ip4_address - elif ip_version == socket.AF_INET6: - local_ip = self.ip_info.ip6_address - - if local_ip is not None: - try: - server_sock = socket.socket(ip_version, socket.SOCK_DGRAM) - server_sock.settimeout(1.0) - server_sock.bind((local_ip, self.port)) - except socket.error as e: - logging.critical("Could not create udp socket for cert requests: %s" % str(e)) - return - - while True: - try: - data, address = server_sock.recvfrom(2000) - - if data == REQUEST: - cert_data = auth.get_singleton().get_encoded_local_cert() - server_sock.sendto(cert_data, address) - except socket.timeout as e: - if self.exit: - server_sock.close() - break - - def stop(self): - self.exit = True - self.thread4.join() - self.thread6.join() - ####################### api v2 diff --git a/src/server.py b/src/server.py index 34a049b6..dec790b5 100644 --- a/src/server.py +++ b/src/server.py @@ -191,8 +191,8 @@ def add_service(self, zeroconf, _type, name): api_version = info.properties[b"api-version"].decode() auth_port = int(info.properties[b"auth-port"].decode()) except KeyError: - api_version = "1" - auth_port = 0 + logging.debug(">>> Discovery: registration API v1 is not supported anymore, ignoring: %s (%s)" % (remote_hostname, remote_ip_info)) + return # FIXME: I'm not sure why we still get discovered by other networks in some cases - # The Zeroconf object has a specific ip it is set to, what more do I need to do? @@ -519,18 +519,6 @@ def Ping(self, request, context): return void - def CheckDuplexConnection(self, request, context): - logging.debug("Server RPC: CheckDuplexConnection from '%s'" % request.readable_name) - response = False - - try: - remote = self.remote_machines[request.id] - response = (remote.status in (RemoteStatus.AWAITING_DUPLEX, RemoteStatus.ONLINE)) - except KeyError: - pass - - return warp_pb2.HaveDuplex(response=response) - def WaitingForDuplex(self, request, context): logging.debug("Server RPC: WaitingForDuplex from '%s' (api v2)" % request.readable_name) diff --git a/src/warp.proto b/src/warp.proto index 9ce94333..a141dbaa 100644 --- a/src/warp.proto +++ b/src/warp.proto @@ -9,8 +9,6 @@ syntax = "proto3"; service Warp { // Sender methods - // api v1 duplex method (ping style) - rpc CheckDuplexConnection(LookupName) returns (HaveDuplex) {} // api v2 duplex method (block/future) rpc WaitingForDuplex(LookupName) returns (HaveDuplex) {} diff --git a/src/warp_pb2.py b/src/warp_pb2.py index 5d001f8d..d65c2d5f 100644 --- a/src/warp_pb2.py +++ b/src/warp_pb2.py @@ -24,7 +24,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nwarp.proto\"S\n\x11RemoteMachineInfo\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x11\n\tuser_name\x18\x02 \x01(\t\x12\x15\n\rfeature_flags\x18\x03 \x01(\r\"+\n\x13RemoteMachineAvatar\x12\x14\n\x0c\x61vatar_chunk\x18\x01 \x01(\x0c\"/\n\nLookupName\x12\n\n\x02id\x18\x01 \x01(\t\x12\x15\n\rreadable_name\x18\x02 \x01(\t\"\x1e\n\nHaveDuplex\x12\x10\n\x08response\x18\x02 \x01(\x08\"\x19\n\x08VoidType\x12\r\n\x05\x64ummy\x18\x01 \x01(\x05\"Z\n\x06OpInfo\x12\r\n\x05ident\x18\x01 \x01(\t\x12\x11\n\ttimestamp\x18\x02 \x01(\x04\x12\x15\n\rreadable_name\x18\x03 \x01(\t\x12\x17\n\x0fuse_compression\x18\x04 \x01(\x08\"0\n\x08StopInfo\x12\x15\n\x04info\x18\x01 \x01(\x0b\x32\x07.OpInfo\x12\r\n\x05\x65rror\x18\x02 \x01(\x08\"\xd0\x01\n\x11TransferOpRequest\x12\x15\n\x04info\x18\x01 \x01(\x0b\x32\x07.OpInfo\x12\x13\n\x0bsender_name\x18\x02 \x01(\t\x12\x15\n\rreceiver_name\x18\x03 \x01(\t\x12\x10\n\x08receiver\x18\x04 \x01(\t\x12\x0c\n\x04size\x18\x05 \x01(\x04\x12\r\n\x05\x63ount\x18\x06 \x01(\x04\x12\x16\n\x0ename_if_single\x18\x07 \x01(\t\x12\x16\n\x0emime_if_single\x18\x08 \x01(\t\x12\x19\n\x11top_dir_basenames\x18\t \x03(\t\"\x88\x01\n\tFileChunk\x12\x15\n\rrelative_path\x18\x01 \x01(\t\x12\x11\n\tfile_type\x18\x02 \x01(\x05\x12\x16\n\x0esymlink_target\x18\x03 \x01(\t\x12\r\n\x05\x63hunk\x18\x04 \x01(\x0c\x12\x11\n\tfile_mode\x18\x05 \x01(\r\x12\x17\n\x04time\x18\x06 \x01(\x0b\x32\t.FileTime\"-\n\x08\x46ileTime\x12\r\n\x05mtime\x18\x01 \x01(\x04\x12\x12\n\nmtime_usec\x18\x02 \x01(\r\"8\n\nRegRequest\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x10\n\x08hostname\x18\x02 \x01(\t\x12\x0c\n\x04ipv6\x18\x03 \x01(\t\"\"\n\x0bRegResponse\x12\x13\n\x0blocked_cert\x18\x01 \x01(\t\"\x8b\x01\n\x13ServiceRegistration\x12\x12\n\nservice_id\x18\x01 \x01(\t\x12\n\n\x02ip\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\x12\x10\n\x08hostname\x18\x04 \x01(\t\x12\x13\n\x0b\x61pi_version\x18\x05 \x01(\r\x12\x11\n\tauth_port\x18\x06 \x01(\r\x12\x0c\n\x04ipv6\x18\x07 \x01(\t\"@\n\x0bTextMessage\x12\r\n\x05ident\x18\x01 \x01(\t\x12\x11\n\ttimestamp\x18\x02 \x01(\x04\x12\x0f\n\x07message\x18\x03 \x01(\t2\xa0\x04\n\x04Warp\x12\x33\n\x15\x43heckDuplexConnection\x12\x0b.LookupName\x1a\x0b.HaveDuplex\"\x00\x12.\n\x10WaitingForDuplex\x12\x0b.LookupName\x1a\x0b.HaveDuplex\"\x00\x12\x39\n\x14GetRemoteMachineInfo\x12\x0b.LookupName\x1a\x12.RemoteMachineInfo\"\x00\x12?\n\x16GetRemoteMachineAvatar\x12\x0b.LookupName\x1a\x14.RemoteMachineAvatar\"\x00\x30\x01\x12;\n\x18ProcessTransferOpRequest\x12\x12.TransferOpRequest\x1a\t.VoidType\"\x00\x12\'\n\x0fPauseTransferOp\x12\x07.OpInfo\x1a\t.VoidType\"\x00\x12,\n\x0fSendTextMessage\x12\x0c.TextMessage\x1a\t.VoidType\"\x00\x12(\n\rStartTransfer\x12\x07.OpInfo\x1a\n.FileChunk\"\x00\x30\x01\x12/\n\x17\x43\x61ncelTransferOpRequest\x12\x07.OpInfo\x1a\t.VoidType\"\x00\x12&\n\x0cStopTransfer\x12\t.StopInfo\x1a\t.VoidType\"\x00\x12 \n\x04Ping\x12\x0b.LookupName\x1a\t.VoidType\"\x00\x32\x86\x01\n\x10WarpRegistration\x12\x31\n\x12RequestCertificate\x12\x0b.RegRequest\x1a\x0c.RegResponse\"\x00\x12?\n\x0fRegisterService\x12\x14.ServiceRegistration\x1a\x14.ServiceRegistration\"\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nwarp.proto\"S\n\x11RemoteMachineInfo\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x11\n\tuser_name\x18\x02 \x01(\t\x12\x15\n\rfeature_flags\x18\x03 \x01(\r\"+\n\x13RemoteMachineAvatar\x12\x14\n\x0c\x61vatar_chunk\x18\x01 \x01(\x0c\"/\n\nLookupName\x12\n\n\x02id\x18\x01 \x01(\t\x12\x15\n\rreadable_name\x18\x02 \x01(\t\"\x1e\n\nHaveDuplex\x12\x10\n\x08response\x18\x02 \x01(\x08\"\x19\n\x08VoidType\x12\r\n\x05\x64ummy\x18\x01 \x01(\x05\"Z\n\x06OpInfo\x12\r\n\x05ident\x18\x01 \x01(\t\x12\x11\n\ttimestamp\x18\x02 \x01(\x04\x12\x15\n\rreadable_name\x18\x03 \x01(\t\x12\x17\n\x0fuse_compression\x18\x04 \x01(\x08\"0\n\x08StopInfo\x12\x15\n\x04info\x18\x01 \x01(\x0b\x32\x07.OpInfo\x12\r\n\x05\x65rror\x18\x02 \x01(\x08\"\xd0\x01\n\x11TransferOpRequest\x12\x15\n\x04info\x18\x01 \x01(\x0b\x32\x07.OpInfo\x12\x13\n\x0bsender_name\x18\x02 \x01(\t\x12\x15\n\rreceiver_name\x18\x03 \x01(\t\x12\x10\n\x08receiver\x18\x04 \x01(\t\x12\x0c\n\x04size\x18\x05 \x01(\x04\x12\r\n\x05\x63ount\x18\x06 \x01(\x04\x12\x16\n\x0ename_if_single\x18\x07 \x01(\t\x12\x16\n\x0emime_if_single\x18\x08 \x01(\t\x12\x19\n\x11top_dir_basenames\x18\t \x03(\t\"\x88\x01\n\tFileChunk\x12\x15\n\rrelative_path\x18\x01 \x01(\t\x12\x11\n\tfile_type\x18\x02 \x01(\x05\x12\x16\n\x0esymlink_target\x18\x03 \x01(\t\x12\r\n\x05\x63hunk\x18\x04 \x01(\x0c\x12\x11\n\tfile_mode\x18\x05 \x01(\r\x12\x17\n\x04time\x18\x06 \x01(\x0b\x32\t.FileTime\"-\n\x08\x46ileTime\x12\r\n\x05mtime\x18\x01 \x01(\x04\x12\x12\n\nmtime_usec\x18\x02 \x01(\r\"8\n\nRegRequest\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x10\n\x08hostname\x18\x02 \x01(\t\x12\x0c\n\x04ipv6\x18\x03 \x01(\t\"\"\n\x0bRegResponse\x12\x13\n\x0blocked_cert\x18\x01 \x01(\t\"\x8b\x01\n\x13ServiceRegistration\x12\x12\n\nservice_id\x18\x01 \x01(\t\x12\n\n\x02ip\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\x12\x10\n\x08hostname\x18\x04 \x01(\t\x12\x13\n\x0b\x61pi_version\x18\x05 \x01(\r\x12\x11\n\tauth_port\x18\x06 \x01(\r\x12\x0c\n\x04ipv6\x18\x07 \x01(\t\"@\n\x0bTextMessage\x12\r\n\x05ident\x18\x01 \x01(\t\x12\x11\n\ttimestamp\x18\x02 \x01(\x04\x12\x0f\n\x07message\x18\x03 \x01(\t2\xeb\x03\n\x04Warp\x12.\n\x10WaitingForDuplex\x12\x0b.LookupName\x1a\x0b.HaveDuplex\"\x00\x12\x39\n\x14GetRemoteMachineInfo\x12\x0b.LookupName\x1a\x12.RemoteMachineInfo\"\x00\x12?\n\x16GetRemoteMachineAvatar\x12\x0b.LookupName\x1a\x14.RemoteMachineAvatar\"\x00\x30\x01\x12;\n\x18ProcessTransferOpRequest\x12\x12.TransferOpRequest\x1a\t.VoidType\"\x00\x12\'\n\x0fPauseTransferOp\x12\x07.OpInfo\x1a\t.VoidType\"\x00\x12,\n\x0fSendTextMessage\x12\x0c.TextMessage\x1a\t.VoidType\"\x00\x12(\n\rStartTransfer\x12\x07.OpInfo\x1a\n.FileChunk\"\x00\x30\x01\x12/\n\x17\x43\x61ncelTransferOpRequest\x12\x07.OpInfo\x1a\t.VoidType\"\x00\x12&\n\x0cStopTransfer\x12\t.StopInfo\x1a\t.VoidType\"\x00\x12 \n\x04Ping\x12\x0b.LookupName\x1a\t.VoidType\"\x00\x32\x86\x01\n\x10WarpRegistration\x12\x31\n\x12RequestCertificate\x12\x0b.RegRequest\x1a\x0c.RegResponse\"\x00\x12?\n\x0fRegisterService\x12\x14.ServiceRegistration\x1a\x14.ServiceRegistration\"\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -60,7 +60,7 @@ _globals['_TEXTMESSAGE']._serialized_start=1027 _globals['_TEXTMESSAGE']._serialized_end=1091 _globals['_WARP']._serialized_start=1094 - _globals['_WARP']._serialized_end=1638 - _globals['_WARPREGISTRATION']._serialized_start=1641 - _globals['_WARPREGISTRATION']._serialized_end=1775 + _globals['_WARP']._serialized_end=1585 + _globals['_WARPREGISTRATION']._serialized_start=1588 + _globals['_WARPREGISTRATION']._serialized_end=1722 # @@protoc_insertion_point(module_scope) diff --git a/src/warp_pb2_grpc.py b/src/warp_pb2_grpc.py index c20b912b..25dac55e 100644 --- a/src/warp_pb2_grpc.py +++ b/src/warp_pb2_grpc.py @@ -41,11 +41,6 @@ def __init__(self, channel): Args: channel: A grpc.Channel. """ - self.CheckDuplexConnection = channel.unary_unary( - '/Warp/CheckDuplexConnection', - request_serializer=warp__pb2.LookupName.SerializeToString, - response_deserializer=warp__pb2.HaveDuplex.FromString, - _registered_method=True) self.WaitingForDuplex = channel.unary_unary( '/Warp/WaitingForDuplex', request_serializer=warp__pb2.LookupName.SerializeToString, @@ -108,16 +103,9 @@ class WarpServicer(object): """ - def CheckDuplexConnection(self, request, context): - """Sender methods - api v1 duplex method (ping style) - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - def WaitingForDuplex(self, request, context): - """api v2 duplex method (block/future) + """Sender methods + api v2 duplex method (block/future) """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') @@ -182,11 +170,6 @@ def Ping(self, request, context): def add_WarpServicer_to_server(servicer, server): rpc_method_handlers = { - 'CheckDuplexConnection': grpc.unary_unary_rpc_method_handler( - servicer.CheckDuplexConnection, - request_deserializer=warp__pb2.LookupName.FromString, - response_serializer=warp__pb2.HaveDuplex.SerializeToString, - ), 'WaitingForDuplex': grpc.unary_unary_rpc_method_handler( servicer.WaitingForDuplex, request_deserializer=warp__pb2.LookupName.FromString, @@ -255,33 +238,6 @@ class Warp(object): """ - @staticmethod - def CheckDuplexConnection(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/Warp/CheckDuplexConnection', - warp__pb2.LookupName.SerializeToString, - warp__pb2.HaveDuplex.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - @staticmethod def WaitingForDuplex(request, target,