Skip to content

Commit 32aef7a

Browse files
committed
Updated wsjcpp-core to latest (v0.1.7)
1 parent 883680c commit 32aef7a

7 files changed

Lines changed: 70 additions & 86 deletions

File tree

src.wsjcpp/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ set (WSJCPP_SOURCES "")
1717
find_package(Threads REQUIRED)
1818
list (APPEND WSJCPP_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
1919

20-
# wsjcpp-core:v0.1.6
20+
# wsjcpp-core:v0.1.7
2121
list (APPEND WSJCPP_INCLUDE_DIRS "./src.wsjcpp/wsjcpp_core/")
2222
list (APPEND WSJCPP_SOURCES "./src.wsjcpp/wsjcpp_core/wsjcpp_core.cpp")
2323
list (APPEND WSJCPP_SOURCES "./src.wsjcpp/wsjcpp_core/wsjcpp_core.h")

src.wsjcpp/wsjcpp_core/wsjcpp.hold.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ cmake_cxx_standard: 11
33
cmake_minimum_required: 3.0
44

55
name: wsjcpp-core
6-
version: v0.1.6
6+
version: v0.1.7
77
description: Basic Utils for wsjcpp
88
issues: https://github.com/wsjcpp/wsjcpp-core/issues
99
repositories:

src.wsjcpp/wsjcpp_core/wsjcpp_core.cpp

Lines changed: 49 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -299,17 +299,19 @@ std::vector<std::string> WsjcppCore::getListOfFiles(const std::string &sDirname)
299299
return vFiles;
300300
}
301301
DIR *dir = opendir(sDirname.c_str());
302-
struct dirent *entry = readdir(dir);
303-
while (entry != NULL) {
304-
if (entry->d_type != DT_DIR) {
305-
std::string sDir(entry->d_name);
306-
if (sDir != "." && sDir != "..") {
307-
vFiles.push_back(sDir);
302+
if (dir != NULL) {
303+
struct dirent *entry = readdir(dir);
304+
while (entry != NULL) {
305+
if (entry->d_type != DT_DIR) {
306+
std::string sDir(entry->d_name);
307+
if (sDir != "." && sDir != "..") {
308+
vFiles.push_back(sDir);
309+
}
308310
}
311+
entry = readdir(dir);
309312
}
310-
entry = readdir(dir);
313+
closedir(dir);
311314
}
312-
closedir(dir);
313315
return vFiles;
314316
}
315317

@@ -756,30 +758,31 @@ bool WsjcppCore::recoursiveRemoveDir(const std::string& sDir) {
756758
// ---------------------------------------------------------------------
757759
// WsjcppLog
758760

759-
std::mutex * WsjcppLog::g_WSJCPP_LOG_MUTEX = nullptr;
760-
std::string WsjcppLog::g_WSJCPP_LOG_DIR = "./";
761-
std::string WsjcppLog::g_WSJCPP_LOG_FILE = "";
762-
std::string WsjcppLog::g_WSJCPP_LOG_PREFIX_FILE = "";
763-
bool WsjcppLog::g_WSJCPP_ENABLE_LOG_FILE = true;
764-
long WsjcppLog::g_WSJCPP_LOG_START_TIME = 0;
765-
long WsjcppLog::g_WSJCPP_LOG_ROTATION_PERIOD_IN_SECONDS = 51000;
766-
767-
// Last log messages
768-
std::deque<std::string> * WsjcppLog::g_WSJCPP_LOG_LAST_MESSAGES = nullptr;
761+
WsjcppLogGlobalConf::WsjcppLogGlobalConf() {
762+
//
763+
logDir = "./";
764+
logPrefixFile = "";
765+
logFile = "";
766+
enableLogFile = true;
767+
logStartTime = 0;
768+
logRotationPeriodInSeconds = 51000;
769+
}
769770

770771
// ---------------------------------------------------------------------
771772

772-
void WsjcppLog::doLogRotateUpdateFilename(bool bForce) {
773+
void WsjcppLogGlobalConf::doLogRotateUpdateFilename(bool bForce) {
773774
long t = WsjcppCore::currentTime_seconds();
774-
long nEverySeconds = WsjcppLog::g_WSJCPP_LOG_ROTATION_PERIOD_IN_SECONDS; // rotate log if started now or if time left more then 1 day
775-
if (g_WSJCPP_LOG_START_TIME == 0 || t - g_WSJCPP_LOG_START_TIME > nEverySeconds || bForce) {
776-
g_WSJCPP_LOG_START_TIME = t;
777-
g_WSJCPP_LOG_FILE = g_WSJCPP_LOG_DIR + "/"
778-
+ WsjcppLog::g_WSJCPP_LOG_PREFIX_FILE + "_"
779-
+ WsjcppCore::formatTimeForFilename(g_WSJCPP_LOG_START_TIME) + ".log";
775+
long nEverySeconds = logRotationPeriodInSeconds; // rotate log if started now or if time left more then 1 day
776+
if (logStartTime == 0 || t - logStartTime > nEverySeconds || bForce) {
777+
logStartTime = t;
778+
logFile = logDir + "/"
779+
+ logPrefixFile + "_"
780+
+ WsjcppCore::formatTimeForFilename(logStartTime) + ".log";
780781
}
781782
}
782783

784+
WsjcppLogGlobalConf WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF;
785+
783786
// ---------------------------------------------------------------------
784787

785788
void WsjcppLog::info(const std::string & sTag, const std::string &sMessage) {
@@ -819,89 +822,67 @@ void WsjcppLog::ok(const std::string &sTag, const std::string &sMessage) {
819822
// ---------------------------------------------------------------------
820823

821824
std::vector<std::string> WsjcppLog::getLastLogMessages() {
822-
WsjcppLog::initGlobalVariables();
823-
std::lock_guard<std::mutex> lock(*WsjcppLog::g_WSJCPP_LOG_MUTEX);
825+
std::lock_guard<std::mutex> lock(WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logMutex);
824826
std::vector<std::string> vRet;
825-
for (int i = 0; i < g_WSJCPP_LOG_LAST_MESSAGES->size(); i++) {
826-
vRet.push_back(g_WSJCPP_LOG_LAST_MESSAGES->at(i));
827+
for (int i = 0; i < WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logLastMessages.size(); i++) {
828+
vRet.push_back(WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logLastMessages[i]);
827829
}
828830
return vRet;
829831
}
830832

831833
// ---------------------------------------------------------------------
832834

833835
void WsjcppLog::setLogDirectory(const std::string &sDirectoryPath) {
834-
WsjcppLog::g_WSJCPP_LOG_DIR = sDirectoryPath;
835-
if (!WsjcppCore::dirExists(WsjcppLog::g_WSJCPP_LOG_DIR)) {
836-
if (!WsjcppCore::makeDir(WsjcppLog::g_WSJCPP_LOG_DIR)) {
836+
WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logDir = sDirectoryPath;
837+
if (!WsjcppCore::dirExists(sDirectoryPath)) {
838+
if (!WsjcppCore::makeDir(sDirectoryPath)) {
837839
WsjcppLog::err("setLogDirectory", "Could not create log directory '" + sDirectoryPath + "'");
838840
}
839841
}
840-
WsjcppLog::doLogRotateUpdateFilename(true);
842+
WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.doLogRotateUpdateFilename(true);
841843
}
842844

843845
// ---------------------------------------------------------------------
844846

845847
void WsjcppLog::setPrefixLogFile(const std::string &sPrefixLogFile) {
846-
WsjcppLog::g_WSJCPP_LOG_PREFIX_FILE = sPrefixLogFile;
847-
WsjcppLog::doLogRotateUpdateFilename(true);
848+
WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logPrefixFile = sPrefixLogFile;
849+
WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.doLogRotateUpdateFilename(true);
848850
}
849851

850852
// ---------------------------------------------------------------------
851853

852854
void WsjcppLog::setEnableLogFile(bool bEnable) {
853-
WsjcppLog::g_WSJCPP_ENABLE_LOG_FILE = bEnable;
855+
WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.enableLogFile = bEnable;
854856
}
855857

856858
// ---------------------------------------------------------------------
857859

858860
void WsjcppLog::setRotationPeriodInSec(long nRotationPeriodInSec) {
859-
WsjcppLog::g_WSJCPP_LOG_ROTATION_PERIOD_IN_SECONDS = nRotationPeriodInSec;
860-
}
861-
862-
// ---------------------------------------------------------------------
863-
864-
void WsjcppLog::initGlobalVariables() {
865-
// create deque if not created
866-
if (WsjcppLog::g_WSJCPP_LOG_LAST_MESSAGES == nullptr) {
867-
WsjcppLog::g_WSJCPP_LOG_LAST_MESSAGES = new std::deque<std::string>();
868-
// std::cout << WsjcppCore::currentTime_logformat() + ", " + WsjcppCore::threadId() + " Init last messages deque\r\n";
869-
}
870-
// create mutex if not created
871-
if (WsjcppLog::g_WSJCPP_LOG_MUTEX == nullptr) {
872-
WsjcppLog::g_WSJCPP_LOG_MUTEX = new std::mutex();
873-
// std::cout << WsjcppCore::currentTime_logformat() + ", " + WsjcppCore::threadId() + " Init mutex for log\r\n";
874-
}
875-
}
876-
877-
// ---------------------------------------------------------------------
878-
879-
void WsjcppLog::deinitGlobalVariables() {
880-
delete WsjcppLog::g_WSJCPP_LOG_LAST_MESSAGES;
881-
delete WsjcppLog::g_WSJCPP_LOG_MUTEX;
861+
WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logRotationPeriodInSeconds = nRotationPeriodInSec;
882862
}
883863

884864
// ---------------------------------------------------------------------
885865

886866
void WsjcppLog::add(WsjcppColorModifier &clr, const std::string &sType, const std::string &sTag, const std::string &sMessage) {
887-
WsjcppLog::initGlobalVariables();
888-
WsjcppLog::doLogRotateUpdateFilename();
867+
WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.doLogRotateUpdateFilename();
889868

890-
std::lock_guard<std::mutex> lock(*WsjcppLog::g_WSJCPP_LOG_MUTEX);
869+
std::lock_guard<std::mutex> lock(WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logMutex);
891870
WsjcppColorModifier def(WsjcppColorCode::FG_DEFAULT);
892871

893872
std::string sLogMessage = WsjcppCore::currentTime_logformat() + ", " + WsjcppCore::threadId()
894873
+ " [" + sType + "] " + sTag + ": " + sMessage;
895874
std::cout << clr << sLogMessage << def << std::endl;
896875

897-
g_WSJCPP_LOG_LAST_MESSAGES->push_front(sLogMessage);
898-
while (g_WSJCPP_LOG_LAST_MESSAGES->size() > 50) {
899-
g_WSJCPP_LOG_LAST_MESSAGES->pop_back();
876+
WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logLastMessages.push_front(sLogMessage);
877+
878+
879+
while (WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logLastMessages.size() > 50) {
880+
WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logLastMessages.pop_back();
900881
}
901882

902-
// log file
903-
if (WsjcppLog::g_WSJCPP_ENABLE_LOG_FILE) {
904-
std::ofstream logFile(WsjcppLog::g_WSJCPP_LOG_FILE, std::ios::app);
883+
// log file
884+
if (WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.enableLogFile) {
885+
std::ofstream logFile(WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logFile, std::ios::app);
905886
if (!logFile) {
906887
std::cout << "Error Opening File" << std::endl;
907888
return;

src.wsjcpp/wsjcpp_core/wsjcpp_core.h

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -102,17 +102,23 @@ class WsjcppColorModifier {
102102

103103
// ---------------------------------------------------------------------
104104

105+
class WsjcppLogGlobalConf {
106+
public:
107+
WsjcppLogGlobalConf();
108+
void doLogRotateUpdateFilename(bool bForce = false);
109+
std::mutex logMutex;
110+
std::string logDir;
111+
std::string logPrefixFile;
112+
std::string logFile;
113+
bool enableLogFile;
114+
long logStartTime;
115+
long logRotationPeriodInSeconds;
116+
std::deque<std::string> logLastMessages;
117+
};
118+
105119
class WsjcppLog {
106120
public:
107-
static std::string g_WSJCPP_LOG_DIR;
108-
static std::string g_WSJCPP_LOG_PREFIX_FILE;
109-
static std::string g_WSJCPP_LOG_FILE;
110-
static bool g_WSJCPP_ENABLE_LOG_FILE;
111-
static long g_WSJCPP_LOG_START_TIME;
112-
static long g_WSJCPP_LOG_ROTATION_PERIOD_IN_SECONDS;
113-
static std::mutex * g_WSJCPP_LOG_MUTEX;
114-
static std::deque<std::string> * g_WSJCPP_LOG_LAST_MESSAGES;
115-
static void doLogRotateUpdateFilename(bool bForce = false);
121+
static WsjcppLogGlobalConf g_WSJCPP_LOG_GLOBAL_CONF;
116122

117123
static void info(const std::string &sTag, const std::string &sMessage);
118124
static void err(const std::string &sTag, const std::string &sMessage);
@@ -124,8 +130,6 @@ class WsjcppLog {
124130
static void setPrefixLogFile(const std::string &sPrefixLogFile);
125131
static void setEnableLogFile(bool bEnable);
126132
static void setRotationPeriodInSec(long nRotationPeriodInSec);
127-
static void initGlobalVariables();
128-
static void deinitGlobalVariables();
129133

130134
private:
131135
static void add(WsjcppColorModifier &clr, const std::string &sType, const std::string &sTag, const std::string &sMessage);

src/main.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,17 @@ int main(int argc, const char* argv[]) {
1010
std::string appName = std::string(WSJCPP_APP_NAME);
1111
std::string appVersion = std::string(WSJCPP_APP_VERSION);
1212

13-
// TODO move to WsjcppCore::init
1413
if (!WsjcppCore::dirExists(".wsjcpp")) {
1514
WsjcppCore::makeDir(".wsjcpp");
1615
}
1716
WsjcppLog::setPrefixLogFile("wsjcpp");
1817
WsjcppLog::setLogDirectory(".wsjcpp/logs");
1918

20-
std::vector<std::string> vArgs;
19+
/*std::vector<std::string> vArgs;
2120
2221
for (int i = 0; i < argc; i++) {
2322
vArgs.push_back(std::string(argv[i]));
24-
}
23+
}*/
2524

2625
// TODO example
2726

unit-tests.wsjcpp/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ set (WSJCPP_SOURCES "")
1919
find_package(Threads REQUIRED)
2020
list (APPEND WSJCPP_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
2121

22-
# wsjcpp-core:v0.1.6
22+
# wsjcpp-core:v0.1.7
2323
list (APPEND WSJCPP_INCLUDE_DIRS "../src.wsjcpp/wsjcpp_core/")
2424
list (APPEND WSJCPP_SOURCES "../src.wsjcpp/wsjcpp_core/wsjcpp_core.cpp")
2525
list (APPEND WSJCPP_SOURCES "../src.wsjcpp/wsjcpp_core/wsjcpp_core.h")

wsjcpp.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ required-libraries:
1717

1818
dependencies:
1919
- name: "wsjcpp-core"
20-
version: "v0.1.6"
20+
version: "v0.1.7"
2121
url: "https://github.com/wsjcpp/wsjcpp-core:master"
2222
origin: "https://github.com/"
2323
installation-dir: "./src.wsjcpp/wsjcpp_core"

0 commit comments

Comments
 (0)