diff options
Diffstat (limited to 'src/components/policy/policy_external/src/status.cc')
-rw-r--r-- | src/components/policy/policy_external/src/status.cc | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/components/policy/policy_external/src/status.cc b/src/components/policy/policy_external/src/status.cc index 3d1cae3eba..7162410731 100644 --- a/src/components/policy/policy_external/src/status.cc +++ b/src/components/policy/policy_external/src/status.cc @@ -67,6 +67,9 @@ void policy::UpdateNeededStatus::ProcessEvent( case kOnResetPolicyTableNoUpdate: manager->SetNextStatus(std::make_shared<UpToDateStatus>()); break; + case kPendingUpdate: + manager->SetNextStatus(std::make_shared<UpdatePendingStatus>()); + break; default: break; } @@ -76,6 +79,35 @@ bool policy::UpdateNeededStatus::IsUpdateRequired() const { return true; } +policy::UpdatePendingStatus::UpdatePendingStatus() + : Status(kUpdateNeeded, policy::PolicyTableStatus::StatusUpdatePending) {} + +void policy::UpdatePendingStatus::ProcessEvent( + policy::UpdateStatusManager* manager, policy::UpdateEvent event) { + switch (event) { + case kOnUpdateSentOut: + manager->SetNextStatus(std::make_shared<UpdatingStatus>()); + break; + case kOnResetPolicyTableRequireUpdate: + manager->SetNextStatus(std::make_shared<UpToDateStatus>()); + manager->SetPostponedStatus(std::make_shared<UpdateNeededStatus>()); + break; + case kOnResetPolicyTableNoUpdate: + manager->SetNextStatus(std::make_shared<UpToDateStatus>()); + break; + default: + break; + } +} + +bool policy::UpdatePendingStatus::IsUpdatePending() const { + return true; +} + +bool policy::UpdatePendingStatus::IsUpdateRequired() const { + return true; +} + policy::UpdatingStatus::UpdatingStatus() : Status(kUpdating, policy::PolicyTableStatus::StatusUpdatePending) {} |