On 6 Nov 2005 12:26:07 -0800, "JDF" <jdferrell3@gmail.com> declaimed the
following in comp.lang.python:
You left off the important stuff... Like the class definition, since
you reference "self." -- there is nothing here to tell where
self.hWaitStop or self.overlapped.hEvent are created/defined.[color=blue]
>
> s = socket.socket()
> hostIP = socket.gethostbyaddr(socket.gethostname())[2][0]
> if debug == 'true': servicemanager.LogInfoMsg('Host IP: ' +
> str(hostIP))
> s.bind((hostIP, port))
>
> while 1:
> # Wait for either a connection, or a service stop request.
> timeout = win32event.INFINITE
> waitHandles = self.hWaitStop, self.overlapped.hEvent[/color]
Given the above comment, I'm surprised anything works... Where is
the overlapped I/O event queued?
[color=blue]
> rc = win32event.WaitForMultipleObjects(waitHandles, 0, timeout)
> if rc == win32event.WAIT_OBJECT_0:
> # Stop event
> break
> else:
> s.listen(5)
> while True:
> sessions = 0
> qwinstaOut = os.popen(qwinstaCmd).readlines()
> for line in qwinstaOut:
> ## Look for active ICA sessions
> if (((re.search("ICA", line, re.IGNORECASE)):
> sessions = sessions + 1
> c, addr = s.accept()
> ## Send session count
> c.send(str(sessions))
> c.close()[/color]
I'd be wary of mixing basic socket operations with Windows I/O event
scheme... But maybe that is handled in the missing code.
And how would you expect to get out of that inner loop? There is no
"break" so if the code ever gets to the s.listen() call (and past it) it
will never get back to the top loop with the event wait. Someone else
will have to clarify -- but isn't s.accept() a blocking call itself?
If the I/O doesn't play nice together, it may be better to put the
socket handling into a thread with a time-out select() call, so the
thread can periodically test for the presense of a shutdown flag. The
main program would do the wait for the shutdown, set the flag so the
thread can see it -- the thread would then close up its stuff and
return(exit); the main would be waiting on thread.join() so it knows
when things are clean enough to exit itself.
--[color=blue]
> ================================================== ============ <
>
wlfraed@ix.netcom.com | Wulfraed Dennis Lee Bieber KD6MOG <
>
wulfraed@dm.net | Bestiaria Support Staff <
> ================================================== ============ <
> Home Page: <http://www.dm.net/~wulfraed/> <
> Overflow Page: <http://wlfraed.home.netcom.com/> <[/color]