Hi all, This is my "on the moment" opinion. I'll tell it very quick because I must go to a birthday celebration. :-) Beer for meee! :-)) IMHO: from the start BApplication should have a shared area with app_server - small one start. All shared objects should store, from the start, their data in that area. The area will grow as needed and shrink to a predefined value if, for 15 seconds or so, only <=50% of it is used. ("15 sec or so" ~= a check when the next we access/set data within that area) Just a thought... bye for now, Have fun! Adi. DarkWyrm wrote: >>"DarkWyrm" <bpmagic@xxxxxxxxxxxxxxx> wrote: >> >>>I just changed our pool allocator from a bunch of C code (and ugly >>>at >>>that) to a class so we can have multiple pool managers in the same >>>application without conflicts. We are going the same route as R5 >>>and >>>setting up a general application area. We will eventually be moving >>>BBitmap storage to this shared area to prevent a bad app from >>>overwriting BBitmap data in another app, but one question still >>>remains: how should we send over a large object? Should we create a >>>new >>>area, dump it there, and tell the server to look there, or should >>>the >>>client ask the app_server for a memory chunk to write to, write to >>>it, >>>and then send the message? I'm kinda concerned about overhead and I >>>wondered what the rest of you gentlemen thought. >> >>You can create the area in the client, send its area_id to the >>server, >>clone it there, and delete the area in the client, if you don't need >>to >>access it anymore from there. >>Does that fit to what you need? > > That was already part of the plan. The problem is how to manage > allocating and deleting memory from this shared space. We already have > a working pool allocator to handle the actual management, but what > would be the best route to go to allow both sides to do this. Perhaps I > can illustrate better with an example. Let's say that we have someone > who is incredibly stupid or incredibly evil (or both) who wants to > approximate a particular strange BShape using a BPolygon object and > does so by storing literally each and every point in the thing and, as > a result, the thing occupies 2MB of space. Ouch. Then he tries to draw > it using StrokePolygon. Somehow that data needs to get to the server. > The only problem is that AFAIK there isn't a way for that much data to > fit through a port. Ideally, I'd like to have some way to put the whole > AS_STROKE_POLYGON message into an area, and then tell the server where > it is. Then, the server only has to look in the area to read the whole > thing in -- or perhaps make the call directly from the data in the area > to avoid another copy -- and then delete the whole mess so that the > memory is freed. How could something like this be coordinated? Is there > a better way that I haven't yet thought of? > > --DW > > > > --------------------------------------------------------------- > http://www.videomax.ro/ - Cautam cinefili pentru premiere! > >