summaryrefslogtreecommitdiff
path: root/common/Goal.idl
blob: 428a181f6ea9601e9c12847cd3621eaa9b26f37f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#ifndef GOAL_IDL
#define GOAL_IDL

#include "QoS.idl"
#include "Time.idl"

module CIAO
{
  module RACE
    {
      struct GoalCondition
      {
        // ID of condition (in Task Network).
        long condID;

        // Utility value (specifying importance of this goal condition).
        long utility;
      };

      typedef sequence <GoalCondition> GoalConditions;

      struct TimeConstraint
      {
        // ID of condition (in Task Network).
        long condID;

        // Start-by (end-by) time for this data (non-data) condition.
        TimeValue constraint;
      };

      typedef sequence <TimeConstraint> TimeConstraints;

      struct GoalStructure
      {
        // Universally unique ID of goal.
        string UUID;

        // Human-readable name (for debugging, not identification).
        string name;

        // Goal conditions with utility values.
        GoalConditions goalConds;

        // Start-by and end-by constraints on conditions, in relative time
        // (relative to start of opstring to achieve this goal).
        TimeConstraints relTimes;

        // Start-by and end-by constraints on conditions, in clock time.
        TimeConstraints absTimes;

        // QoS requirements.
        QoSSpecifications QoSRequirements;

        // Expected time range for start of opstring (for achieving this goal)
        // execution.
        TimeWindow startWindow;
      };
  };
};

#endif /* GOAL_IDL */