namespace Events; using Notifiers.*; // A plain Event can be passed to the event source // if no action should be taken. struct Event virtual { guid: "24585852-2877-11DA-9148-00112431A05E"; }; struct NotifierEvent : Event { guid: "2FDEB883-2877-11DA-BBC9-00112431A05E"; Notifier target; VStruct info; }; struct SyncNotifierEvent : Event { guid: "D1F6CC34-2877-11DA-9481-00112431A05E"; SyncNotifier target; VStruct info; }; struct EventInfo virtual { guid: "58FB107A-3693-11DA-B25C-000A95BB581A"; VStruct dynamic_info; }; struct TrapEvent : Event { guid: "D4DB748C-2877-11DA-8846-00112431A05E"; Traps.Trappable target; Traps.Trap trap; }; // If a trap event has a trap of this base type, // dynamic_info will be filled in with the info passed // to the trigger. Otherwise, the dynamic info // will be dropped. struct EventTrap : Traps.Trap { guid: "F884DC14-36D6-11DA-BAEE-000A95BB581A"; VStruct dynamic_info; }; interface EventDispatcher { guid: "8598ADAE-35E9-11DA-A310-000A95BB581A"; setup_trigger(Event event, Notifier trigger out); setup_sync_trigger(Event event, SyncNotifier trigger out); };