Re: Asynchronous procedure call with ORBit.



On dom, 2001-11-18 at 18:59, Bill Haneman wrote:
> thierry wrote:
> > 
> > Hello folks!
> > 
> > We are a small team working on a project that wish to use ORBit as communication
> > fundations. Well, the problem we have is actually very similar to the one posted
> > by Edgar Hilton on 30 Oct 2001 17:46:21, but we would like to have a more orbit-
> > specific response.
> > 
> > We also have a set of clients that must synchronise their internal lists,
> > whenever they are changed on the serveur-side. We've tried to implement
> > a specific interface into a new thread directly in the client-side, but it
> > seems to confuse orbit, which locks after exchanging some messages. You
> > (Rodrigo Moya) have exposed a nice feature, by implementing a such IDL:
> > 
> > interface Server {
> >         void connectClient (in Client client);
> > };
> > 
> > interface Client {
> >         void notify (...);
> > };
> > 
> > How can you send a client object to the server without creating any new
> > thread?
> > 
> > As far we know, implementing "Client" interface in the client-side implies
> > creating a new running serveur (for associating code and calls to the other
> > side).
> > 
> > We know that's not very CORBA-compliant, but can you explain a bit more,
> > what's required for doing asynchronous message using the above IDL?
> 
> Well, if you want it to be asynchronous, replace
> 
> void notify (...)
>  
> with
> 
> oneway void notify (...)  :-)

if you use oneway calls nobody can ensure that the remote object in
which you are executing that method has died, and if you execute the
method and the object has died you also receive no exeption telling you
that.

> 
> 
> We implement this basic idea in at-spi, look at :
> 
> at-spi/idl/Registry.idl
> at-spi/idl/Listener.idl
> 
> and
> 
> at-spi/test/at.c
> at-spi/test/app.c
> 
> Registry is a server which receives notify events and propagates them to
> listeners, both registry and listeners implement Listener.idl (with
> oneway notify() methods).  Listeners register with the registry via a
> synchronous registerGlobalEventListener() method in which they pass
> object references to themselves, the registry later calls notify() on
> these object references when events need to be dispatched.
> 
> HTH,
> 
> Bill
> 
> 
> > Thanks a lot!
> > 
> > Thierry Pierron
> > 
> > _______________________________________________
> > orbit-list mailing list
> > orbit-list@gnome.org
> > http://mail.gnome.org/mailman/listinfo/orbit-list
> _______________________________________________
> orbit-list mailing list
> orbit-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/orbit-list





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