diff options
Diffstat (limited to 'src/server/shared')
| -rw-r--r-- | src/server/shared/Database/MySQLConnection.cpp | 4 | ||||
| -rw-r--r-- | src/server/shared/Logging/Appender.cpp | 19 | ||||
| -rw-r--r-- | src/server/shared/Logging/Appender.h | 3 | ||||
| -rw-r--r-- | src/server/shared/Logging/Log.h | 4 | ||||
| -rw-r--r-- | src/server/shared/Networking/Socket.h | 15 | ||||
| -rw-r--r-- | src/server/shared/Updater/UpdateFetcher.cpp | 2 |
6 files changed, 25 insertions, 22 deletions
diff --git a/src/server/shared/Database/MySQLConnection.cpp b/src/server/shared/Database/MySQLConnection.cpp index 1fa3f01a5e1..5a98757abb5 100644 --- a/src/server/shared/Database/MySQLConnection.cpp +++ b/src/server/shared/Database/MySQLConnection.cpp @@ -491,7 +491,9 @@ bool MySQLConnection::_HandleMySQLErrno(uint32 errNo) m_reconnecting = true; uint64 oldThreadId = mysql_thread_id(GetHandle()); mysql_close(GetHandle()); - if (this->Open()) // Don't remove 'this' pointer unless you want to skip loading all prepared statements.... + + // Don't remove 'this' pointer unless you want to skip loading all prepared statements.... + if (this->Open() && this->PrepareStatements()) { TC_LOG_INFO("sql.sql", "Connection to the MySQL server is active."); if (oldThreadId != mysql_thread_id(GetHandle())) diff --git a/src/server/shared/Logging/Appender.cpp b/src/server/shared/Logging/Appender.cpp index ca40a857419..ba23d879ec2 100644 --- a/src/server/shared/Logging/Appender.cpp +++ b/src/server/shared/Logging/Appender.cpp @@ -80,26 +80,13 @@ void Appender::write(LogMessage* message) std::ostringstream ss; if (flags & APPENDER_FLAGS_PREFIX_TIMESTAMP) - ss << message->getTimeStr(); + ss << message->getTimeStr() << ' '; if (flags & APPENDER_FLAGS_PREFIX_LOGLEVEL) - { - if (ss.rdbuf()->in_avail() == 0) - ss << ' '; - - ss << Trinity::StringFormat("%-5s", Appender::getLogLevelString(message->level)); - } + ss << Trinity::StringFormat("%-5s ", Appender::getLogLevelString(message->level)); if (flags & APPENDER_FLAGS_PREFIX_LOGFILTERTYPE) - { - if (ss.rdbuf()->in_avail() == 0) - ss << ' '; - - ss << '[' << message->type << ']'; - } - - if (ss.rdbuf()->in_avail() == 0) - ss << ' '; + ss << '[' << message->type << "] "; message->prefix = std::move(ss.str()); _write(message); diff --git a/src/server/shared/Logging/Appender.h b/src/server/shared/Logging/Appender.h index 38c45b3bcf1..73af351e41d 100644 --- a/src/server/shared/Logging/Appender.h +++ b/src/server/shared/Logging/Appender.h @@ -62,6 +62,9 @@ struct LogMessage : level(_level), type(_type), text(std::forward<std::string>(_text)), mtime(time(NULL)) { } + LogMessage(LogMessage const& /*other*/) = delete; + LogMessage& operator=(LogMessage const& /*other*/) = delete; + static std::string getTimeStr(time_t time); std::string getTimeStr(); diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h index 20d83d2dcf0..d4653960b15 100644 --- a/src/server/shared/Logging/Log.h +++ b/src/server/shared/Logging/Log.h @@ -75,9 +75,7 @@ class Log std::unique_ptr<LogMessage> msg(new LogMessage(LOG_LEVEL_INFO, "commands.gm", std::move(Trinity::StringFormat(fmt, args...)))); - std::ostringstream ss; - ss << account; - msg->param1 = ss.str(); + msg->param1 = std::to_string(account); write(std::move(msg)); } diff --git a/src/server/shared/Networking/Socket.h b/src/server/shared/Networking/Socket.h index f7a1b954cb0..0ac23a96224 100644 --- a/src/server/shared/Networking/Socket.h +++ b/src/server/shared/Networking/Socket.h @@ -62,7 +62,7 @@ public: return false; #ifndef TC_SOCKET_USE_IOCP - std::unique_lock<std::mutex> guard(_writeLock, std::try_to_lock); + std::unique_lock<std::mutex> guard(_writeLock); if (!guard) return true; @@ -140,6 +140,8 @@ public: if (shutdownError) TC_LOG_DEBUG("network", "Socket::CloseSocket: %s errored when shutting down socket: %i (%s)", GetRemoteIpAddress().to_string().c_str(), shutdownError.value(), shutdownError.message().c_str()); + + OnClose(); } /// Marks the socket for closing after write buffer becomes empty @@ -148,6 +150,8 @@ public: MessageBuffer& GetReadBuffer() { return _readBuffer; } protected: + virtual void OnClose() { } + virtual void ReadHandler() = 0; bool AsyncProcessQueue(std::unique_lock<std::mutex>&) @@ -169,6 +173,15 @@ protected: return false; } + void SetNoDelay(bool enable) + { + boost::system::error_code err; + _socket.set_option(boost::asio::ip::tcp::no_delay(enable), err); + if (err) + TC_LOG_DEBUG("network", "Socket::SetNoDelay: failed to set_option(boost::asio::ip::tcp::no_delay) for %s - %d (%s)", + GetRemoteIpAddress().to_string().c_str(), err.value(), err.message().c_str()); + } + std::mutex _writeLock; std::queue<MessageBuffer> _writeQueue; #ifndef TC_SOCKET_USE_IOCP diff --git a/src/server/shared/Updater/UpdateFetcher.cpp b/src/server/shared/Updater/UpdateFetcher.cpp index b93ca614729..2b12f39780c 100644 --- a/src/server/shared/Updater/UpdateFetcher.cpp +++ b/src/server/shared/Updater/UpdateFetcher.cpp @@ -309,7 +309,7 @@ uint32 UpdateFetcher::Update(bool const redundancyChecks, bool const allowRehash CleanUp(applied); else { - TC_LOG_ERROR("sql.updates", "Cleanup is disabled! There are %zu dirty files that were applied to your database " \ + TC_LOG_ERROR("sql.updates", "Cleanup is disabled! There are " SZFMTD " dirty files that were applied to your database " \ "but are now missing in your source directory!", applied.size()); } } |
