Avoid giving arguments by value for log.

This commit is contained in:
Arkaran99 2014-09-27 22:56:27 +02:00
parent 67bc9acbe0
commit d9a95aae09
3 changed files with 14 additions and 12 deletions

View File

@ -11,13 +11,13 @@ using namespace Log;
LogManager *gLogManager = nullptr;
u32 LogMessage::size()
u32 LogMessage::size() const
{
//1 byte for NULL terminator
return (u32)(sizeof(LogMessage::size_type) + sizeof(LogType) + sizeof(LogSeverity) + sizeof(std::string::value_type) * mText.size() + 1);
}
void LogMessage::serialize(char *output)
void LogMessage::serialize(char *output) const
{
LogMessage::size_type size = this->size();
memcpy(output, &size, sizeof(LogMessage::size_type));
@ -60,7 +60,7 @@ LogChannel::LogChannel(const std::string& name) :
, mLogLevel(Warning)
{}
void LogChannel::log(LogMessage msg)
void LogChannel::log(const LogMessage &msg)
{
std::lock_guard<std::mutex> lock(mListenerLock);
for (auto &listener : mListeners)
@ -82,7 +82,7 @@ void LogChannel::removeListener(std::shared_ptr<LogListener> listener)
struct CoutListener : LogListener
{
void log(LogMessage msg)
void log(const LogMessage &msg)
{
std::cerr << msg.mText << std::endl;
}
@ -103,13 +103,15 @@ struct FileListener : LogListener
}
}
void log(LogMessage msg)
void log(const LogMessage &msg)
{
std::string text = msg.mText;
if (mPrependChannelName)
{
msg.mText.insert(0, gTypeNameTable[static_cast<u32>(msg.mType)].mName);
text.insert(0, gTypeNameTable[static_cast<u32>(msg.mType)].mName);
}
mFile.Write(msg.mText);
mFile.Write(text);
}
};

View File

@ -61,15 +61,15 @@ namespace Log
LogSeverity mServerity;
std::string mText;
u32 size();
void serialize(char *output);
u32 size() const;
void serialize(char *output) const;
static LogMessage deserialize(char *input, u32* size_out=nullptr);
};
struct LogListener
{
virtual ~LogListener() {};
virtual void log(LogMessage msg) = 0;
virtual void log(const LogMessage &msg) = 0;
};
struct LogChannel
@ -78,7 +78,7 @@ namespace Log
LogChannel(const std::string& name);
LogChannel(LogChannel& other) = delete;
LogChannel& operator = (LogChannel& other) = delete;
void log(LogMessage msg);
void log(const LogMessage &msg);
void addListener(std::shared_ptr<LogListener> listener);
void removeListener(std::shared_ptr<LogListener> listener);
std::string name;

View File

@ -97,7 +97,7 @@ struct wxWriter : Log::LogListener
}
//put message into the log buffer
void log(Log::LogMessage msg)
void log(const Log::LogMessage &msg)
{
u8 logLevel = Ini.HLELogLvl.GetValue();
if (msg.mType != Log::TTY && logLevel != 0)