aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/worldserver/TCSoap/TCSoap.cpp28
-rw-r--r--src/server/worldserver/TCSoap/TCSoap.h10
2 files changed, 13 insertions, 25 deletions
diff --git a/src/server/worldserver/TCSoap/TCSoap.cpp b/src/server/worldserver/TCSoap/TCSoap.cpp
index 3d242859ff2..ba99967a485 100644
--- a/src/server/worldserver/TCSoap/TCSoap.cpp
+++ b/src/server/worldserver/TCSoap/TCSoap.cpp
@@ -48,28 +48,21 @@ void TCSoapThread(const std::string& host, uint16 port)
TC_LOG_DEBUG("network.soap", "Accepted connection from IP=%d.%d.%d.%d", (int)(soap.ip>>24)&0xFF, (int)(soap.ip>>16)&0xFF, (int)(soap.ip>>8)&0xFF, (int)soap.ip&0xFF);
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*));
- process_message(mb);
+ process_message(thread_soap);
}
soap_done(&soap);
}
-void process_message(ACE_Message_Block* mb)
+void process_message(struct soap* soap_message)
{
ACE_TRACE (ACE_TEXT ("SOAPWorkingThread::process_message"));
- struct soap* soap;
- ACE_OS::memcpy(&soap, mb->rd_ptr (), sizeof(struct soap*));
- mb->release();
-
- soap_serve(soap);
- soap_destroy(soap); // dealloc C++ data
- soap_end(soap); // dealloc data and clean up
- soap_done(soap); // detach soap struct
- free(soap);
+ soap_serve(soap_message);
+ soap_destroy(soap_message); // dealloc C++ data
+ soap_end(soap_message); // dealloc data and clean up
+ soap_done(soap_message); // detach soap struct
+ free(soap_message);
}
/*
Code used for generating stubs:
@@ -118,10 +111,7 @@ int ns1__executeCommand(soap* soap, char* command, char** result)
}
// wait for callback to complete command
-
- int acc = connection.pendingCommands.acquire();
- if (acc)
- TC_LOG_ERROR("network.soap", "Error while acquiring lock, acc = %i, errno = %u", acc, errno);
+ connection.pendingCommands.lock();
// alright, command finished
@@ -139,7 +129,7 @@ void SOAPCommand::commandFinished(void* soapconnection, bool success)
{
SOAPCommand* con = (SOAPCommand*)soapconnection;
con->setCommandSuccess(success);
- con->pendingCommands.release();
+ con->pendingCommands.unlock();
}
////////////////////////////////////////////////////////////////////////////////
diff --git a/src/server/worldserver/TCSoap/TCSoap.h b/src/server/worldserver/TCSoap/TCSoap.h
index 937ceac6425..0de5d2874f6 100644
--- a/src/server/worldserver/TCSoap/TCSoap.h
+++ b/src/server/worldserver/TCSoap/TCSoap.h
@@ -19,18 +19,16 @@
#define _TCSOAP_H
#include "Define.h"
+#include <mutex>
-#include <ace/Semaphore.h>
-#include <ace/Task.h>
-
-void process_message(ACE_Message_Block* mb);
+void process_message(struct soap* soap_message);
void TCSoapThread(const std::string& host, uint16 port);
class SOAPCommand
{
public:
SOAPCommand():
- pendingCommands(0, USYNC_THREAD, "pendingCommands"), m_success(false)
+ m_success(false)
{
}
@@ -43,7 +41,7 @@ class SOAPCommand
m_printBuffer += msg;
}
- ACE_Semaphore pendingCommands;
+ std::mutex pendingCommands;
void setCommandSuccess(bool val)
{