RE: ref counting in Bonobo



> > Instead, insulate clients from the actual details of ref counting by
provide
> > ref and unref library functions.  Currently, they can be implemented as
>
> Well, if i am not mistaken , this is allready the case of Bonobo C 
> implementation: we have gnome_object_ref and gnome_object_unref (not
> really usre about the actual name but they're there, for sure)

I think the interesting part of the suggestion was the "ping-interface".

<quote>
# Here's an example of an alternative mechanism you could support in this
# way:  Servers support an interface that's internal to Bonobo that allows
# clients to register a ping interface with them.  When the client obtains
# the initial reference it registers a ping interface (this would have to be
# handled by the mechanism that hands initial references to the client).
# When the client's reference count reaches zero, it unregisters the ping
# interface.  On the server side, each time a client registers a ping
# interface with the server, the server uses the object's Unknown interface
# to increase the ref count on the object.  It decreases the ref count
# whenever a client unregisters the ping interface, or whenever the client
# fails to respond to an actual ping attempt after a certain amount of time.
# All of this server-side work should be wrapped in library routines as
# well, so that it is transparent to the server implementation.
<endquote>

If I have understood it right, we have a
 interface Ping {
 	void Foo ();
 };

that all Gnome objects should implement, and that should be used as "ticket"
when a "client" want's to connect to a "server".
This way the server would be able to "ping" it's clients now and then, to
see if they are alive.
( Or actually, the framework in bonobo )

Just like "keepalieve mesages" in TCP.


// Liss



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