flower
flower copied to clipboard
feat(framework) Implement `GrpcRereFleetConnection`, `GrpcBidiConnection`, `GrpcAdapterFleetConnection`, and `RestFleetConnection`
Based on:
- #4054
- #4055
- Migrated
grpc_rere_client/connection.pytoRereFleetConnection, implementingConnectionclass, andGrpcRereFleetConnection, implementingRereFleetConnectionclass. - Migrated part of
rest_client/connection.pytoRestFleetConnection. It now inherits fromRereFleetConnectionand thus the code duplication is minimized. - Migrated
grpc_adapter_client/connection.pytoGrpcAdapterFleetConnection, which also inherits fromRereFleetConnection. - Migrated
grpc_client/connection.py(thegrpc-biditransport) toGrpcBidiConnection, implementingConnectionclass. - Simplified the logic in the main loop of
start_client_internal. - Updated
client_interceptor.pyand its unit tests accordingly.
Based on:
- feat(framework) Add the abstract base class
Connection#4054- refactor(framework:skip) Move existing transport code to
flwr/client/connectionfolder #4055
- Migrated
grpc_rere_client/connection.pytoGrpcRereConnection, implementingConnectionclass.- Migrated part of
rest_client/connection.pytoRestConnection. It now inherits fromGrpcRereConnectionand thus the code duplication is minimized.- Migrated
grpc_adapter_client/connection.pytoGrpcAdapterConnection, which also inherits fromGrpcRereConnection.- Migrated
grpc_client/connection.py(thegrpc-biditransport) toGrpcBidiConnection, implementingConnectionclass.- Simplified the logic in the main loop of
start_client_internal.- Updated
client_interceptor.pyand its unit tests accordingly.
@panh99 Would it make sense to have an intermediary RereConnection that is inherited by both RestConnection and GrpcRereConnection? It somehow feels wrong to have RestConnection inherit from GrpcRereConnection eventhough it has nothing to do with gRPC. It's just a naming issue, but wdyt?