diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/worldserver/TCSoap/TCSoap.cpp | 19 | ||||
-rwxr-xr-x | src/server/worldserver/TCSoap/TCSoap.h | 29 |
2 files changed, 7 insertions, 41 deletions
diff --git a/src/server/worldserver/TCSoap/TCSoap.cpp b/src/server/worldserver/TCSoap/TCSoap.cpp index c0b3f8faebb..603b4824408 100755 --- a/src/server/worldserver/TCSoap/TCSoap.cpp +++ b/src/server/worldserver/TCSoap/TCSoap.cpp @@ -19,14 +19,8 @@ #include "soapH.h" #include "soapStub.h" -#define POOL_SIZE 5 - void TCSoapRunnable::run() { - // create pool - SOAPWorkingThread pool; - pool.activate (THR_NEW_LWP | THR_JOINABLE, POOL_SIZE); - struct soap soap; soap_init(&soap); soap_set_imode(&soap, SOAP_C_UTFSTRING); @@ -44,7 +38,7 @@ void TCSoapRunnable::run() sLog->outString("TCSoap: bound to http://%s:%d", m_host.c_str(), m_port); - while(!World::IsStopped()) + while (!World::IsStopped()) { if (!soap_valid_socket(soap_accept(&soap))) continue; // ran into an accept timeout @@ -53,22 +47,19 @@ void TCSoapRunnable::run() struct soap* thread_soap = soap_copy(&soap);// make a safe copy ACE_Message_Block *mb = new ACE_Message_Block(sizeof(struct soap*)); - ACE_OS::memcpy (mb->wr_ptr(), &thread_soap, sizeof(struct soap*)); - pool.putq(mb); + ACE_OS::memcpy(mb->wr_ptr(), &thread_soap, sizeof(struct soap*)); + process_message(mb); } - pool.msg_queue()->deactivate(); - pool.wait(); - soap_done(&soap); } -void SOAPWorkingThread::process_message (ACE_Message_Block *mb) +void TCSoapRunnable::process_message(ACE_Message_Block *mb) { ACE_TRACE (ACE_TEXT ("SOAPWorkingThread::process_message")); struct soap* soap; - ACE_OS::memcpy (&soap, mb->rd_ptr (), sizeof(struct soap*)); + ACE_OS::memcpy(&soap, mb->rd_ptr (), sizeof(struct soap*)); mb->release(); soap_serve(soap); diff --git a/src/server/worldserver/TCSoap/TCSoap.h b/src/server/worldserver/TCSoap/TCSoap.h index d5232f33773..863d7597ef8 100755 --- a/src/server/worldserver/TCSoap/TCSoap.h +++ b/src/server/worldserver/TCSoap/TCSoap.h @@ -41,37 +41,12 @@ class TCSoapRunnable: public ACE_Based::Runnable m_port = port; } private: + void process_message(ACE_Message_Block *mb); + std::string m_host; uint16 m_port; }; -class SOAPWorkingThread : public ACE_Task<ACE_MT_SYNCH> -{ - public: - SOAPWorkingThread() { } - - virtual int svc(void) - { - while(1) - { - ACE_Message_Block *mb = 0; - if (this->getq(mb) == -1) - { - ACE_DEBUG((LM_INFO, - ACE_TEXT("(%t) Shutting down\n"))); - break; - } - - // Process the message. - process_message(mb); - } - - return 0; - } - private: - void process_message(ACE_Message_Block *mb); -}; - class SOAPCommand { public: |