/* -*- C++ -*- */ // $Id$ // ============================================================================ // // = LIBRARY // EventComm // // = FILENAME // Event_Comm.idl // // = DESCRIPTION // The CORBA IDL module for distributed event notification. // // = AUTHOR // Douglas C. Schmidt (schmidt@cs.wustl.edu) // // ============================================================================ #if !defined (_EVENT_COMM_IDL) #define _EVENT_COMM_IDL module Event_Comm { // = TITLE // The CORBA IDL module for distributed event notification. struct Notification { // = TITLE // Defines the interface for an event . // // = This is the type passed by the Notifier to the Notification_Receiver. // Since it contains an , it can hold any values. Naturally, // the consumer must understand how to interpret this! string tag_; // Tag for the notification. any value_; // A notification can contain anything. Object object_ref_; // Object reference for callbacks. }; interface Notification_Receiver // = TITLE // Defines the interface for a of events. // Note that all operations are to avoid blocking. { void receive_notification (in Notification notification); // Inform the that has occurred. void disconnect (in string reason); // Disconnect the from the , // giving it the . }; interface Notifier { // = TITLE // Defines the interface for a of events. void send_disconnect (in string reason); // Disconnect all the receivers, giving them the . void send_notification (in Notification notification); // Send the to all the consumers who // have subscribed and who match the filtering criteria. void subscribe (in Notification_Receiver notification_receiver, in string filtering_criteria); // Subscribe the to receive events that // match the regular expresssion applied by // the . If is "" then all events // are matched. void unsubscribe (in Notification_Receiver notification_receiver, in string filtering_criteria); // Unsubscribe the that matches the // filtering criteria. If is "" then all // with the matching object reference are // removed. }; }; #endif /* _EVENT_COMM_IDL */