Scott Sanders wrote:

So then you start moving it over. In commons everything is

broken out

component-wise, but this is nothing new. Let's start

talking about how

to go forward with whatever you/we feel should be in the

commons.  I see

commons as a bunch of components, but I tend to NOT see a

framework in

commons.

So let's get all Excalibur's and Avalon's utility code into commons,
then Excalibur still uses it, and commons doesn't have to rewrite
(although rewriting seems to be the jakarta way, IMHO). Everybody
should win. Right?



Theorhetically.

Now Avalon utilities include a pooling implementation that is nothing like
the Pool package in Commons. Should the new pooling package be moved in
with that? And then what about the synchronization primitives? Do we know
where they would go?




What makes the Excalibur pool different/better? We start talking about it to see what to do: - Can we condense/refactor to just one? - Do we need both? - Is one better/more useful than the other?


The pooling ideas are different.  I am beginning to experiment with
managed pools that perform sizing information in a separate thread.
The experimentation happens in Excalibur's Scratchpad, not in the
released jar.

There are many things to discuss.



We just need to start talking about it :) All of this is just an email thread away ;-)


Ok, let me talk with the Avalon committers, to see about doing this.



IMHO the synch primitives would go with the threading proposal in the sandbox. Do your primitives look like these? How are they different?


Actually, what is in the Threading project is mostly queue classes...
something that I am working on and have a very cool implementation of.
(I.e. how about transactional enqueuing, etc.).

There is a Semaphore and Mutex object in the commons project, but no
DijkstraSemaphore (we have both), ReadWriteLock, ThreadBarrier, or
Sync interface.

The Excalibur event package has the queue classes and implementations.
The Queues have been tested threadsafe and can perform a complete enqueue/
dequeue pair in a few nanoseconds (based on average of 11 million
enqueue/dequeue ops).  Further, the Queues have transactional enqueuing
capabilities that work like this:

PreparedEnqueue stack = queue.prepareEnqueue( elements ); // elements is an 
array
                                                          // of QueueElement 
objects

if ( condition == ok )
{
    stack.commit();
}
else
{
    stack.abort();
}

There is more, but that is one point of distinction



I am actually excited about commons and Avalon/Excalibur working more
closely to each other. Sam came in with Gump and managed to get the
APIs to stabilize, now we need another level of cooperation. I think
that this can make it happen.


I would like to see this happen, but am feeling this out step by step.



As an aside, I have now read the "Developing with Avalon" paper and I must say that is the best description of a framework that I have ever read. Excellent work!


Thank you.  All I did was summarize a year and a half of email conversations...
Not that easy, but in the long run, it helped out many people including
my company :)


--

"They that give up essential liberty to obtain a little temporary safety
 deserve neither liberty nor safety."
                - Benjamin Franklin


-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>



Reply via email to