82 lines
1.8 KiB
C++
82 lines
1.8 KiB
C++
#ifndef REMOTE_TRAN_UTIL
|
|
#define REMOTE_TRAN_UTIL
|
|
|
|
#include <mutex>
|
|
#include <vector>
|
|
#include <wx/wx.h>
|
|
|
|
constexpr int MAX_BUFFER_SIZE = 1024 * 1024 * 10;
|
|
|
|
class TranUtil
|
|
{
|
|
public:
|
|
TranUtil();
|
|
};
|
|
|
|
class MLogFormatter : public wxLogFormatter
|
|
{
|
|
public:
|
|
wxString Format(wxLogLevel level, const wxString& msg, const wxLogRecordInfo& info) const override
|
|
{
|
|
wxDateTime time(info.timestampMS / 1000);
|
|
time.SetMillisecond(info.timestampMS % 1000);
|
|
auto timeStr = time.Format(wxT("%H:%M:%S.%l"));
|
|
wxString levelStr;
|
|
switch (level) {
|
|
case wxLOG_FatalError:
|
|
levelStr = "FATAL";
|
|
break;
|
|
case wxLOG_Error:
|
|
levelStr = "ERROR";
|
|
break;
|
|
case wxLOG_Warning:
|
|
levelStr = "WARN";
|
|
break;
|
|
case wxLOG_Message:
|
|
levelStr = "INFO";
|
|
break;
|
|
case wxLOG_Status:
|
|
levelStr = "STATUS";
|
|
break;
|
|
case wxLOG_Info:
|
|
levelStr = "INFO";
|
|
break;
|
|
case wxLOG_Debug:
|
|
levelStr = "DEBUG";
|
|
break;
|
|
case wxLOG_Trace:
|
|
levelStr = "TRACE";
|
|
break;
|
|
default:
|
|
levelStr = "OTHER";
|
|
break;
|
|
}
|
|
return wxString::Format("[%s][%s] %s", timeStr, levelStr, msg);
|
|
}
|
|
};
|
|
|
|
class MutBuffer
|
|
{
|
|
public:
|
|
MutBuffer() = default;
|
|
|
|
public:
|
|
void Push(const char* data, int len);
|
|
int IndexOf(const char* data, int len, int start_pos = 0);
|
|
const char* GetData() const;
|
|
int Length() const;
|
|
void RemoveOf(int start_pos, int len);
|
|
void Clear();
|
|
|
|
private:
|
|
std::vector<char> buffer_;
|
|
};
|
|
|
|
class wxUtil
|
|
{
|
|
public:
|
|
static wxString GetConfigDir();
|
|
static bool CreateConfigDir(const wxString& dir, const wxString& name, wxString& fullPath);
|
|
};
|
|
|
|
#endif // REMOTE_TRAN_UTIL
|