diff options
| author | Machiavelli <machiavelli.trinity@gmail.com> | 2011-08-08 17:46:23 +0200 | 
|---|---|---|
| committer | Machiavelli <machiavelli.trinity@gmail.com> | 2011-08-08 17:48:01 +0200 | 
| commit | 4a3a259e2a3867c56ee5779c786287a988ac1c27 (patch) | |
| tree | 6093f0b20a2c9bf89cd5aa75e65d43083717fde3 /src | |
| parent | 8e2a32906d9988e040d2835ae40125c5e6b5d9b7 (diff) | |
Core/SOAP: Remove redundant thread pool of a hard coded 5 amount of threads that would just linger. Not really smart design to have a single SOAP thread -> SOAP thread pool -> single world thread handling CLI commands.
Thanks to leak for spotting the leak.
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:  | 
