Go to the FreeLists Home Page Home Signup Help Login
 



[openbeosstorage] || [Date Prev] [02-2003 Date Index] [Date Next] || [Thread Prev] [02-2003 Thread Index] [Thread Next]

[openbeosstorage] Re: Registrar-Based Notification Mechanism

  • From: "Axel Dörfler" <axeld@xxxxxxxxxxxxxxxx>
  • To: openbeosstorage@xxxxxxxxxxxxx
  • Date: Mon, 17 Feb 2003 15:49:03 +0100 CET
"Ingo Weinhold" <bonefish@xxxxxxxxxxxxxxx> wrote:
[...]
> > > 2) Ports: The event notifications are written to a port. This 
> > > doesn't work very well with passive entities, I suspect.
> > They could, of course, spawn a thread for that purpose.
> That makes them a little less passive, doesn't it=3F ;-)

A little less, yes, but since that thread only waits until something 
happens, it's not that active anyway.

[...]
> The additional memcpy() I was referring to, has the following origin: 
> Without a notification mechanism for the kernel, the entity at which 
> the event occurred would have `allocated' ring buffer memory and 
> written the notification data directly into it, while with the hook 
> approach, it first has to write everything in a structure (on the 
> stack 
> certainly) passed to the hooks, and then it is memcpy()d into the 
> ring 
> buffer. Not that a memcpy() is extraordinarily expensive. ;-)

Why is that=3F Why should the hook approach make it necessary to prepare 
the data that has to be written to the ring buffer while the "direct" 
approach wouldn't=3F

[...]
> Yep. Actually for a moment I had the even scarier idea, to provide 
> the 
> facilities to add arbitrary notification services, that can for 
> instance be provided by modules. Then one could subscribe to a 
> service, 
> one doesn't even know about. But that does also mean, that one 
> doesn't 
> know the parameters needed by the service or the structure of the 
> notification. I suspect when trying to turn that into something 
> useful, 
> one would end up with a whole component concept and had invented Java 
> Beans for the kernel. ;-)

Most probably :-))
We should have well defined targets when we try to implement something 
:-)

> > For whatever reason - I have never understood that call. It's not 
> > really usable from C anyway. I could only use it to check if the 
> > BeOS 
> > kernel would send BMessages directly ;-)
> Its existence allowed us to already completely implement BQuery. So 
> I'm 
> not exactly ungrateful that it exists. ;-)

Okay, that would be one reason :-)

[...]
> > Despite the slow progress (Erik!!!), what's preventing calling 
> [I think, Erik is not this list, so... ;-)]

Damnit :-)

> > BMessage::Flatten() yourself and using write=3D5Fport() manually=3D3F 
> > It 
> > should 
> > be possible to get the target port for the Registrar, right=3D3F
> The problem is not the target port (i.e. looper), but the handler. 
> This 
> info is stored in the BMessage and must be set for each target it 
> shall 
> be delivered to. It should, of course, be possible to find out, where 
> the info resides in the flattened message and set it each time, but I 
> would prefer, if the BMessage implementation provided sending 
> flattened 
> messages to a given target.

Ah, yes, I see, so it should provide a Flatten() call that already 
defines the target handler - something it has to provide internally 
anyway. That should be very easy to do.

[...]
> > > I haven't thought much about that yet. Above is a spontaneous
> > > brain-storming -- maybe some more concrete ideas will form when 
> > > thinking a bit more about it.
> > Well, I think it's already the best idea for that problem, but 
> > please 
> > go on, have a better one again ;-P
> I didn't promise anything, did I=3F ;-)

Granted :-)

Adios...
   Axel.







[ Home | Signup | Help | Login | Archives | Lists ]

All trademarks and copyrights within the FreeLists archives are owned by their respective owners.
Everything else ©2007 Avenir Technologies, LLC.