The Critic Manager Component
See Also: Critic Framework Overview.
High-Level Description: The Critic Manager component is responsible for maintaining information about the available critics in the ArchStudio 3 architecture and their current states. These states may be one of {Active, Inactive, Busy, or Waiting}.
Top Interface Requests: (The following are requests sent out by this component to components above).
archstudio.critics.CriticGetStatusMessage
: This request is emitted when the component begins, to get the statuses of all the critics.archstudio.critics.CriticSetStatusMessage
: This request is emitted in response to receivedCriticSetStatusMessage
s, sometimes based on dependencies. This component always createsCriticSetStatusMessage
s with their "approved" flag set, which critics are obliged to listen to. See below for a description of what happens when the Critic Manager receives aCriticSetStatusMessage
from some other component. The Critic Manager may also emit aCriticSetStatusMessage
in response to aCriticStatusMessage
notification indicating that a particular critic has gone inactive or unavailable, in which case this critic will deactivate all critics dependent on the now-unavailable critic.
Top Interface Notifications: (The following are notifications handled by this component from components above).
archstudio.critics.CriticStatusMessage
: These events, which usually come from critics, indicate the current state of a critic. Critics only know their local state, which is one of {Active, Inactive, Busy, Unavailable}. "Unavailable" messages are usually sent out as the critic is being removed from the architecture. When the Critic Manager receives aCriticStatusMessage
, it records that status in its internal repository of critic statuses. However, it also determines whether this message impacts the "waiting" state of other critics. A critic is considered to be waiting if it is active and not busy, but one of its dependencies is busy. AppropriateCriticStatusMessage
s are sent downward whenever a critic's actual state changes.
Bottom Interface Requests: (The following are requests handled by this component).
archstudio.critics.CriticGetStatusMessage
: These requests come from components below, asking for a notification of some current critic's (or group of critics') status. While the Critic Manager sends out notifications of critic status whenever that status changes, aCriticGetStatusMessage
will cause notifications no matter what. ACriticGetStatusMessage
has as a parameter an array of critic identifiers. If this array is populated, then the CriticManager will emitCriticStatusMessage
notifications downward for each critic listed in the array. If the array is empty, then it will emit notifications for each critic it knows about.archstudio.critics.CriticSetStatusMessage
: These requests are to change the status of a critic to 'Active' or 'Inactive.' These requests must have a set of Critic IDs to set active or inactive, and a valid status. The Critic Manager will also make appropriate changes to dependencies. That is, if a critic is set to active, all its dependencies will be set to active as well. Likewise, if it is set to inactive, all critics dependent on the inactive one will go inactive as well. If a critic has a noted dependency, but the dependency is missing, the Critic Manager will emit aCriticDependencyMissingMessage
notification downward.
Bottom Interface Notifications: (The following are notifications sent out by this component).
archstudio.critics.CriticStatusMessage
: These notifications are emitted when a critic's status changes, when the critic manager starts up, or in response to aCriticGetStatusMessage
. The Critic Manager reserves the right to send out these status messages at any time, and duplicates may happen. See above descriptions for more information about when and whyCriticStatusMessage
s are emitted.archstudio.critics.CriticDependencyMissingMessage
: These notifications are emitted whenever a critic is activated, but one of its dependencies is not available (i.e. not in the architecture). This is an error condition.
Required EBI Service Interfaces: (The following are interfaces used by this component via the EBI Wrapper Mechanism and should be made available by a component above this one).
- None.
Provided EBI Service Interfaces: (The following are interfaces implemented by this component via the EBI Wrapper Mechanism and are made available to components below this one).
- None.