More stuff. :) I ran into some design problems with jabberoo today..actually it's a trap I keep falling into -- designing a solution for too many problems. I was (as crazy as it may sound) trying to write a wrapper which handled async/sync sockets with one interface (impl, platform specific of course). Obviously, there's a host of problems that show up with this approach, not the least of which is integrating the events into another object cleanly (which I needed to do). What it basically came down to was re- thinking and restricting the Transmitter abstraction to a simple goal: send data or throw an error. Nothing more.
This fires some interesting thoughts on the way that OO design is approached as a whole. I fear too many of us (myself included) view the OOP as a complete solution for every implementation issue. The fact of the matter is the objects simply provide us with a way of wrapping up functionality into neat pieces. OO provides a nice way of writing resuable chunks of code that can be platform independent. However, once you hit a certain level of abstraction, you should by all means, embrace the platform specifics. That's where a good object-oriented design is most powerful I think -- packaging code for reuse in such a way that dependicies on platform-specifics are minimized, but at the same time are fully utilized. :)
Ahh..my head feels lighter now.