def disconnect_to_proto(disconnect: typing.Disconnect) -> ClientMessage.Disconnect: """Serialize flower.Disconnect to ProtoBuf message.""" reason_proto = Reason.UNKNOWN if disconnect.reason == "RECONNECT": reason_proto = Reason.RECONNECT elif disconnect.reason == "POWER_DISCONNECTED": reason_proto = Reason.POWER_DISCONNECTED elif disconnect.reason == "WIFI_UNAVAILABLE": reason_proto = Reason.WIFI_UNAVAILABLE return ClientMessage.Disconnect(reason=reason_proto)
def client_disconnect_to_proto(reason: str) -> ClientMessage.Disconnect: reason_proto = Reason.UNKNOWN if reason == "RECONNECT": reason_proto = Reason.RECONNECT elif reason == "POWER_DISCONNECTED": reason_proto = Reason.POWER_DISCONNECTED elif reason == "WIFI_UNAVAILABLE": reason_proto = Reason.WIFI_UNAVAILABLE return ClientMessage.Disconnect(reason=reason_proto)
def _reconnect( reconnect_msg: ServerMessage.Reconnect, ) -> Tuple[ClientMessage, int]: # Determine the reason for sending Disconnect message reason = Reason.ACK sleep_duration = None if reconnect_msg.seconds is not None: reason = Reason.RECONNECT sleep_duration = reconnect_msg.seconds # Build Disconnect message disconnect = ClientMessage.Disconnect(reason=reason) return ClientMessage(disconnect=disconnect), sleep_duration
import grpc from flwr.proto.transport_pb2 import ClientMessage, ServerMessage from flwr.server.client_manager import SimpleClientManager from flwr.server.grpc_server.grpc_server import start_insecure_grpc_server from .connection import insecure_grpc_connection EXPECTED_NUM_SERVER_MESSAGE = 10 SERVER_MESSAGE = ServerMessage() SERVER_MESSAGE_RECONNECT = ServerMessage(reconnect=ServerMessage.Reconnect()) CLIENT_MESSAGE = ClientMessage() CLIENT_MESSAGE_DISCONNECT = ClientMessage(disconnect=ClientMessage.Disconnect()) def unused_tcp_port() -> int: """Return an unused port.""" with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock: sock.bind(("", 0)) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) return cast(int, sock.getsockname()[1]) def mock_join( # type: ignore # pylint: disable=invalid-name _self, request_iterator: Iterator[ClientMessage], _context: grpc.ServicerContext, ) -> Iterator[ServerMessage]:
import grpc from flwr.proto.transport_pb2 import ClientMessage, ServerMessage from flwr.server.client_manager import SimpleClientManager from flwr.server.grpc_server.grpc_server import start_insecure_grpc_server from .connection import insecure_grpc_connection EXPECTED_NUM_SERVER_MESSAGE = 10 SERVER_MESSAGE = ServerMessage() SERVER_MESSAGE_RECONNECT = ServerMessage(reconnect=ServerMessage.Reconnect()) CLIENT_MESSAGE = ClientMessage() CLIENT_MESSAGE_DISCONNECT = ClientMessage( disconnect=ClientMessage.Disconnect()) def unused_tcp_port() -> int: """Return an unused port.""" with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock: sock.bind(("", 0)) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) return cast(int, sock.getsockname()[1]) def mock_join( # type: ignore # pylint: disable=invalid-name _self, request_iterator: Iterator[ClientMessage], _context: grpc.ServicerContext, ) -> Iterator[ServerMessage]: