| // Copyright 2017 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library fuchsia.modular; |
| |
| using fuchsia.auth; |
| |
| /// An instance of this service is exposed to agents in their namespace. |
| /// |AgentContext| allows an agent to schedule tasks which run in response to |
| /// triggers. Triggers are conditions such as a message arriving on a |
| /// MessageQueue. |
| [Discoverable] |
| interface AgentContext { |
| /// DEPRECATED: ComponentContext is now available in the |
| /// namespace/environment for Modules. |
| 1: GetComponentContext(request<ComponentContext> request); |
| |
| /// Connects to an EntityReferenceFactory for this Agent. Entity references |
| /// obtained from this EntityReferenceFactory will be resolved back to this |
| /// Agent. |
| 4: GetEntityReferenceFactory(request<EntityReferenceFactory> request); |
| |
| /// Schedules a task described in |task_info|. When this task is scheduled to |
| /// run, Agent.RunTask() is called. |
| /// |
| /// TODO(MI4-962): Add a callback to task scheduling. |
| 5: ScheduleTask(TaskInfo task_info); |
| |
| /// No new runs of this task will be scheduled. |
| 6: DeleteTask(string task_id); |
| |
| /// The auth token manager this Agent may use for accessing external services. |
| 7: GetTokenManager(request<fuchsia.auth.TokenManager> request); |
| }; |
| |
| /// Used to describe a task to the framework. |
| struct TaskInfo { |
| /// An agent provided task id that can be used later to refer to this task. |
| string task_id; |
| |
| /// The condition that would cause this task to get scheduled. |
| TriggerCondition trigger_condition; |
| |
| /// If set to true, the trigger condition will be persisted on the user's |
| /// ledger and will be available across reboots and devices. |
| bool persistent; |
| }; |
| |
| /// Describes the condition that needs to be met for a task to become scheduled. |
| /// This is not yet complete and will be extended or changed. |
| union TriggerCondition { |
| /// Triggers when there is a new message on a message queue. |
| /// |
| /// |message_on_queue| is the name of the message queue to be watched. This |
| /// means that only the component that originally obtained the message queue |
| /// will be able to observe new message events. |
| string message_on_queue; |
| |
| /// Triggers when a message queue is deleted. |
| /// |
| /// |queue_deleted| is the token for the message queue that is to be watched. |
| /// This allows both message queue readers and writers to watch for queue |
| /// deletions. |
| string queue_deleted; |
| |
| /// Fires an inexact repeating alarm every |alarm_in_seconds| seconds that'll |
| /// satisfy this trigger condition. The first alarm fires in |
| /// |alarm_in_seconds| seconds. |
| uint32 alarm_in_seconds; |
| }; |