Re: activate the eventloop

Mathias,

your event loop thread is stucked in the GetMessage() operation. It
waits for messages in the threads event queue and dispatches them. Thus,
you cannot receive UDP packet.
I propose to use (windows) messages instead of UDP sockets. Doing this,
GetMessage() will dispatch as well your own messages. In addition,
messages are safer because a UDP packet may get lost even on a local
machine. I know that this will never happen, but from the specification
it may be done.
Make a copy of the eventloop in HTEvtLst and replace it by something
similar like this:


	while (true) {

		int res = GetMessage(&message, NULL,0,0);

		if (res > 0) {

		  // handler for a HTTP request 

		  if (message.message == WM_WWW_REQUEST ) {

			// enter some code here to start the request
			// (you have to define and use WM_WWW_REQUEST)

		  } else {

			// dispatch lib WWW event
		    TranslateMessage(&message);
		    DispatchMessage(&message);

		  }

		} else {

			printf("message error\n");

		}

	}


I hope that helps,

Jens


-----Original Message-----
From: Derruau, Mathias [mailto:Mathias_Derruau@hplb.hpl.hp.com]
Sent: Wednesday, September 20, 2000 3:07 AM
To: 'www-lib@w3.org'
Subject: Re: activate the eventloop


Thank you for the tip,

I now have one thread sending messages to the eventloop thread through a
UDP
socket.
It works fine for the first message passed, the callback is activated,
as
well as the request terminator, but if my main thread wants to pass a
second
message, it doesn't seem to be caught by the eventloop thread.
What do I have to do to make the eventloop thread listen again on the
socket
(tried to register the event again in the callback function, but it
results
in an infinite loop)?

Thanks for help

Mathias Derruau

PS: when i set the mode to non-preemptive, the chunk resulting in a
request
is not complete. Anyone any idea about this?

Received on Wednesday, 20 September 2000 12:26:23 UTC