Hi everyone,
Here is a base cut at a client server framework. I cut out chatter (distributed object framework) so I could focus on stabilizing the core subsystems. I have spent the last week refactoring the locators, resolvers, listeners, and connecters. I would absolutely love it if folks picked this up and started using it alpha so we can shake the problems out and get it to production quality. It should port to other dialects fairly easily as well. It's open source, of course. The rule seems to be that bugs get discovered in direct proportion to the number of eyes looking at the code. This is my pitch - I will diligently coordinate any assistance that folks can give to this effort, in the hopes that my passion is rewarded with a valient user base; please try and break it - that makes me happy. :-) (and you most certainly will!)
MOTIVATION: -Distributed Objects between dialects
FEATURES: -Uses the Camp Smalltalk BinaryInterop ObjectStream, which runs on 5-6 dialects. -Provides for a reliable stream interface to sockets. -The endpoint hierarchy has a stackable protocol stream -Uses a connection manager to pump accepts -There is an InMemoryTransport, InMemoryListener, InMemoryConnecter, and ReliableInMemoryStream to implement an inmemory transport system. Locators should look like: 'comm://inmemory/4501/ObjectService' asLocator -(others to be sure...)
BUGS: -Dangling Service/Manager connection -Can't always save the image -Not very robust examples or applications (well, there is one...hey, what time is it over there?) -Spotty UnitTests -Needs work in the exceptions arena. They are thrown but not as helpful as they could be. -UDP???
INSTALL: Load the BinaryInteroperability changeset. Load the ClientServerFramework changeset.
YOu should have SUnit to run the testCase.
PROBLEM REPORTS: 1) running the Unit test twice will give you a reliable stream error the second time. Basically the Service doesn't shutdown cleanly. The third time it will work again so it seems either enough time has passed for shutdown or the second run through will cause the manager/service to close.
2) If you save the image after running the test, then when you reopen it the ObjectService is spasming. This may occur if you save after running the test once or thrice, .. and, thus, it is the same problem as above. I need to try and run it 2 times then save.
3) The binary interopt stuff is probably not the latest and greatest that Paul Baumann has. It's in ENVY so it is tricky getting it filed into Squeak.
I am accepting questions, advice, criticisms and fixes, perhaps even complaints, but not until I've had my lunch...
thanks and enjoy, Rob
Here is an update which fixes the service hang and thrash issue (bugs 1 and 2). It wasn't cleaning up the listener socket inside of the TCPListener agent.
regards, Rob
Robert Withers wrote:
Hi everyone,
Here is a base cut at a client server framework. I cut out chatter (distributed object framework) so I could focus on stabilizing the core subsystems. I have spent the last week refactoring the locators, resolvers, listeners, and connecters. I would absolutely love it if folks picked this up and started using it alpha so we can shake the problems out and get it to production quality. It should port to other dialects fairly easily as well. It's open source, of course. The rule seems to be that bugs get discovered in direct proportion to the number of eyes looking at the code. This is my pitch - I will diligently coordinate any assistance that folks can give to this effort, in the hopes that my passion is rewarded with a valient user base; please try and break it - that makes me happy. :-) (and you most certainly will!)
MOTIVATION: -Distributed Objects between dialects
FEATURES: -Uses the Camp Smalltalk BinaryInterop ObjectStream, which runs on 5-6 dialects. -Provides for a reliable stream interface to sockets. -The endpoint hierarchy has a stackable protocol stream -Uses a connection manager to pump accepts -There is an InMemoryTransport, InMemoryListener, InMemoryConnecter, and ReliableInMemoryStream to implement an inmemory transport system. Locators should look like: 'comm://inmemory/4501/ObjectService' asLocator -(others to be sure...)
BUGS: -Dangling Service/Manager connection -Can't always save the image -Not very robust examples or applications (well, there is one...hey, what time is it over there?) -Spotty UnitTests -Needs work in the exceptions arena. They are thrown but not as helpful as they could be. -UDP???
INSTALL: Load the BinaryInteroperability changeset. Load the ClientServerFramework changeset.
YOu should have SUnit to run the testCase.
PROBLEM REPORTS:
- running the Unit test twice will give you a reliable stream error the
second time. Basically the Service doesn't shutdown cleanly. The third time it will work again so it seems either enough time has passed for shutdown or the second run through will cause the manager/service to close.
- If you save the image after running the test, then when you reopen it
the ObjectService is spasming. This may occur if you save after running the test once or thrice, .. and, thus, it is the same problem as above. I need to try and run it 2 times then save.
- The binary interopt stuff is probably not the latest and greatest
that Paul Baumann has. It's in ENVY so it is tricky getting it filed into Squeak.
I am accepting questions, advice, criticisms and fixes, perhaps even complaints, but not until I've had my lunch...
thanks and enjoy, Rob
--
Smalltalking by choice. Isn't it nice to have one!
Name: csframework.1.tgz
csframework.1.tgz Type: unspecified type (application/octet-stream) Encoding: base64
squeak-dev@lists.squeakfoundation.org