Making a Windows Service isn't that hard...
...managed to port that source code from earlier to a Windows Service that behaves correctly, though it only supports Start/Stop, I couldn't think of a sane state to handle Pause/Resume since there's no solid answer to 'should a web server finish existing requests, close existing requests, or just 'hang' existing requests when paused?' that I could find.
Still, pleased with myself, now to work on a DNS filter that'll automatically integrate itself into the existing network stack, and then integrate that with the main program so it'll be a single executable/service to deal with. Then comes the hard part: Adding configuration screens to adding new domain-names to block like this.
I think there might actually be a market for this sort of thing, if I can manage to make it not break corporate Windows networking's wierd DNS requirements and what-not.
Still, pleased with myself, now to work on a DNS filter that'll automatically integrate itself into the existing network stack, and then integrate that with the main program so it'll be a single executable/service to deal with. Then comes the hard part: Adding configuration screens to adding new domain-names to block like this.
I think there might actually be a market for this sort of thing, if I can manage to make it not break corporate Windows networking's wierd DNS requirements and what-not.
no subject
(Anonymous) 2008-05-06 12:39 am (UTC)(link)no subject
Looks like you've been busy! :-)
Yup!
(Anonymous) 2008-05-06 01:41 am (UTC)(link)Re: Yup!
Re: Yup!
Re: Yup!
Re: Yup!
no subject
If it was a full-fledged web server, that makes sense.
In this case, the compiled executable is only 8kB in size actually, despite obeying ALL Windows semantics and steps to do WinSock calls, handle Windows errors cleanly if abruptly, and provide minimal logging to the Event Log when it starts up and shuts down.
no subject
Temporarily stop accepting new requests, returning "temporary condition, please try again in a few moments" results if possible
Finish servicing existing requests
The general idea is "if you need to stop/restart the database, it makes sense to perform an orderly reduction of load without causing large amounts of errors and thus calls to the help desk."
If the administrator wants the existing connections to be closed forcefully, the administrator will stop the service.
As you've noticed, pause/resume semantics are optional.