<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<policyModule name="ext_comp_exec">
  <contractModule name="contracts">
    <integer kind="ushort" name="priority_t">
      <comment>priority 1 is the highest</comment>
    </integer>
  </contractModule>
  <policyDef applicability="onComponentOnly" aspect="::core::comp_exec::comp_trig_asp" extends="::core::comp_exec::self_exec_comp" name="prdc_self_exec_comp">
    <comment>periodic self-executing component. It will invoke method run every period.</comment>
    <configParam name="psec_period" type="::core::basic_svc::clock::api::ucm_timeval_t"/>
    <configParam name="psec_priority" type="contracts::priority_t"/>
    <configParam name="psec_offset" type="::core::basic_svc::clock::api::ucm_timeval_t"/>
  </policyDef>
  <policyDef applicability="onComponentOnly" aspect="::core::comp_exec::comp_trig_asp" extends="::core::comp_exec::self_exec_comp" name="bgnd_self_exec_comp">
    <comment>background self-executing component. It will invoke method run only once.</comment>
    <configParam name="bsec_priority" type="contracts::priority_t"/>
    <configParam name="bsec_offset" type="::core::basic_svc::clock::api::ucm_timeval_t"/>
  </policyDef>
  <policyDef applicability="onAllPorts" aspect="::core::comp_exec::comp_exec_asp" extends="::core::comp_exec::prot_actv_comp" name="spdc_prot_actv_comp">
    <comment>sporadic protected active component. It will trigger the component execution whenever a port (or policy) is triggered.</comment>
    <configParam name="spac_priority" type="contracts::priority_t"/>
    <configParam name="spac_min_period" type="::core::basic_svc::clock::api::ucm_timeval_t"/>
  </policyDef>
  <policyDef applicability="onAllPorts" aspect="::core::comp_exec::comp_exec_asp" extends="::core::comp_exec::prot_actv_comp" name="prdc_prot_actv_comp">
    <comment>periodic protected active component. It will trigger the component execution every period if a port (or policy) is triggered.</comment>
    <configParam name="ppac_priority" type="contracts::priority_t"/>
    <configParam name="ppac_period" type="::core::basic_svc::clock::api::ucm_timeval_t"/>
    <configParam name="ppac_offset" type="::core::basic_svc::clock::api::ucm_timeval_t"/>
  </policyDef>
</policyModule>
