01 package dk.deepthought.sidious.blackboard;
02
03 import dk.deepthought.sidious.planner.PlannerEngine;
04 import dk.deepthought.sidious.supportsystem.PlanRequester;
05 import dk.deepthought.sidious.supportsystem.SuperLinkID;
06
07 /**
08 * Implementations of this interface acts as blackboards. The purpose of the
09 * blackboards are to facilitate the communication between the various
10 * components of the system.
11 *
12 * @author Deepthought
13 *
14 */
15 public interface BlackBoard {
16
17 /**
18 * Delivers the result of any calculation onto the blackboard.
19 *
20 * @param result
21 * the result to deliver
22 */
23 public void deliverResult(Object result);
24
25 /**
26 * Returns a reference to the plan requester associated with the specified
27 * <code>id</code>.
28 * <p>
29 * If no requester is associated with the specified id, planning for the
30 * specified id is stopped in the Planner, and <code>null</code> is
31 * returned.
32 *
33 * @see PlannerEngine
34 *
35 * @param requester
36 * the id of the requested requester
37 * @return a reference to the specified plan requester, or <code>null</code>
38 * if requester does not exist
39 */
40 public PlanRequester getRequester(SuperLinkID requester);
41
42 /**
43 * Registers the specified caller as a requester of a plan. Caller will be
44 * notified when a plan has been devised.
45 *
46 * @param requester
47 * the requester of a plan
48 */
49 public void requestPlan(PlanRequester requester);
50
51 /**
52 * Returns the current setting of the adjustable associated with the
53 * specified <code>adjustableID</code> and <code>requesterID</code>.
54 *
55 * @param requesterID
56 * the id of the plan requester
57 * @param adjustableID
58 * the id of the adjustable to get the setting from
59 * @return the setting of the adjustable
60 */
61 public double getAdjustableSetting(SuperLinkID requesterID,
62 SuperLinkID adjustableID);
63
64 }
|