Re: Gnome messaging



Hi all,

Tom> * Events are names and optional associated data. Names are just
Tom>   strings but are hierarchically organized
Tom> * Only "push" channels exist
Tom> * Filtering is done in the server.

Elliot> The gnome_triggers API already does this; we can plug a CORBA
Elliot> backend in at our convenience. I just fail to see what a CORBA
Elliot> backend adds. Perhaps you could provide some better examples of
Elliot> where CORBA is needed instead of just running a program or
Elliot> playing a sound or calling a function directly?
Elliot> [snip]
Elliot> Your example of playing a sound when an event is sent is probably
Elliot> better handled directly by gnome_triggers() - sending the request
Elliot> over CORBA doesn't seem to buy anything, since all the sample
Elliot> storage and sound playing is centrally handled in esd anyways.

I would tend to agree with Tom: the need for event channels is
there. This is particularly the case when the event provider has
now idea of who might be interested in the event. It allows
open ended systems to be developed so that future component
providers, that were _never_thought_of_ by the event-providing
application writer, can be plugged in.

Tom's suggested IDL looks good. I would just make the (albeit
temporary) 'message' type a sequence of strings, instead of just
strings.

I would also like to see some kind of mapping system, where an
event of a certain name (or maybe certain prefix), can be mapped
to another name by the event server. This would allow event
providers and consumers which are completely independent of each
other to be plugged together. To me, this is what a component
model is all about.

Mapping would be added as some other operations to the observable
interface, maybe like so:

struct NameMap
{
    name orig_name; /* can be a prefix */
    name new_name;
}
typedef sequence<NameMap> NameMapList;
void add_map( in NameMap this_map );
void list_all_maps( out NameMapList );
/* For this next one, orig_name limits how many maps are returned */
void list_maps_for( in name orig_name, out NameMapList );
void delete_mapping( in NameMap this_map );

Or you may want to do the list operations via an Iterator.

To respond to Elliot's point about gnome_triggers(): I definitely
think transmitting the event over CORBA to some server that can
distribute it to interested observers ANYWHERE has a lot of
value. Isn't that what the 'N' in GNOME implies? In my
experience, distribution is something that can be very hard to
retrofit into a system.

Regards,

Michael

-- 
Michael Forrest      mef@poudre.cnd.hp.com Phone: +1-970-898-7430
Hewlett Packard      OpenView Telecom Division - HP Fort Collins



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]