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}