It's been awhile since I've done much with Nessie. Since my last post, I've been caught up with a project at work and have had a harddrive failure. However, I'm now seated at Ritual and ready to write some code!
I've decided to take a step back from the Nessie code for a bit and consider the architecture of the system. At the current rate, I've coded myself in to a corner, back tracked, tried again, and coded myself into another corner. The system has gotten too large and complex for me to keep straight and I've found myself trying to get tests to pass by simply hacking away at code. I think some better organization and a clear architectural goal could be of help here. The chart below is my first graphical concept of how I think the architecture should work. There are some areas which lack detail, but I think it's enough to start restructuring the code a bit. Hopefully, in doing so, the missing details will become more apparent and I can then add them to the chart.
This sounded like a good idea initially, but now it's not working so well. Since avatars do the communicating now, services would have to be added to both the avatars and the peers. Yuck. So, that means that either 1) avatars and peers need to merge and become one, or that 2) the services concept is refactored into something else. Right now, I'm thinking option 2. However, I'm not sure how that refactoring is going to go right now. Unfortunately, it's holding me up on getting the rest of the networking tests to pass :(