Name: Zinc-HTTP-SvenVanCaekenberghe.233
Author: SvenVanCaekenberghe
Time: 22 December 2011, 12:54:05 pm
UUID: 8dd541c9-2890-4a8f-b5cb-d6ac2e9341af
Ancestors: Zinc-HTTP-SvenVanCaekenberghe.232
Rewrote ZnServer and subclasses's class methods #startDefaultOn: and
#defaultOn: to treat the default instance like a singleton by
reusing/restarting/reconfiguring existing instances; expanded comments;
Changed the implementation of ZnServer>>#start to automagically register the
default instance;
Changed the implementation of ZnServer>>#stop to always unregister;
added ZnServer>>#stop: with an option to control the unregistering so that it
does not happen when shutting down the image
----
Name: Zinc-Tests-SvenVanCaekenberghe.121
Author: SvenVanCaekenberghe
Time: 22 December 2011, 12:56:23 pm
UUID: c1396284-0787-4c42-bedd-fb6ae918c68d
Ancestors: Zinc-Tests-SvenVanCaekenberghe.120
added ZnServerTests>>#testDefault to test the new semantics of ZnServer
class>>#startDefaultOn:
---
ZnServerTests>>#testDefault
| server |
ZnServer stopDefault.
self assert: ZnServer default isNil.
server := ZnServer startDefaultOn: 1701.
self assert: ZnServer default notNil.
self assert: ZnServer default == server.
self assert: ZnServer default port = 1701.
self assert: ZnServer default isRunning.
self assert: (ZnServer managedServers includes: server).
ZnServer stopDefault.
self assert: ZnServer default isNil.
self deny: server isRunning.
self deny: (ZnServer managedServers includes: server).
server := ZnServer startDefaultOn: 1701.
"Starting the default again is actually a restart"
ZnServer startDefaultOn: 1701.
self assert: ZnServer default == server.
ZnServer stopDefault
On 21 Dec 2011, at 08:26, Sven Van Caekenberghe wrote:
> Sean,
>
> On 21 Dec 2011, at 04:40, Sean P. DeNigris wrote:
>
>> If you evaluate "ZnServer startDefaultOn: aPortNumber" several times, you end
>> up with that many instances of the default server class. Is that the
>> intended behavior? #default usually = singleton, so I expected all the calls
>> to operate on the same instance.
>
> ZnServer>>#defaultOn: aNumber
> "Create a new Default instance on a given port,
> stopping any previously running Default and replacing it.
> Register the new instance."
>
> Default ifNotNil: [ Default stop ].
> ^ Default := (self on: aNumber)
> register;
> yourself
>
> Hmm, I never looked at it that way, but now that you mention it, a clearer
> singleton behavior might make more sense. Note that in any case, only one
> instance was running. But it might make more sense to really maintain a
> singleton, the comments should be adapted as well.
>
> Thanks for bringing this to my attention.
>
> Regards,
>
> Sven