00001 00007 #if defined(XMLRPC_THREADS) 00008 00009 #include "XmlRpcThreadedServer.h" 00010 //#include "XmlRpcServerConnection.h" 00011 00012 00013 using namespace XmlRpc; 00014 00015 // executeRequestThreaded: 00016 // remove the serverConnection from the dispatcher (but don't close the socket) 00017 // push the request onto the request queue 00018 // (acquire the mutex, push_back request, release mutex, incr semaphore) 00019 // 00020 00021 // worker::run 00022 // while ! stopped 00023 // pop a request off the request queue (block on semaphore/decr, acquire mutex, get request, rel) 00024 // executeRequest (parse, run, generate response) 00025 // notify the serverConnection that the response is available 00026 // (the serverConnection needs to add itself back to the dispatcher safely - mutex) 00027 00028 // How do I interrupt the dispatcher if it is waiting in a select call? 00029 // i) Replace select with WaitForMultipleObjects, using WSAEventSelect to associate 00030 // each socket with an event object, and adding an additional "signal" event. 00031 // 00032 00033 #endif // XMLRPC_THREADS