1namespace com.android.federatedcompute.services.data.fbs;
2
3table TrainingConstraints {
4    requires_scheduler_idle:bool;
5    requires_scheduler_battery_not_low:bool;
6    requires_scheduler_unmetered_network:bool;
7}
8
9enum SchedulingMode : int {
10    UNDEFINED = 0,
11    // The task will be repeatedly scheduled after each run.
12    RECURRENT = 1,
13    // The task will be removed once it succeeds once.
14    ONE_TIME = 2,
15}
16
17table TrainingIntervalOptions {
18    scheduling_mode:SchedulingMode;
19    min_interval_millis: uint64;
20}
21
22enum SchedulingReason : int {
23    SCHEDULING_REASON_UNSPECIFIED = 0,
24
25    // A new task was scheduled with a call to FederatedComputeService.schedule().
26    // This also includes the case where an existing task was "replaced" because
27    // key parameters such as population name or scheduling parameters changed.
28    SCHEDULING_REASON_NEW_TASK = 1,
29
30    // A federated computation finished successfully, and the task was
31    // rescheduled using a server provided retry window.
32    SCHEDULING_REASON_FEDERATED_COMPUTATION_RETRY = 2,
33
34    // Task ended in error, and a default latency for rescheduling was used.
35    SCHEDULING_REASON_FAILURE = 3,
36}
37
38table TrainingFlags {
39  tf_error_reschedule_seconds:uint64;
40  is_client_error_logging_enabled:bool;
41}