summaryrefslogtreecommitdiff
path: root/application/agent/src/LogManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'application/agent/src/LogManager.cpp')
-rw-r--r--application/agent/src/LogManager.cpp83
1 files changed, 83 insertions, 0 deletions
diff --git a/application/agent/src/LogManager.cpp b/application/agent/src/LogManager.cpp
new file mode 100644
index 0000000000..ad53c0a06f
--- /dev/null
+++ b/application/agent/src/LogManager.cpp
@@ -0,0 +1,83 @@
+#ifndef _LogManager_cpp
+#define _LogManager_cpp
+
+#include "LogManager.h"
+#include <iostream>
+
+#include "syslog.h"
+
+using namespace std;
+
+LogManager* LogManager::singleton = 0;
+
+LogManager::LogManager()
+{
+ list.size = 0;
+ list.beginning = 0;
+ list.nextIndex = 0;
+}
+
+LogManager* LogManager::instance()
+{
+ if (singleton == 0)
+ singleton = new LogManager();
+
+ return singleton;
+}
+
+LogManager::~LogManager()
+{
+ if (!singleton) {
+ delete singleton;
+ }
+}
+
+int LogManager::storeLog(const char* info)
+{
+ unsigned int position;
+
+ (list.beginning + list.size)>=SIZE_LOG?(position = list.beginning + list.size - SIZE_LOG):(position = list.beginning + list.size);
+
+ strcpy(list.containers[position].information, info);
+ list.containers[position].index = list.nextIndex;
+
+ list.nextIndex<MAX_INDEX?list.nextIndex++:list.nextIndex=0;
+
+ if (list.size<SIZE_LOG)
+ list.size++;
+ else
+ if (list.beginning>=SIZE_LOG-1)
+ list.beginning = 0;
+ else
+ list.beginning++;
+
+ return 0;
+}
+
+int LogManager::getLogs(logContainer* fill_me[SIZE_LOG], int* size)
+{
+ *size = list.size;
+
+ unsigned int position = list.beginning;
+
+ for (int i = 0; i < list.size; i++)
+ {
+ if (position + i >= SIZE_LOG)
+ fill_me[i] = &list.containers[position + i - SIZE_LOG];
+ else
+ fill_me[i] = &list.containers[position + i];
+ }
+
+ return 0;
+}
+
+int LogManager::emptyLog()
+{
+ list.size = 0;
+ list.beginning = 0;
+ list.nextIndex = 0;
+
+ return 0;
+}
+
+#endif