Source code for nvflare.app_common.abstract.response_processor

# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# See the License for the specific language governing permissions and
# limitations under the License.

from abc import ABC, abstractmethod

from nvflare.apis.client import Client
from nvflare.apis.fl_component import FLComponent
from nvflare.apis.fl_context import FLContext
from nvflare.apis.shareable import Shareable

[docs]class ResponseProcessor(FLComponent, ABC):
[docs] @abstractmethod def create_task_data(self, task_name: str, fl_ctx: FLContext) -> Shareable: """Create the task data for the process request to clients This method is called at the beginning of the ResponseProcessor controller, e.g., in BroadcastAndProcess. The internal state of the processor should be reset here, if the processor is used multiple times. Args: task_name: name of the task fl_ctx: FL context Returns: task data as a shareable """ pass
[docs] @abstractmethod def process_client_response(self, client: Client, task_name: str, response: Shareable, fl_ctx: FLContext) -> bool: """Processes the response submitted by a client. This method is called every time a response is received from a client. Args: client: the client that submitted response task_name: name of the task that the response corresponds to response: client submitted response fl_ctx: FLContext Returns: boolean to indicate if the client data is acceptable. If not acceptable, the control flow will exit. """ pass
[docs] @abstractmethod def final_process(self, fl_ctx: FLContext) -> bool: """Perform the final process. This method is called after received responses from all clients. Args: fl_ctx: FLContext Returns: boolean indicating whether the final response processing is successful. If not successful, the control flow will exit. """ pass