From f52de7e4cb504e7d198d1f79a2964056b1a8839e Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 16:23:35 +0900 Subject: [PATCH 01/84] Revert "ProcessList Update add" This reverts commit d071017391350f2bc2dd4f2d73194ec233d6e854. --- .../data/DataManager.cpp | 14 ++-------- .../data/DataManager.hpp | 27 +------------------ 2 files changed, 3 insertions(+), 38 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index d01ecfb..e7b94da 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -2,16 +2,6 @@ void DataManager::Update() { - // ProcessList Update - processListObj.Update(); - int processCount = processListObj.getCount; - processes = new DWORD[processCount]; - // Process Update - system.process = new Process[processCount]; - for (int i = 0; i < processCount; i++) - { - int pid = processListObj.getPID(i); - system.process[i] = processListObj.getProcess(pid); - } - + ProcessList processList = ProcessList(); + processList.Update(); } diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index 6d101c4..e22f4d6 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -2,37 +2,12 @@ #define _DATAMANAGER_H_ #include -#include "../process/ProcessList.hpp" -#include "../process/Process.hpp" - - -typedef struct system -{ - double cpuVal; - double cpuIdleVal; - DWORD memoryUseVal; - DWORD memoryFreeVal; - Process *process; -}System; - class DataManager { private: - DWORD *processes = NULL; - System system; - ProcessList processListObj = ProcessList(); + DWORD processList[1024]; public: - DataManager() - { - - } - - ~DataManager() - { - - } - void Update(); }; From 7415909d7f7ee6b0288114f0368d33a78c284f98 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 16:23:43 +0900 Subject: [PATCH 02/84] Revert "Revert "ProcessList Update add"" This reverts commit f52de7e4cb504e7d198d1f79a2964056b1a8839e. --- .../data/DataManager.cpp | 14 ++++++++-- .../data/DataManager.hpp | 27 ++++++++++++++++++- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index e7b94da..d01ecfb 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -2,6 +2,16 @@ void DataManager::Update() { - ProcessList processList = ProcessList(); - processList.Update(); + // ProcessList Update + processListObj.Update(); + int processCount = processListObj.getCount; + processes = new DWORD[processCount]; + // Process Update + system.process = new Process[processCount]; + for (int i = 0; i < processCount; i++) + { + int pid = processListObj.getPID(i); + system.process[i] = processListObj.getProcess(pid); + } + } diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index e22f4d6..6d101c4 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -2,12 +2,37 @@ #define _DATAMANAGER_H_ #include +#include "../process/ProcessList.hpp" +#include "../process/Process.hpp" + + +typedef struct system +{ + double cpuVal; + double cpuIdleVal; + DWORD memoryUseVal; + DWORD memoryFreeVal; + Process *process; +}System; + class DataManager { private: - DWORD processList[1024]; + DWORD *processes = NULL; + System system; + ProcessList processListObj = ProcessList(); public: + DataManager() + { + + } + + ~DataManager() + { + + } + void Update(); }; From c788e0d84be27e07aed09b4656d4fa01e1a4e1b8 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 16:27:28 +0900 Subject: [PATCH 03/84] DataManager Class add --- .../ServerMonitoringService/data/DataManager.cpp | 8 +++++++- .../ServerMonitoringService/data/DataManager.hpp | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index d01ecfb..f03528f 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -1,10 +1,16 @@ #include "DataManager.hpp" +int main() +{ + DataManager dataManager; + dataManager.Update(); +} + void DataManager::Update() { // ProcessList Update processListObj.Update(); - int processCount = processListObj.getCount; + int processCount = processListObj.getCount(); processes = new DWORD[processCount]; // Process Update system.process = new Process[processCount]; diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index 6d101c4..c585c72 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -4,7 +4,12 @@ #include #include "../process/ProcessList.hpp" #include "../process/Process.hpp" - +#include "../system/SystemCPU.hpp" +#include "../system/SystemDiskIO.hpp" +#include "../system/SystemMemory.hpp" +#include "../system/SystemNetwork.hpp" +#include "../system/SystemOS.hpp" +#include "../util/TQTimer.hpp" typedef struct system { From 81ae258efbc46654595eb2011bee648c21ce1952 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 17:01:36 +0900 Subject: [PATCH 04/84] SystemDiskIO main function remove, DataManager Update function cpu update, disk update add --- .../data/DataManager.cpp | 44 +++++++++++++++++-- .../data/DataManager.hpp | 38 ++++++++++++++-- .../system/SystemDiskIO.cpp | 23 +--------- .../system/SystemDiskIO.hpp | 1 - 4 files changed, 77 insertions(+), 29 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index f03528f..7925c07 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -11,13 +11,51 @@ void DataManager::Update() // ProcessList Update processListObj.Update(); int processCount = processListObj.getCount(); - processes = new DWORD[processCount]; + // Process Update - system.process = new Process[processCount]; + system->process = new Process[processCount]; for (int i = 0; i < processCount; i++) { int pid = processListObj.getPID(i); - system.process[i] = processListObj.getProcess(pid); + system->process[i] = processListObj.getProcess(pid); } + + // Cpu Usage Update + systemCpu.getUsage(system->cpuUsageVal); + systemCpu.getIdleUsage(system->cpuIdleVal); + + // Disk Usage Update + int count = 0; + system->disk = systemDiskIO.getDiskList(count); + + /*for (int i = 0; i < count; i++) + { + cout << "Read/sec : " << disk[i].readSec / 1024.0 << "kb/s" << endl; + cout << "Write/sec : " << disk[i].writeSec / 1024.0 << "kb/s" << endl; + }*/ + + + + + + + + + + + + + + + + + + + + + + + + } diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index c585c72..d9ccea5 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -13,11 +13,16 @@ typedef struct system { - double cpuVal; + double cpuUsageVal; double cpuIdleVal; + string cpuModel; + DWORD memoryUseVal; DWORD memoryFreeVal; - Process *process; + + Disk *disk = NULL; + + Process *process = NULL; }System; @@ -25,17 +30,44 @@ class DataManager { private: DWORD *processes = NULL; - System system; ProcessList processListObj = ProcessList(); + + System *system; + SystemCpu systemCpu; + SystemDiskIO systemDiskIO; + SystemMemory systemMemory; + SystemNetwork systemNetwork; + SystemOS systemOS; public: DataManager() { + system = new System; + // fixed variable + system->cpuModel = systemCpu.getCpuModeInfo(); + // Start Function Call + systemDiskIO.Start(); } ~DataManager() { + if (system) + { + if (system->disk) + { + delete[] system->disk; + system->disk = nullptr; + } + + if (system->process) + { + delete[] system->process; + system->process = nullptr; + } + delete system; + system = nullptr; + } } void Update(); diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp index 27e847d..720c69c 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp @@ -23,28 +23,6 @@ void SystemDiskIO::CallbackProc() } } -/* -int main() -{ - SystemDiskIO systemdiskIO; - systemdiskIO.Start(); - int count = 0; - Disk *disk = NULL; - disk = systemdiskIO.getDiskList(count); - - while (true) - { - for (int i = 0; i < count; i++) - { - cout << "Read/sec : " << disk[i].readSec / 1024.0 << "kb/s" << endl; - cout << "Write/sec : " << disk[i].writeSec / 1024.0 << "kb/s" << endl; - } - Sleep(1000); - } - - system("pause"); -} -*/ int SystemDiskIO::getPartitionList(vector ¶mStrDiskList, Disk *¶mDiskList) { paramStrDiskList.clear(); @@ -200,6 +178,7 @@ int SystemDiskIO::getDiskPerformance(TCHAR * path, DISK_PERFORMANCE &diskPerform Disk * SystemDiskIO::getDiskList(int &count) { count = SystemDiskIO::strDiskList.size(); + return SystemDiskIO::diskList; } diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp index f151176..af964c4 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp @@ -53,7 +53,6 @@ class SystemDiskIO ~SystemDiskIO() { - cout << "~SystemDiskIO()" << endl; if (diskList) { delete[] diskList; From 2f551a2333cead4748bdea7353a821849e8851d1 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 17:04:23 +0900 Subject: [PATCH 05/84] System Memory function param type change --- .../system/SystemMemory.cpp | 14 +++++++------- .../system/SystemMemory.hpp | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.cpp b/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.cpp index ffb06f8..79c6589 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.cpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.cpp @@ -10,7 +10,7 @@ int SystemMemory::memoryCall() return 1; } -int SystemMemory::getLoadPercent(int &val) +int SystemMemory::getLoadPercent(DWORD &val) { if (!memoryCall()) return 0; @@ -20,33 +20,33 @@ int SystemMemory::getLoadPercent(int &val) return 1; } -int SystemMemory::getTotalByte(DWORD &val) +int SystemMemory::getTotalByte(DWORDLONG &val) { if (!memoryCall()) return 0; - val = (double)memoryStat.ullTotalPhys; + val = memoryStat.ullTotalPhys; return 1; } -int SystemMemory::getFreeByte(DWORD &val) +int SystemMemory::getFreeByte(DWORDLONG &val) { if (!memoryCall()) return 0; - val = (double)memoryStat.ullAvailPhys; + val = memoryStat.ullAvailPhys; return 1; } -int SystemMemory::getUsage(double &val) +int SystemMemory::getUsage(DWORDLONG &val) { if (!memoryCall()) return 0; // Total - Free = Use - val = (double)(memoryStat.ullTotalPhys - memoryStat.ullAvailPhys); + val = memoryStat.ullTotalPhys - memoryStat.ullAvailPhys; return 1; } diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.hpp b/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.hpp index e2c7193..2bf9815 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.hpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.hpp @@ -12,10 +12,10 @@ class SystemMemory private: int memoryCall(); public: - int getLoadPercent(int &val); - int getUsage(double &val); - int getTotalByte(DWORD &val); - int getFreeByte(DWORD &val); + int getLoadPercent(DWORD &val); + int getUsage(DWORDLONG &val); + int getTotalByte(DWORDLONG &val); + int getFreeByte(DWORDLONG &val); }; #endif \ No newline at end of file From 9175a43cb0656dffcb07508df6cc35df9a1a176b Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 17:08:18 +0900 Subject: [PATCH 06/84] memory update add, memory class usage function name change usage > usedByte, variable name change.. --- .../ServerMonitoringService/data/DataManager.cpp | 5 +++++ .../ServerMonitoringService/data/DataManager.hpp | 6 ++++-- .../ServerMonitoringService/system/SystemMemory.cpp | 2 +- .../ServerMonitoringService/system/SystemMemory.hpp | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 7925c07..c0b22fc 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -34,6 +34,11 @@ void DataManager::Update() cout << "Write/sec : " << disk[i].writeSec / 1024.0 << "kb/s" << endl; }*/ + // Memory Update + systemMemory.getFreeByte(system->memoryFreeByte); + systemMemory.getUsedByte(system->memoryUsedByte); + systemMemory.getTotalByte(system->memoryTotalByte); + systemMemory.getLoadPercent(system->memoryLoadPercent); diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index d9ccea5..c21d806 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -17,8 +17,10 @@ typedef struct system double cpuIdleVal; string cpuModel; - DWORD memoryUseVal; - DWORD memoryFreeVal; + DWORD memoryLoadPercent; + DWORDLONG memoryUsedByte; + DWORDLONG memoryFreeByte; + DWORDLONG memoryTotalByte; Disk *disk = NULL; diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.cpp b/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.cpp index 79c6589..73588f0 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.cpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.cpp @@ -40,7 +40,7 @@ int SystemMemory::getFreeByte(DWORDLONG &val) return 1; } -int SystemMemory::getUsage(DWORDLONG &val) +int SystemMemory::getUsedByte(DWORDLONG &val) { if (!memoryCall()) return 0; diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.hpp b/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.hpp index 2bf9815..474f78c 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.hpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.hpp @@ -13,7 +13,7 @@ class SystemMemory int memoryCall(); public: int getLoadPercent(DWORD &val); - int getUsage(DWORDLONG &val); + int getUsedByte(DWORDLONG &val); int getTotalByte(DWORDLONG &val); int getFreeByte(DWORDLONG &val); }; From ae5a2d8d1b97224c7ba689c8636b759500c1f6c0 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 17:54:02 +0900 Subject: [PATCH 07/84] DataManager get Os Info add --- .../ServerMonitoringService.vcxproj | 2 + .../ServerMonitoringService.vcxproj.filters | 6 + .../data/DataManager.cpp | 8 + .../data/DataManager.hpp | 11 +- .../system/SystemNetwork.cpp | 288 +----------------- .../system/SystemNetwork.hpp | 6 +- .../ServerMonitoringService/util/Util.cpp | 59 ++++ .../ServerMonitoringService/util/Util.hpp | 23 ++ 8 files changed, 113 insertions(+), 290 deletions(-) create mode 100644 ServerMonitoringService/ServerMonitoringService/util/Util.cpp create mode 100644 ServerMonitoringService/ServerMonitoringService/util/Util.hpp diff --git a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj index 397a7dc..56c8ef8 100644 --- a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj +++ b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj @@ -129,6 +129,7 @@ + @@ -145,6 +146,7 @@ + diff --git a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters index 1ea426e..60f659a 100644 --- a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters +++ b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters @@ -72,6 +72,9 @@ 헤더 파일 + + 헤더 파일 + @@ -116,5 +119,8 @@ 소스 파일 + + 소스 파일 + \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index c0b22fc..be96407 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -40,6 +40,14 @@ void DataManager::Update() systemMemory.getTotalByte(system->memoryTotalByte); systemMemory.getLoadPercent(system->memoryLoadPercent); + systemNetwork.getConnectionTable(system->networkConnection, system->networkConnectionCount); + + for (ULONG i = 0; i < count; i++) + { + cout << system->networkConnection[i].processID << endl; + } + + diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index c21d806..eaee960 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -22,9 +22,15 @@ typedef struct system DWORDLONG memoryFreeByte; DWORDLONG memoryTotalByte; - Disk *disk = NULL; + string userName; + string computerName; + string osVersion; + Disk *disk = NULL; Process *process = NULL; + NetworkConnection *networkConnection = NULL; + ULONG networkConnectionCount; + }System; @@ -46,6 +52,9 @@ class DataManager system = new System; // fixed variable system->cpuModel = systemCpu.getCpuModeInfo(); + system->computerName = systemOS.getComputerName(); + system->userName = systemOS.getUserName(); + system->osVersion = systemOS.getOSVersionName(); // Start Function Call systemDiskIO.Start(); diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp b/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp index 48e5211..929eb4a 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp @@ -366,16 +366,9 @@ int SystemNetwork::getInterfaces(PIP_ADAPTER_INFO ¶mAdapter, int &outCount) void SystemNetwork::formatToMacAddress(TCHAR *param, BYTE addr[]) { - //CString strMacAddr = ""; - //strMacAddr.format("%02x%02x%02x%02x%02x%02x", - // paramAdapter->Address[0], - // paramAdapter->Address[1], - // paramAdapter->Address[2], - // paramAdapter->Address[3], - // paramAdapter->Address[4], - // paramAdapter->Address[5]); - - sprintf(param, "%.2X-%.2X-%.2X-%.2X-%.2X-%.2X", + string strMacAddr = Util::format( + param, + "%.2X-%.2X-%.2X-%.2X-%.2X-%.2X", addr[0], addr[1], addr[2], @@ -418,278 +411,3 @@ int main() } system("pause"); }*/ - -/* -#define _WIN32_DCOM - -#include "Process.hpp" -#include -using namespace std; -#include - - -#pragma comment(lib, "wbemuuid.lib") - -int __cdecl wmain(int argc, wchar_t* argv[]) -{ - // To add error checking, - // check returned HRESULT below where collected. - HRESULT hr = S_OK; - IWbemRefresher *pRefresher = NULL; - IWbemConfigureRefresher *pConfig = NULL; - IWbemHiPerfEnum *pEnum = NULL; - IWbemServices *pNameSpace = NULL; - IWbemLocator *pWbemLocator = NULL; - IWbemObjectAccess **apEnumAccess = NULL; - BSTR bstrNameSpace = NULL; - long lID = 0; - long lVirtualBytesHandle = 0; - long lIDProcessHandle = 0; - DWORD dwVirtualBytes = 0; - DWORD dwProcessId = 0; - DWORD dwNumObjects = 0; - DWORD dwNumReturned = 0; - DWORD dwIDProcess = 0; - DWORD i = 0; - int x = 0; - - if (FAILED(hr = CoInitializeEx(NULL, COINIT_MULTITHREADED))) - { - goto CLEANUP; - } - - if (FAILED(hr = CoInitializeSecurity( - NULL, - -1, - NULL, - NULL, - RPC_C_AUTHN_LEVEL_NONE, - RPC_C_IMP_LEVEL_IMPERSONATE, - NULL, EOAC_NONE, 0))) - { - goto CLEANUP; - } - - if (FAILED(hr = CoCreateInstance( - CLSID_WbemLocator, - NULL, - CLSCTX_INPROC_SERVER, - IID_IWbemLocator, - (void**)&pWbemLocator))) - { - goto CLEANUP; - } - - // Connect to the desired namespace. - bstrNameSpace = SysAllocString(L"\\\\.\\root\\cimv2"); - if (NULL == bstrNameSpace) - { - hr = E_OUTOFMEMORY; - goto CLEANUP; - } - if (FAILED(hr = pWbemLocator->ConnectServer( - bstrNameSpace, - NULL, // User name - NULL, // Password - NULL, // Locale - 0L, // Security flags - NULL, // Authority - NULL, // Wbem context - &pNameSpace))) - { - goto CLEANUP; - } - pWbemLocator->Release(); - pWbemLocator = NULL; - SysFreeString(bstrNameSpace); - bstrNameSpace = NULL; - - if (FAILED(hr = CoCreateInstance( - CLSID_WbemRefresher, - NULL, - CLSCTX_INPROC_SERVER, - IID_IWbemRefresher, - (void**)&pRefresher))) - { - goto CLEANUP; - } - - if (FAILED(hr = pRefresher->QueryInterface( - IID_IWbemConfigureRefresher, - (void **)&pConfig))) - { - goto CLEANUP; - } - - // Add an enumerator to the refresher. - if (FAILED(hr = pConfig->AddEnum( - pNameSpace, - L"Win32_PerfRawData_PerfProc_Process", // Win32_PerfRawData_PerfProc_Process - 0, - NULL, - &pEnum, - &lID))) - { - goto CLEANUP; - } - pConfig->Release(); - pConfig = NULL; - - // Get a property handle for the VirtualBytes property. - - // Refresh the object ten times and retrieve the value. - while(true) - { - dwNumReturned = 0; - dwIDProcess = 0; - dwNumObjects = 0; - - if (FAILED(hr = pRefresher->Refresh(0L))) - { - goto CLEANUP; - } - - hr = pEnum->GetObjects(0L, - dwNumObjects, - apEnumAccess, - &dwNumReturned); - // If the buffer was not big enough, - // allocate a bigger buffer and retry. - if (hr == WBEM_E_BUFFER_TOO_SMALL - && dwNumReturned > dwNumObjects) - { - apEnumAccess = new IWbemObjectAccess*[dwNumReturned]; - if (NULL == apEnumAccess) - { - hr = E_OUTOFMEMORY; - goto CLEANUP; - } - SecureZeroMemory(apEnumAccess, - dwNumReturned * sizeof(IWbemObjectAccess*)); - dwNumObjects = dwNumReturned; - - if (FAILED(hr = pEnum->GetObjects(0L, - dwNumObjects, - apEnumAccess, - &dwNumReturned))) - { - goto CLEANUP; - } - } - else - { - if (hr == WBEM_S_NO_ERROR) - { - hr = WBEM_E_NOT_FOUND; - goto CLEANUP; - } - } - - // First time through, get the handles. - if (0 == x) - { - CIMTYPE VirtualBytesType; - CIMTYPE ProcessHandleType; - if (FAILED(hr = apEnumAccess[0]->GetPropertyHandle( - L"IOWriteBytesPerSec", - &VirtualBytesType, - &lVirtualBytesHandle))) - { - goto CLEANUP; - } - if (FAILED(hr = apEnumAccess[0]->GetPropertyHandle( - L"IDProcess", - &ProcessHandleType, - &lIDProcessHandle))) - { - goto CLEANUP; - } - } - - for (i = 0; i < dwNumReturned; i++) - { - if (FAILED(hr = apEnumAccess[i]->ReadDWORD( - lVirtualBytesHandle, - &dwVirtualBytes))) - { - goto CLEANUP; - } - if (FAILED(hr = apEnumAccess[i]->ReadDWORD( - lIDProcessHandle, - &dwIDProcess))) - { - goto CLEANUP; - } - - Process process = Process(dwIDProcess); - TCHAR* tc = process.getName(); - - if(dwIDProcess == 20620) - printf("Process ID %lu %s is using %.2f Mbyte\n", dwIDProcess, tc, dwVirtualBytes / 1024.0 / 1024.0); - //wprintf(L"Process ID %lu %s is using %lu bytes\n", dwIDProcess, tc, dwVirtualBytes); - - // Done with the object - apEnumAccess[i]->Release(); - apEnumAccess[i] = NULL; - } - - if (NULL != apEnumAccess) - { - delete[] apEnumAccess; - apEnumAccess = NULL; - } - - // Sleep for a second. - Sleep(1000); - } - // exit loop here -CLEANUP: - - if (NULL != bstrNameSpace) - { - SysFreeString(bstrNameSpace); - } - - if (NULL != apEnumAccess) - { - for (i = 0; i < dwNumReturned; i++) - { - if (apEnumAccess[i] != NULL) - { - apEnumAccess[i]->Release(); - apEnumAccess[i] = NULL; - } - } - delete[] apEnumAccess; - } - if (NULL != pWbemLocator) - { - pWbemLocator->Release(); - } - if (NULL != pNameSpace) - { - pNameSpace->Release(); - } - if (NULL != pEnum) - { - pEnum->Release(); - } - if (NULL != pConfig) - { - pConfig->Release(); - } - if (NULL != pRefresher) - { - pRefresher->Release(); - } - - CoUninitialize(); - - if (FAILED(hr)) - { - wprintf(L"Error status=%08x\n", hr); - } - - system("pause"); - return 1; -}*/ \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.hpp b/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.hpp index d175266..ea6d0c2 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.hpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.hpp @@ -1,8 +1,6 @@ #ifndef _SYSTEMNETWORK_H_ #define _SYSTEMNETWORK_H_ -#include - #ifndef _WINDOWS_ #include #include @@ -11,6 +9,8 @@ #include #pragma comment(lib, "IPHLPAPI.lib") +#include "../util/Util.hpp" + #define KBPS 8 / 1000 #define MBPS 8 / 1000 / 1000 #define IPv4_NETWORK_TYPE 0x1 @@ -23,8 +23,6 @@ #define UDP6_NETWORK_PROTOCOL (IPv6_NETWORK_TYPE | UDP_PROTOCOL_TYPE) #define NETWORK_OWNER_INFO_SIZE 16 -using namespace std; - typedef struct ip_address { ULONG Type; diff --git a/ServerMonitoringService/ServerMonitoringService/util/Util.cpp b/ServerMonitoringService/ServerMonitoringService/util/Util.cpp new file mode 100644 index 0000000..733c114 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/util/Util.cpp @@ -0,0 +1,59 @@ +#include "Util.hpp" + +string Util::currentDateTime() +{ + SYSTEMTIME st; + GetLocalTime(&st); + + string str = Util::format("[%04d-%02d-%02d %02d:%02d:%02d.%03d]", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds); + + return str; +} + + +string Util::format(const string fmt_str, ...) +{ + int final_n, n = ((int)fmt_str.size()) * 2; + string str; + unique_ptr formatted; + va_list ap; + while (1) { + formatted.reset(new char[n]); + strcpy(&formatted[0], fmt_str.c_str()); + va_start(ap, fmt_str); + final_n = vsnprintf(&formatted[0], n, fmt_str.c_str(), ap); + va_end(ap); + if (final_n < 0 || final_n >= n) + n += abs(final_n - n + 1); + else + break; + } + return string(formatted.get()); +} + +string Util::getLocalIp() +{ + string ip; + WSADATA wsaData; + char name[255]; + PHOSTENT hostinfo; + WORD DllVersion = MAKEWORD(2, 2); + if (WSAStartup(DllVersion, &wsaData) == 0) + { + if (gethostname(name, sizeof(name)) == 0) + { + if ((hostinfo = gethostbyname(name)) != NULL) + { + ip = inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list); + } + } + WSACleanup(); + } + + return ip; +} + +string Util::getStringToAddr(SOCKADDR_IN paramAddr) +{ + return Util::format("%s:%d", inet_ntoa(paramAddr.sin_addr), ntohs(paramAddr.sin_port)); +} \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/util/Util.hpp b/ServerMonitoringService/ServerMonitoringService/util/Util.hpp new file mode 100644 index 0000000..675d8f4 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/util/Util.hpp @@ -0,0 +1,23 @@ +#ifndef _UTIL_H_ +#define _UTIL_H_ + +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +class Util +{ +public: + static string currentDateTime(); + static string format(const string fmt_str, ...); + static string getLocalIp(); + static string getStringToAddr(SOCKADDR_IN paramAddr); +}; + +#endif \ No newline at end of file From 01e01538c75189499bd4343883ec25cd920664fa Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 18:02:38 +0900 Subject: [PATCH 08/84] SystemNetwork Network Update --- .../data/DataManager.cpp | 45 +++---------------- .../data/DataManager.hpp | 5 +++ 2 files changed, 11 insertions(+), 39 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index be96407..bf4977c 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -10,11 +10,11 @@ void DataManager::Update() { // ProcessList Update processListObj.Update(); - int processCount = processListObj.getCount(); + system->processCount = processListObj.getCount(); // Process Update - system->process = new Process[processCount]; - for (int i = 0; i < processCount; i++) + system->process = new Process[system->processCount]; + for (int i = 0; i < system->processCount; i++) { int pid = processListObj.getPID(i); system->process[i] = processListObj.getProcess(pid); @@ -25,14 +25,7 @@ void DataManager::Update() systemCpu.getIdleUsage(system->cpuIdleVal); // Disk Usage Update - int count = 0; - system->disk = systemDiskIO.getDiskList(count); - - /*for (int i = 0; i < count; i++) - { - cout << "Read/sec : " << disk[i].readSec / 1024.0 << "kb/s" << endl; - cout << "Write/sec : " << disk[i].writeSec / 1024.0 << "kb/s" << endl; - }*/ + system->disk = systemDiskIO.getDiskList(system->diskCount); // Memory Update systemMemory.getFreeByte(system->memoryFreeByte); @@ -40,35 +33,9 @@ void DataManager::Update() systemMemory.getTotalByte(system->memoryTotalByte); systemMemory.getLoadPercent(system->memoryLoadPercent); + // Network Update systemNetwork.getConnectionTable(system->networkConnection, system->networkConnectionCount); - - for (ULONG i = 0; i < count; i++) - { - cout << system->networkConnection[i].processID << endl; - } - - - - - - - - - - - - - - - - - - - - - - - + systemNetwork.getInterfaces(system->adapterInfo, system->adapterCount); } diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index eaee960..bb14269 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -27,10 +27,15 @@ typedef struct system string osVersion; Disk *disk = NULL; + int diskCount = 0; Process *process = NULL; + int processCount = 0; NetworkConnection *networkConnection = NULL; ULONG networkConnectionCount; + PIP_ADAPTER_INFO adapterInfo; + int adapterCount = 0; + }System; From 174fd8cc108a64e021186c64dfd8c58dfd56abfb Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 18:16:57 +0900 Subject: [PATCH 09/84] member variable :: -> this-> change and strReplace function remove --- .../data/DataManager.cpp | 33 +++++---- .../data/DataManager.hpp | 43 +++++++----- .../system/SystemDiskIO.cpp | 70 +++++++------------ .../system/SystemDiskIO.hpp | 1 - 4 files changed, 69 insertions(+), 78 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index bf4977c..4de5563 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -4,38 +4,43 @@ int main() { DataManager dataManager; dataManager.Update(); + +// dataManage } void DataManager::Update() { // ProcessList Update processListObj.Update(); - system->processCount = processListObj.getCount(); + systemInfo->processCount = processListObj.getCount(); // Process Update - system->process = new Process[system->processCount]; - for (int i = 0; i < system->processCount; i++) + systemInfo->process = new Process[systemInfo->processCount]; + for (int i = 0; i < systemInfo->processCount; i++) { int pid = processListObj.getPID(i); - system->process[i] = processListObj.getProcess(pid); + systemInfo->process[i] = processListObj.getProcess(pid); } // Cpu Usage Update - systemCpu.getUsage(system->cpuUsageVal); - systemCpu.getIdleUsage(system->cpuIdleVal); + systemCpu.getUsage(systemInfo->cpuUsageVal); + systemCpu.getIdleUsage(systemInfo->cpuIdleVal); // Disk Usage Update - system->disk = systemDiskIO.getDiskList(system->diskCount); + systemInfo->disk = systemDiskIO.getDiskList(systemInfo->diskCount); // Memory Update - systemMemory.getFreeByte(system->memoryFreeByte); - systemMemory.getUsedByte(system->memoryUsedByte); - systemMemory.getTotalByte(system->memoryTotalByte); - systemMemory.getLoadPercent(system->memoryLoadPercent); + systemMemory.getFreeByte(systemInfo->memoryFreeByte); + systemMemory.getUsedByte(systemInfo->memoryUsedByte); + systemMemory.getTotalByte(systemInfo->memoryTotalByte); + systemMemory.getLoadPercent(systemInfo->memoryLoadPercent); // Network Update - systemNetwork.getConnectionTable(system->networkConnection, system->networkConnectionCount); - systemNetwork.getInterfaces(system->adapterInfo, system->adapterCount); - + systemNetwork.getConnectionTable(systemInfo->networkConnection, systemInfo->networkConnectionCount); + systemNetwork.getInterfaces(systemInfo->adapterInfo, systemInfo->adapterCount); +} +SystemInfo* DataManager::getSystem() +{ + return this->systemInfo; } diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index bb14269..8859718 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -11,7 +11,7 @@ #include "../system/SystemOS.hpp" #include "../util/TQTimer.hpp" -typedef struct system +typedef struct system_info { double cpuUsageVal; double cpuIdleVal; @@ -35,9 +35,7 @@ typedef struct system PIP_ADAPTER_INFO adapterInfo; int adapterCount = 0; - -}System; - +}SystemInfo; class DataManager { @@ -45,7 +43,7 @@ class DataManager DWORD *processes = NULL; ProcessList processListObj = ProcessList(); - System *system; + SystemInfo *systemInfo; SystemCpu systemCpu; SystemDiskIO systemDiskIO; SystemMemory systemMemory; @@ -54,12 +52,12 @@ class DataManager public: DataManager() { - system = new System; + systemInfo = new SystemInfo; // fixed variable - system->cpuModel = systemCpu.getCpuModeInfo(); - system->computerName = systemOS.getComputerName(); - system->userName = systemOS.getUserName(); - system->osVersion = systemOS.getOSVersionName(); + systemInfo->cpuModel = systemCpu.getCpuModeInfo(); + systemInfo->computerName = systemOS.getComputerName(); + systemInfo->userName = systemOS.getUserName(); + systemInfo->osVersion = systemOS.getOSVersionName(); // Start Function Call systemDiskIO.Start(); @@ -67,26 +65,33 @@ class DataManager ~DataManager() { - if (system) + if (systemInfo) { - if (system->disk) + if (systemInfo->disk) { - delete[] system->disk; - system->disk = nullptr; + delete[] systemInfo->disk; + systemInfo->disk = nullptr; } - if (system->process) + if (systemInfo->process) + { + delete[] systemInfo->process; + systemInfo->process = nullptr; + } + + if (systemInfo->process) { - delete[] system->process; - system->process = nullptr; + delete[] systemInfo->networkConnection; + systemInfo->networkConnection = nullptr; } - delete system; - system = nullptr; + delete systemInfo; + systemInfo = nullptr; } } void Update(); + SystemInfo* getSystem(); }; #endif \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp index 720c69c..8f48122 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp @@ -2,23 +2,23 @@ void SystemDiskIO::CallbackProc() { - for (int i = 0; i < SystemDiskIO::diskCount; i++) // Disk Count Loop + for (int i = 0; i < this->diskCount; i++) // Disk Count Loop { - if (SystemDiskIO::diskList[i].type != DRIVE_REMOVABLE) // Drive connect check + if (this->diskList[i].type != DRIVE_REMOVABLE) // Drive connect check { - getDiskPerformance(SystemDiskIO::diskList[i].path, SystemDiskIO::diskList[i].curDiskPerformance); + getDiskPerformance(this->diskList[i].path, this->diskList[i].curDiskPerformance); - LONGLONG readSec = SystemDiskIO::diskList[i].curDiskPerformance.BytesRead.QuadPart - SystemDiskIO::diskList[i].prevDiskPerformance.BytesRead.QuadPart; - LONGLONG writeSec = SystemDiskIO::diskList[i].curDiskPerformance.BytesWritten.QuadPart - SystemDiskIO::diskList[i].prevDiskPerformance.BytesWritten.QuadPart; + LONGLONG readSec = this->diskList[i].curDiskPerformance.BytesRead.QuadPart - this->diskList[i].prevDiskPerformance.BytesRead.QuadPart; + LONGLONG writeSec = this->diskList[i].curDiskPerformance.BytesWritten.QuadPart - this->diskList[i].prevDiskPerformance.BytesWritten.QuadPart; - if (SystemDiskIO::diskList[i].prevDiskPerformance.BytesRead.QuadPart >= 0) + if (this->diskList[i].prevDiskPerformance.BytesRead.QuadPart >= 0) { - SystemDiskIO::diskList[i].readSec = readSec; - SystemDiskIO::diskList[i].writeSec = writeSec; + this->diskList[i].readSec = readSec; + this->diskList[i].writeSec = writeSec; } // Prev DiskPerformance Data Change - SystemDiskIO::diskList[i].prevDiskPerformance = SystemDiskIO::diskList[i].curDiskPerformance; + this->diskList[i].prevDiskPerformance = this->diskList[i].curDiskPerformance; } } } @@ -82,14 +82,11 @@ int SystemDiskIO::getDiskInfo(const TCHAR *path, Disk &disk) int SystemDiskIO::Start() { - // TODO :: UpdatePerSec - - if (SystemDiskIO::tqTimer == NULL) + if (this->tqTimer == NULL) { - cout << &SystemDiskIO::CallbackProc << endl; - SystemDiskIO::tqTimer = new TQTimer(std::bind(&SystemDiskIO::CallbackProc, this)); - SystemDiskIO::tqTimer->setInterval(1000); // 1Sec - SystemDiskIO::tqTimer->Start(); + this->tqTimer = new TQTimer(std::bind(&this->CallbackProc, this)); + this->tqTimer->setInterval(1000); // 1Sec + this->tqTimer->Start(); } return 1; @@ -97,16 +94,11 @@ int SystemDiskIO::Start() int SystemDiskIO::Stop() { - // TODO :: UpdatePerSec Stop and DeleteTimerQueue - - // If the function succeeds, the return value is nonzero. - // If the function fails, the return value is zero.To get extended error information, call GetLastError. - - if (SystemDiskIO::tqTimer) + if (this->tqTimer) { - SystemDiskIO::tqTimer->Stop(); - delete SystemDiskIO::tqTimer; - SystemDiskIO::tqTimer = nullptr; + this->tqTimer->Stop(); + delete this->tqTimer; + this->tqTimer = nullptr; } return 1; @@ -114,19 +106,9 @@ int SystemDiskIO::Stop() int SystemDiskIO::getListCount() { - return SystemDiskIO::strDiskList.size(); + return this->strDiskList.size(); } -void stringReplace(string& subject, const string& search, const string& replace) -{ - size_t pos = 0; - - while ((pos = subject.find(search, pos)) != string::npos) - { - subject.replace(pos, search.length(), replace); - pos += replace.length(); - } -} // C, diskPerf; int SystemDiskIO::getDiskPerformance(TCHAR * path, DISK_PERFORMANCE &diskPerformance) @@ -177,9 +159,9 @@ int SystemDiskIO::getDiskPerformance(TCHAR * path, DISK_PERFORMANCE &diskPerform Disk * SystemDiskIO::getDiskList(int &count) { - count = SystemDiskIO::strDiskList.size(); + count = this->strDiskList.size(); - return SystemDiskIO::diskList; + return this->diskList; } // call update function after recall getDiskList() function @@ -187,21 +169,21 @@ int SystemDiskIO::Update() { int nResult = 1; - if (SystemDiskIO::diskList) + if (this->diskList) { - delete[] SystemDiskIO::diskList; - SystemDiskIO::diskList = nullptr; + delete[] this->diskList; + this->diskList = nullptr; } - nResult = getPartitionList(SystemDiskIO::strDiskList, SystemDiskIO::diskList); + nResult = getPartitionList(this->strDiskList, this->diskList); diskCount = strDiskList.size(); if (nResult) { - for (int i = 0; i < SystemDiskIO::strDiskList.size(); i++) + for (int i = 0; i < this->strDiskList.size(); i++) { // nResult = 0; if Then nResult == false - if (!getDiskInfo(SystemDiskIO::strDiskList[i].c_str(), SystemDiskIO::diskList[i])) + if (!getDiskInfo(this->strDiskList[i].c_str(), this->diskList[i])) nResult = 0; } } diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp index af964c4..7cf597b 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp @@ -26,7 +26,6 @@ typedef struct disk LONGLONG writeSec = 0; }Disk; -void stringReplace(string& subject, const string& search, const string& replace); class SystemDiskIO { From e9b56a367b46b360de272b68cb0fcc3154aefd96 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 18:21:04 +0900 Subject: [PATCH 10/84] Util stringReplace function add --- .../ServerMonitoringService/system/SystemDiskIO.cpp | 1 - .../ServerMonitoringService/util/Util.cpp | 10 ++++++++++ .../ServerMonitoringService/util/Util.hpp | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp index 8f48122..be1a7a8 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp @@ -109,7 +109,6 @@ int SystemDiskIO::getListCount() return this->strDiskList.size(); } - // C, diskPerf; int SystemDiskIO::getDiskPerformance(TCHAR * path, DISK_PERFORMANCE &diskPerformance) { diff --git a/ServerMonitoringService/ServerMonitoringService/util/Util.cpp b/ServerMonitoringService/ServerMonitoringService/util/Util.cpp index 733c114..18b19c8 100644 --- a/ServerMonitoringService/ServerMonitoringService/util/Util.cpp +++ b/ServerMonitoringService/ServerMonitoringService/util/Util.cpp @@ -10,6 +10,16 @@ string Util::currentDateTime() return str; } +void Util::stringReplace(string& subject, const string& search, const string& replace) +{ + size_t pos = 0; + + while ((pos = subject.find(search, pos)) != string::npos) + { + subject.replace(pos, search.length(), replace); + pos += replace.length(); + } +} string Util::format(const string fmt_str, ...) { diff --git a/ServerMonitoringService/ServerMonitoringService/util/Util.hpp b/ServerMonitoringService/ServerMonitoringService/util/Util.hpp index 675d8f4..b527c83 100644 --- a/ServerMonitoringService/ServerMonitoringService/util/Util.hpp +++ b/ServerMonitoringService/ServerMonitoringService/util/Util.hpp @@ -18,6 +18,7 @@ class Util static string format(const string fmt_str, ...); static string getLocalIp(); static string getStringToAddr(SOCKADDR_IN paramAddr); + static void stringReplace(string& subject, const string& search, const string& replace); }; #endif \ No newline at end of file From 1e0520e3389212592e5aa8e43f0eb7b2f058d85c Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 18:23:40 +0900 Subject: [PATCH 11/84] this->CallbackProc -> SystemDiskIO::CallbackProc --- .../ServerMonitoringService/system/SystemDiskIO.cpp | 4 ++-- .../ServerMonitoringService/system/SystemDiskIO.hpp | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp index be1a7a8..f9ef0e9 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp @@ -84,7 +84,7 @@ int SystemDiskIO::Start() { if (this->tqTimer == NULL) { - this->tqTimer = new TQTimer(std::bind(&this->CallbackProc, this)); + this->tqTimer = new TQTimer(std::bind(&SystemDiskIO::CallbackProc, this)); this->tqTimer->setInterval(1000); // 1Sec this->tqTimer->Start(); } @@ -122,7 +122,7 @@ int SystemDiskIO::getDiskPerformance(TCHAR * path, DISK_PERFORMANCE &diskPerform TCHAR * tc = strtok_s(path_array, TEXT(":"), &context); string strPath; strPath = "\\\\.\\C:"; - stringReplace(strPath, "C", tc); + Util::stringReplace(strPath, "C", tc); HANDLE handle = CreateFile(strPath.c_str(), FILE_READ_ATTRIBUTES, diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp index 7cf597b..a909438 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp @@ -4,6 +4,7 @@ #include #include #include "../util/TQTimer.hpp" +#include "../util/Util.hpp" #include #define INTERVAL 500 From f2b07c4ac6bc86aa8ca886d8e119e464db8577f3 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 18:30:12 +0900 Subject: [PATCH 12/84] Process:: -> this-> change --- .../process/Process.cpp | 31 ++++++++--------- .../process/Process.hpp | 33 +++++++++++-------- 2 files changed, 35 insertions(+), 29 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 07d3405..1cdc6b1 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -8,7 +8,7 @@ TCHAR* Process::initName() int nResult = 1; TCHAR szProcessName[MAX_PATH]; - HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, Process::pid); + HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); if (hProcess != NULL) { @@ -38,7 +38,7 @@ TCHAR* Process::initPath() int nResult = 1; TCHAR szProcessPath[MAX_PATH]; - HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, Process::pid); + HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); if (hProcess != NULL) { @@ -81,17 +81,17 @@ TCHAR* Process::initCommandLine() UNICODE_STRING commandLine; TCHAR *commandLineContents; - pebAddress = GetPebAddress(Process::handle); + pebAddress = GetPebAddress(this->handle); - if (!ReadProcessMemory(Process::handle, &(((_PEB*)pebAddress)->ProcessParameters), &rtlUserProcParamsAddress, sizeof(PVOID), NULL)) + if (!ReadProcessMemory(this->handle, &(((_PEB*)pebAddress)->ProcessParameters), &rtlUserProcParamsAddress, sizeof(PVOID), NULL)) nResult = -1; - if (!ReadProcessMemory(Process::handle, &(((_RTL_USER_PROCESS_PARAMETERS*)rtlUserProcParamsAddress)->CommandLine), &commandLine, sizeof(commandLine), NULL)) + if (!ReadProcessMemory(this->handle, &(((_RTL_USER_PROCESS_PARAMETERS*)rtlUserProcParamsAddress)->CommandLine), &commandLine, sizeof(commandLine), NULL)) nResult = -2; commandLineContents = new TCHAR[commandLine.Length]; - if (!ReadProcessMemory(Process::handle, commandLine.Buffer, commandLineContents, commandLine.Length, NULL)) + if (!ReadProcessMemory(this->handle, commandLine.Buffer, commandLineContents, commandLine.Length, NULL)) nResult = -3; int size = commandLine.Length / 2; @@ -121,8 +121,9 @@ TCHAR* Process::initCommandLine() // When you are finished with the handle, be sure to close it using the CloseHandle function. HANDLE Process::getHandleFromPID() { + cout << this->pid << endl; HANDLE handle; - if ((handle = OpenProcess(MAXIMUM_ALLOWED, false, Process::pid)) == NULL) + if ((handle = OpenProcess(MAXIMUM_ALLOWED, false, this->pid)) == NULL) throw - 1; return handle; @@ -130,29 +131,29 @@ HANDLE Process::getHandleFromPID() DWORD Process::getPid() { - return Process::pid; + return this->pid; } TCHAR * Process::getName() { - return Process::name; + return this->name; } TCHAR * Process::getPath() { - return Process::path; + return this->path; } TCHAR * Process::getCommandLine() { - return Process::commandLine; + return this->commandLine; } int Process::getHandleCount(DWORD &val) { DWORD pCount; - if (GetProcessHandleCount(Process::handle, &pCount) == 0) + if (GetProcessHandleCount(this->handle, &pCount) == 0) return 0; val = pCount; @@ -191,7 +192,7 @@ int Process::getThreadCount(int ¶mTotalThreadCount, int ¶mCurrentProcess do // Thread32First { totalThreadCount++; - if (te32.th32OwnerProcessID == Process::pid) + if (te32.th32OwnerProcessID == this->pid) { processThreadCount++; //printf(TEXT("\n THREAD ID = 0x%08X"), te32.th32ThreadID); @@ -225,7 +226,7 @@ int Process::getMemoryUsage(DWORD &val) DWORD dPrivatePages = 0; DWORD dPageTablePages = 0; - HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, Process::pid); + HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); if (hProcess == NULL) nResult = 0; @@ -299,7 +300,7 @@ int Process::getCpuUsage(double &val) GetSystemInfo(&sysInfo); int numProcessors = sysInfo.dwNumberOfProcessors; - HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, Process::pid); + HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); if (hProcess == NULL) nResult = 0; diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index 5857c72..739b06a 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -39,27 +39,32 @@ class Process public: Process(const DWORD pid = 0) : pid(pid) { - // fixed value Init - Process::handle = getHandleFromPID(); + if (pid != 0) + { + // fixed value Init + Process::handle = getHandleFromPID(); - // strcpy_s(Multi-Byte) -> wcscpy_s(UNICODE) - strcpy_s(name, initName()); - strcpy_s(path, initPath()); - // commadLine add - commandLine = initCommandLine(); + // strcpy_s(Multi-Byte) -> wcscpy_s(UNICODE) + strcpy_s(name, initName()); + strcpy_s(path, initPath()); + // commadLine add + commandLine = initCommandLine(); + } } ~Process() { - if (handle != INVALID_HANDLE_VALUE) - CloseHandle(handle); - - if (commandLine) + if (pid != 0) { - delete[] commandLine; - commandLine = nullptr; - } + if (handle != INVALID_HANDLE_VALUE) + CloseHandle(handle); + if (commandLine) + { + delete[] commandLine; + commandLine = nullptr; + } + } } DWORD getPid(); From 29612a99a33cd0df35e429d98e28b78df38d9758 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 19:50:26 +0900 Subject: [PATCH 13/84] Process GetIcon function add, isRunning function add --- .../data/DataManager.cpp | 16 ++--- .../process/Process.cpp | 59 +++++++++++++++++- .../process/Process.hpp | 46 +++++++------- .../process/ProcessList.cpp | 62 ++++++++++++++++++- .../process/ProcessList.hpp | 2 +- 5 files changed, 150 insertions(+), 35 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 4de5563..dc78dfb 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -1,12 +1,12 @@ #include "DataManager.hpp" -int main() -{ - DataManager dataManager; - dataManager.Update(); - -// dataManage -} +//int main() +//{ +//// DataManager dataManager; +//// dataManager.Update(); +// +//// dataManage +//} void DataManager::Update() { @@ -19,7 +19,7 @@ void DataManager::Update() for (int i = 0; i < systemInfo->processCount; i++) { int pid = processListObj.getPID(i); - systemInfo->process[i] = processListObj.getProcess(pid); + systemInfo->process[i] = Process(pid); } // Cpu Usage Update diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 1cdc6b1..5c45f57 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -63,6 +63,23 @@ TCHAR* Process::initPath() } + +HICON Process::initIcon(BOOLEAN LargeIcon) +{ + SHFILEINFO shFileInfo; + + ZeroMemory(&shFileInfo, sizeof(SHFILEINFO)); + + ULONG iconFlag; + iconFlag = LargeIcon ? SHGFI_LARGEICON : SHGFI_SMALLICON; + + if (!SHGetFileInfo(this->path, 0, &shFileInfo, sizeof(SHFILEINFO), SHGFI_ICON | iconFlag)) + return NULL; + + return shFileInfo.hIcon; +} + + PVOID Process::GetPebAddress(HANDLE ProcessHandle) { _NtQueryInformationProcess NtQueryInformationProcess = (_NtQueryInformationProcess)GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtQueryInformationProcess"); @@ -118,10 +135,31 @@ TCHAR* Process::initCommandLine() return strCommandLine; } +ULONG Process::getPidFromHwnd(HWND hwnd) +{ + ULONG idProc; + GetWindowThreadProcessId(hwnd, &idProc); + return idProc; +} + +HWND Process::getHwndFromPid() +{ + HWND hwnd = FindWindow(NULL, NULL); + + while (hwnd != NULL) + { + if (GetParent(hwnd) == NULL) + if (this->pid == getPidFromHwnd(hwnd)) + return hwnd; + hwnd = GetWindow(hwnd, GW_HWNDNEXT); // Next Window Handle + } + + return NULL; +} + // When you are finished with the handle, be sure to close it using the CloseHandle function. -HANDLE Process::getHandleFromPID() +HANDLE Process::getHandleFromPid() { - cout << this->pid << endl; HANDLE handle; if ((handle = OpenProcess(MAXIMUM_ALLOWED, false, this->pid)) == NULL) throw - 1; @@ -149,6 +187,23 @@ TCHAR * Process::getCommandLine() return this->commandLine; } +BOOLEAN Process::isRunning() +{ + DWORD_PTR dw = 0; + + // TimeOut 2sec + if (SendMessageTimeout(this->hWnd, NULL, NULL, NULL, SMTO_NORMAL, 2000, &dw)) + { + return TRUE; // process is running + } + else + { + if (GetLastError() == ERROR_TIMEOUT) { + return FALSE; // process is not responsed + } + } +} + int Process::getHandleCount(DWORD &val) { DWORD pCount; diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index 739b06a..999f41d 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -25,13 +25,18 @@ class Process { private: DWORD pid; - HANDLE handle; + HICON icon; + HANDLE handle = NULL; + HWND hWnd = NULL; TCHAR name[MAX_PATH]; TCHAR path[MAX_PATH]; TCHAR *commandLine; private: - HANDLE getHandleFromPID(); - // TODO initFunc retrun Type TCHAR* > int, initName(TCHAR *val) + HANDLE handleFromPid(); + HWND getHwndFromPid(); + ULONG getPidFromHwnd(HWND hwnd); + HICON initIcon(BOOLEAN LargeIcon = FALSE); + HANDLE getHandleFromPid(); TCHAR* initName(); TCHAR* initPath(); TCHAR* initCommandLine(); @@ -39,38 +44,35 @@ class Process public: Process(const DWORD pid = 0) : pid(pid) { - if (pid != 0) - { - // fixed value Init - Process::handle = getHandleFromPID(); + // fixed value Init + this->handle = getHandleFromPid(); + this->hWnd = getHwndFromPid(); - // strcpy_s(Multi-Byte) -> wcscpy_s(UNICODE) - strcpy_s(name, initName()); - strcpy_s(path, initPath()); - // commadLine add - commandLine = initCommandLine(); - } + strcpy_s(name, initName()); + strcpy_s(path, initPath()); + commandLine = initCommandLine(); + + icon = initIcon(TRUE); } ~Process() { - if (pid != 0) - { - if (handle != INVALID_HANDLE_VALUE) - CloseHandle(handle); + if (handle != INVALID_HANDLE_VALUE) + CloseHandle(handle); - if (commandLine) - { - delete[] commandLine; - commandLine = nullptr; - } + if (commandLine) + { + delete[] commandLine; + commandLine = nullptr; } } + BOOLEAN isRunning(); DWORD getPid(); TCHAR* getName(); TCHAR* getPath(); TCHAR* getCommandLine(); + HICON getIcon(); int getHandleCount(DWORD &val); int getThreadCount(int ¶mTotalThreadCount, int ¶mCurrentProcessThreadCount); diff --git a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp index 913e7af..8badd10 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp @@ -1,5 +1,63 @@ #include "ProcessList.hpp" +HANDLE GetProcessByName(PCSTR name) +{ + DWORD pid = 0; + + // Create toolhelp snapshot. + HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); + PROCESSENTRY32 process; + ZeroMemory(&process, sizeof(process)); + process.dwSize = sizeof(process); + + // Walkthrough all processes. + if (Process32First(snapshot, &process)) + { + do + { + // Compare process.szExeFile based on format of name, i.e., trim file path + // trim .exe if necessary, etc. + cout< return value is processList count - Process getProcess(const DWORD processId); // return value is processId index to Process Obj + Process* getProcess(const DWORD processId); // return value is processId index to Process Obj int getPID(const int i); // return value is num i to process PID value // TODO: function Add // getProcessUser, getProcessStatus, getProcessNetworkSend, From 040e413efa74eac3dcf2617d9407980bd165758e Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 19:52:23 +0900 Subject: [PATCH 14/84] ProcessList Code reorganization --- .../process/Process.cpp | 3 -- .../process/Process.hpp | 2 +- .../process/ProcessList.cpp | 42 ------------------- 3 files changed, 1 insertion(+), 46 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 5c45f57..542c776 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -1,7 +1,4 @@ #include "Process.hpp" -#include -#include -#include "Winternl.h" TCHAR* Process::initName() { diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index 999f41d..e579fd5 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -4,7 +4,7 @@ #include #include #include -#include +#include "Winternl.h" #pragma comment(lib, "psapi.lib") diff --git a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp index 8badd10..f962df9 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp @@ -1,52 +1,10 @@ #include "ProcessList.hpp" -HANDLE GetProcessByName(PCSTR name) -{ - DWORD pid = 0; - - // Create toolhelp snapshot. - HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); - PROCESSENTRY32 process; - ZeroMemory(&process, sizeof(process)); - process.dwSize = sizeof(process); - - // Walkthrough all processes. - if (Process32First(snapshot, &process)) - { - do - { - // Compare process.szExeFile based on format of name, i.e., trim file path - // trim .exe if necessary, etc. - cout< Date: Thu, 13 Jul 2017 19:55:51 +0900 Subject: [PATCH 15/84] Process Class HANDLE null check add --- .../ServerMonitoringService/process/Process.cpp | 5 ++++- .../ServerMonitoringService/process/ProcessList.cpp | 9 +++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 542c776..822c8ce 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -89,6 +89,9 @@ PVOID Process::GetPebAddress(HANDLE ProcessHandle) TCHAR* Process::initCommandLine() { + if (this->handle == NULL) + return NULL; + int nResult = 1; PVOID pebAddress; PVOID rtlUserProcParamsAddress; @@ -159,7 +162,7 @@ HANDLE Process::getHandleFromPid() { HANDLE handle; if ((handle = OpenProcess(MAXIMUM_ALLOWED, false, this->pid)) == NULL) - throw - 1; + return NULL; return handle; } diff --git a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp index f962df9..448bab0 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp @@ -5,12 +5,12 @@ int main() ProcessList processList; processList.Update(); - /*for (int i = 0; i < processList.getCount(); i++) + for (int i = 0; i < processList.getCount(); i++) { int pid = processList.getPID(i); Process process = Process(pid); - }*/ + } system("pause"); } @@ -63,8 +63,5 @@ int ProcessList::getPID(const int i) Process* ProcessList::getProcess(const DWORD processId) { - // auto variable - Process *process = new Process(processId); - - return process; + return new Process(processId); } From a9d7bcd0862032c03b615f43911993f2e71ead20 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 20:34:26 +0900 Subject: [PATCH 16/84] ULONG getPidFromHwnd(HWND hwnd) function remove --- .../process/Process.cpp | 25 ++++++++----------- .../process/Process.hpp | 1 - 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 822c8ce..46ed319 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -135,25 +135,20 @@ TCHAR* Process::initCommandLine() return strCommandLine; } -ULONG Process::getPidFromHwnd(HWND hwnd) -{ - ULONG idProc; - GetWindowThreadProcessId(hwnd, &idProc); - return idProc; -} - HWND Process::getHwndFromPid() { - HWND hwnd = FindWindow(NULL, NULL); - - while (hwnd != NULL) + HWND hWnd = FindWindow(NULL, NULL); + while (hWnd != NULL) { - if (GetParent(hwnd) == NULL) - if (this->pid == getPidFromHwnd(hwnd)) - return hwnd; - hwnd = GetWindow(hwnd, GW_HWNDNEXT); // Next Window Handle - } + if (GetParent(hWnd) == NULL) { + DWORD dwProcId; + GetWindowThreadProcessId(hWnd, &dwProcId); + if (this->pid == dwProcId) + return hWnd; + } + hWnd = GetWindow(hWnd, GW_HWNDNEXT); + } return NULL; } diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index e579fd5..d394248 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -34,7 +34,6 @@ class Process private: HANDLE handleFromPid(); HWND getHwndFromPid(); - ULONG getPidFromHwnd(HWND hwnd); HICON initIcon(BOOLEAN LargeIcon = FALSE); HANDLE getHandleFromPid(); TCHAR* initName(); From a065ff0b514766a8b287a38ab7107ee870b5b2f5 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 20:37:08 +0900 Subject: [PATCH 17/84] ProcessList Class Process* ProcessList::getProcess(const DWORD processId) function remove --- .../process/ProcessList.cpp | 23 +------------------ .../process/ProcessList.hpp | 3 --- 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp index 448bab0..b7b83e6 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp @@ -1,21 +1,5 @@ #include "ProcessList.hpp" -int main() -{ - ProcessList processList; - processList.Update(); - - for (int i = 0; i < processList.getCount(); i++) - { - int pid = processList.getPID(i); - Process process = Process(pid); - - } - - system("pause"); -} - - void ProcessList::Update() { while (true) @@ -59,9 +43,4 @@ int ProcessList::getPID(const int i) return processList[i]; else return 0; -} - -Process* ProcessList::getProcess(const DWORD processId) -{ - return new Process(processId); -} +} \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp index 01cf034..35a37db 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp @@ -4,8 +4,6 @@ #include #include #include -#include -#include "Process.hpp" #pragma comment(lib, "psapi.lib") @@ -37,7 +35,6 @@ class ProcessList } void Update(); // process list update int getCount(); // update -> return value is processList count - Process* getProcess(const DWORD processId); // return value is processId index to Process Obj int getPID(const int i); // return value is num i to process PID value // TODO: function Add // getProcessUser, getProcessStatus, getProcessNetworkSend, From cf0836d13f4893ad554f0bae425a83d4b240bc0a Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 20:58:30 +0900 Subject: [PATCH 18/84] SystemDiskIO Class size() function re call change, DataManager TQTimer add 1Sec Interval Updated --- .../data/DataManager.cpp | 41 +++++++++++++++---- .../data/DataManager.hpp | 15 ++++++- .../system/SystemDiskIO.cpp | 5 ++- 3 files changed, 51 insertions(+), 10 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index dc78dfb..783d51f 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -1,12 +1,10 @@ #include "DataManager.hpp" -//int main() -//{ -//// DataManager dataManager; -//// dataManager.Update(); -// -//// dataManage -//} +int main() +{ + DataManager dataManager; + dataManager. +} void DataManager::Update() { @@ -27,6 +25,7 @@ void DataManager::Update() systemCpu.getIdleUsage(systemInfo->cpuIdleVal); // Disk Usage Update + systemDiskIO.Update(); systemInfo->disk = systemDiskIO.getDiskList(systemInfo->diskCount); // Memory Update @@ -40,6 +39,34 @@ void DataManager::Update() systemNetwork.getInterfaces(systemInfo->adapterInfo, systemInfo->adapterCount); } + +void DataManager::CallbackProc() +{ + // 1Sec Update + Update(); +} + +void DataManager::Start() +{ + if (this->tqTimer == NULL) + { + this->tqTimer = new TQTimer(std::bind(&DataManager::CallbackProc, this)); + this->tqTimer->setInterval(1000); // 1Sec + this->tqTimer->Start(); + } +} + +void DataManager::Stop() +{ + if (this->tqTimer) + { + this->tqTimer->Stop(); + + delete this->tqTimer; + this->tqTimer = nullptr; + } +} + SystemInfo* DataManager::getSystem() { return this->systemInfo; diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index 8859718..e654dea 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -49,6 +49,13 @@ class DataManager SystemMemory systemMemory; SystemNetwork systemNetwork; SystemOS systemOS; + + TQTimer *tqTimer; +private: + void Update(); + void Start(); + void Stop(); + void CallbackProc(); public: DataManager() { @@ -59,8 +66,12 @@ class DataManager systemInfo->userName = systemOS.getUserName(); systemInfo->osVersion = systemOS.getOSVersionName(); + // first Call + this->Update(); + // Start Function Call systemDiskIO.Start(); + this->Start(); } ~DataManager() @@ -88,9 +99,11 @@ class DataManager delete systemInfo; systemInfo = nullptr; } + + systemDiskIO.Stop(); + this->Stop(); } - void Update(); SystemInfo* getSystem(); }; diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp index f9ef0e9..50ee019 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp @@ -174,12 +174,13 @@ int SystemDiskIO::Update() this->diskList = nullptr; } + // get Partition List nResult = getPartitionList(this->strDiskList, this->diskList); - diskCount = strDiskList.size(); + this->diskCount = strDiskList.size(); if (nResult) { - for (int i = 0; i < this->strDiskList.size(); i++) + for (int i = 0; i < this->diskCount; i++) { // nResult = 0; if Then nResult == false if (!getDiskInfo(this->strDiskList[i].c_str(), this->diskList[i])) From da4acc84390ec48dd9c4fc70c72df23736f83b07 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 20:59:34 +0900 Subject: [PATCH 19/84] main function Error correction --- .../ServerMonitoringService/data/DataManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 783d51f..365632f 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -3,7 +3,7 @@ int main() { DataManager dataManager; - dataManager. + SystemInfo* system = dataManager.getSystem(); } void DataManager::Update() From 55594269d9a3f00406c92397dc55c8a41cf4f061 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 22:42:12 +0900 Subject: [PATCH 20/84] PVOID GetPebAddress(HANDLE ProcessHandle); function remove --- .../process/Process.cpp | 25 ++++++++----------- .../process/Process.hpp | 6 ++--- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 46ed319..7a90d63 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -76,17 +76,6 @@ HICON Process::initIcon(BOOLEAN LargeIcon) return shFileInfo.hIcon; } - -PVOID Process::GetPebAddress(HANDLE ProcessHandle) -{ - _NtQueryInformationProcess NtQueryInformationProcess = (_NtQueryInformationProcess)GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtQueryInformationProcess"); - PROCESS_BASIC_INFORMATION pbi; - - NtQueryInformationProcess(ProcessHandle, 0, &pbi, sizeof(pbi), NULL); - - return pbi.PebBaseAddress; -} - TCHAR* Process::initCommandLine() { if (this->handle == NULL) @@ -98,7 +87,10 @@ TCHAR* Process::initCommandLine() UNICODE_STRING commandLine; TCHAR *commandLineContents; - pebAddress = GetPebAddress(this->handle); + _NtQueryInformationProcess NtQueryInformationProcess = (_NtQueryInformationProcess)GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtQueryInformationProcess"); + PROCESS_BASIC_INFORMATION processBasicInformation; + NtQueryInformationProcess(this->handle, 0, &processBasicInformation, sizeof(processBasicInformation), NULL); + pebAddress = processBasicInformation.PebBaseAddress; if (!ReadProcessMemory(this->handle, &(((_PEB*)pebAddress)->ProcessParameters), &rtlUserProcParamsAddress, sizeof(PVOID), NULL)) nResult = -1; @@ -145,7 +137,7 @@ HWND Process::getHwndFromPid() GetWindowThreadProcessId(hWnd, &dwProcId); if (this->pid == dwProcId) - return hWnd; + return hWnd; } hWnd = GetWindow(hWnd, GW_HWNDNEXT); } @@ -182,6 +174,11 @@ TCHAR * Process::getCommandLine() return this->commandLine; } +HICON Process::getIcon() +{ + return this->icon; +} + BOOLEAN Process::isRunning() { DWORD_PTR dw = 0; @@ -191,7 +188,7 @@ BOOLEAN Process::isRunning() { return TRUE; // process is running } - else + else { if (GetLastError() == ERROR_TIMEOUT) { return FALSE; // process is not responsed diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index d394248..1c44714 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -30,16 +30,14 @@ class Process HWND hWnd = NULL; TCHAR name[MAX_PATH]; TCHAR path[MAX_PATH]; - TCHAR *commandLine; + TCHAR *commandLine = NULL; private: - HANDLE handleFromPid(); HWND getHwndFromPid(); - HICON initIcon(BOOLEAN LargeIcon = FALSE); HANDLE getHandleFromPid(); + HICON initIcon(BOOLEAN LargeIcon = FALSE); TCHAR* initName(); TCHAR* initPath(); TCHAR* initCommandLine(); - PVOID GetPebAddress(HANDLE ProcessHandle); public: Process(const DWORD pid = 0) : pid(pid) { From dd3dd5b78368c588759d9f7e564ae658a6066e50 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 23:07:16 +0900 Subject: [PATCH 21/84] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 91a88d7..51d64a9 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,12 @@ --- +#### SMS Agent -> (TCP) +#### (TCP) Data Server -> (WebSocket) +#### (WebSocket) Web Server + + + ##### Cross-platform support be expected. Currently, only Windows is supported. [![npm](https://img.shields.io/badge/email-bg0820%40naver.com-red.svg)]() From 4bf86268bf20be2140bb6e721ebf748c0480429c Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 23:42:07 +0900 Subject: [PATCH 22/84] Process getOwnerName function add --- .../process/Process.cpp | 47 +++++++++++++++++++ .../process/Process.hpp | 6 ++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 7a90d63..d5805ac 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -127,6 +127,48 @@ TCHAR* Process::initCommandLine() return strCommandLine; } +TCHAR * Process::initOwner() +{ + int nResult = 1; + + TCHAR ownerName[MAX_PATH]; + + HANDLE tokenHandle = 0; + + TOKEN_USER *tokenUser; + DWORD nlen = MAX_PATH, dlen = MAX_PATH; + char name[300], dom[300], tubuf[300], *pret = 0; + int iUse; + + //open the processes token + if (!OpenProcessToken(this->handle , TOKEN_QUERY, &tokenHandle)) + nResult = 0; + + //get the SID of the token + tokenUser = (TOKEN_USER*)tubuf; + + if (!GetTokenInformation(tokenHandle, TokenUser, tokenUser, MAX_PATH, &nlen)) + nResult = 0; + + // domain name of the SID + if (!LookupAccountSidA(0, tokenUser->User.Sid, name, &nlen, dom, &dlen, (PSID_NAME_USE)&iUse)) + nResult = 0; + + // copy info to our static buffer + strcpy(ownerName, dom); + strcat(ownerName, "/"); + strcat(ownerName, name); + + + if (tokenHandle) + CloseHandle(tokenHandle); + + if (!nResult) + return ""; + + return ownerName; +} + HWND Process::getHwndFromPid() { HWND hWnd = FindWindow(NULL, NULL); @@ -174,6 +216,11 @@ TCHAR * Process::getCommandLine() return this->commandLine; } +TCHAR * Process::getOwner() +{ + return this->owner; +} + HICON Process::getIcon() { return this->icon; diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index 1c44714..0235545 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -30,6 +30,7 @@ class Process HWND hWnd = NULL; TCHAR name[MAX_PATH]; TCHAR path[MAX_PATH]; + TCHAR owner[MAX_PATH]; TCHAR *commandLine = NULL; private: HWND getHwndFromPid(); @@ -38,13 +39,15 @@ class Process TCHAR* initName(); TCHAR* initPath(); TCHAR* initCommandLine(); + TCHAR* initOwner(); public: Process(const DWORD pid = 0) : pid(pid) { // fixed value Init this->handle = getHandleFromPid(); this->hWnd = getHwndFromPid(); - + + strcpy_s(owner, initOwner()); strcpy_s(name, initName()); strcpy_s(path, initPath()); commandLine = initCommandLine(); @@ -69,6 +72,7 @@ class Process TCHAR* getName(); TCHAR* getPath(); TCHAR* getCommandLine(); + TCHAR* getOwner(); HICON getIcon(); int getHandleCount(DWORD &val); From 873dff241f98496c7052b400ab75bc411a6ad4ef Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Thu, 13 Jul 2017 23:45:06 +0900 Subject: [PATCH 23/84] Process ~Process() DestroyIcon(icon) add --- .../ServerMonitoringService/process/Process.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index 0235545..e31a224 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -65,6 +65,9 @@ class Process delete[] commandLine; commandLine = nullptr; } + + if (icon) + DestroyIcon(icon); } BOOLEAN isRunning(); From 053d069d9d6e3e743d61068d394590b35f43c622 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Fri, 14 Jul 2017 02:28:35 +0900 Subject: [PATCH 24/84] Process getCreateTime function add --- .../data/DataManager.cpp | 10 +-- .../process/Process.cpp | 63 +++++++++++++++++-- .../process/Process.hpp | 5 ++ 3 files changed, 69 insertions(+), 9 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 365632f..bfc7073 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -1,10 +1,10 @@ #include "DataManager.hpp" -int main() -{ - DataManager dataManager; - SystemInfo* system = dataManager.getSystem(); -} +//int main() +//{ +// DataManager dataManager; +// SystemInfo* system = dataManager.getSystem(); +//} void DataManager::Update() { diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index d5805ac..309f8f6 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -20,9 +20,7 @@ TCHAR* Process::initName() nResult = 0; } else - { nResult = 0; - } if (hProcess != INVALID_HANDLE_VALUE) CloseHandle(hProcess); @@ -49,9 +47,7 @@ TCHAR* Process::initPath() nResult = 0; } else - { nResult = 0; - } if (hProcess != INVALID_HANDLE_VALUE) CloseHandle(hProcess); @@ -169,6 +165,65 @@ TCHAR * Process::initOwner() return ownerName; } + +#include + +using namespace std; + +int main() +{ + Process process = Process(3360); + + system("pause"); +} + +TCHAR * Process::initDescription() +{ + LPCVOID pBlock; + + // Ե FileDescription  Ѵ. + /*if (VerQueryValue(pBlock, "\\StringFileInfo\\041204b0\\FileDescription", (void **)&p_data, &data_size)) { + SetDlgItemText(IDC_FILE_DEscRIPTION_EDIT, p_data); + }*/ + + return nullptr; +} + +/* +char* timeToString(struct tm *t) { + static char s[20]; + + sprintf(s, "%04d-%02d-%02d %02d:%02d:%02d", + t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, + t->tm_hour, t->tm_min, t->tm_sec + ); + + return s; +}*/ + +tm Process::initCreateTime() +{ + FILETIME createTime, exitTime, kernelTime, userTime ; + GetProcessTimes(this->handle, &createTime, &exitTime, &kernelTime, &userTime); + + FILETIME localFileTime; + FileTimeToLocalFileTime(&createTime, &localFileTime); + SYSTEMTIME sysTime; + FileTimeToSystemTime(&localFileTime, &sysTime); + struct tm tmTime = { 0 }; + tmTime.tm_year = sysTime.wYear - 1900; + tmTime.tm_mon = sysTime.wMonth - 1; + tmTime.tm_mday = sysTime.wDay; + tmTime.tm_hour = sysTime.wHour; + tmTime.tm_min = sysTime.wMinute; + tmTime.tm_sec = sysTime.wSecond; + tmTime.tm_wday = 0; + tmTime.tm_yday = 0; + tmTime.tm_isdst = -1; + + return tmTime; +} + HWND Process::getHwndFromPid() { HWND hWnd = FindWindow(NULL, NULL); diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index e31a224..ed46bf5 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -5,6 +5,7 @@ #include #include #include "Winternl.h" +#include #pragma comment(lib, "psapi.lib") @@ -32,6 +33,7 @@ class Process TCHAR path[MAX_PATH]; TCHAR owner[MAX_PATH]; TCHAR *commandLine = NULL; + tm createTime = { 0 }; private: HWND getHwndFromPid(); HANDLE getHandleFromPid(); @@ -40,6 +42,8 @@ class Process TCHAR* initPath(); TCHAR* initCommandLine(); TCHAR* initOwner(); + TCHAR* initDescription(); + tm initCreateTime(); public: Process(const DWORD pid = 0) : pid(pid) { @@ -53,6 +57,7 @@ class Process commandLine = initCommandLine(); icon = initIcon(TRUE); + this->tm = initCreateTime(); } ~Process() From 120708734a3898d8066f2ef9a2739f525c57b4fd Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Fri, 14 Jul 2017 02:43:06 +0900 Subject: [PATCH 25/84] code arrangement --- .../process/Process.cpp | 36 ------------------- .../process/Process.hpp | 3 +- 2 files changed, 1 insertion(+), 38 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 309f8f6..bb12654 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -165,42 +165,6 @@ TCHAR * Process::initOwner() return ownerName; } - -#include - -using namespace std; - -int main() -{ - Process process = Process(3360); - - system("pause"); -} - -TCHAR * Process::initDescription() -{ - LPCVOID pBlock; - - // Ե FileDescription  Ѵ. - /*if (VerQueryValue(pBlock, "\\StringFileInfo\\041204b0\\FileDescription", (void **)&p_data, &data_size)) { - SetDlgItemText(IDC_FILE_DEscRIPTION_EDIT, p_data); - }*/ - - return nullptr; -} - -/* -char* timeToString(struct tm *t) { - static char s[20]; - - sprintf(s, "%04d-%02d-%02d %02d:%02d:%02d", - t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, - t->tm_hour, t->tm_min, t->tm_sec - ); - - return s; -}*/ - tm Process::initCreateTime() { FILETIME createTime, exitTime, kernelTime, userTime ; diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index ed46bf5..86c17db 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -42,7 +42,6 @@ class Process TCHAR* initPath(); TCHAR* initCommandLine(); TCHAR* initOwner(); - TCHAR* initDescription(); tm initCreateTime(); public: Process(const DWORD pid = 0) : pid(pid) @@ -57,7 +56,7 @@ class Process commandLine = initCommandLine(); icon = initIcon(TRUE); - this->tm = initCreateTime(); + this->createTime = initCreateTime(); } ~Process() From 89ffd96dc9cd148423f2c469750e09de926dac56 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Fri, 14 Jul 2017 02:46:55 +0900 Subject: [PATCH 26/84] code was re arrangement --- .../ServerMonitoringService/process/Process.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index 86c17db..00f5bd0 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -50,12 +50,12 @@ class Process this->handle = getHandleFromPid(); this->hWnd = getHwndFromPid(); - strcpy_s(owner, initOwner()); - strcpy_s(name, initName()); - strcpy_s(path, initPath()); - commandLine = initCommandLine(); + strcpy_s(this->owner, initOwner()); + strcpy_s(this->name, initName()); + strcpy_s(this->path, initPath()); + this->commandLine = initCommandLine(); - icon = initIcon(TRUE); + this->icon = initIcon(TRUE); this->createTime = initCreateTime(); } From bba00c2ebfe1b632f5dcc6fedc3523555696fde6 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Fri, 14 Jul 2017 03:46:53 +0900 Subject: [PATCH 27/84] memory leak solved --- .../data/DataManager.cpp | 53 ++++++++++---- .../data/DataManager.hpp | 19 +++-- .../process/Process.cpp | 73 ++++++++++--------- .../process/Process.hpp | 23 ++++-- .../system/SystemNetwork.cpp | 1 - 5 files changed, 103 insertions(+), 66 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index bfc7073..be24fe1 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -1,25 +1,43 @@ #include "DataManager.hpp" -//int main() -//{ -// DataManager dataManager; -// SystemInfo* system = dataManager.getSystem(); -//} +int main() +{ + DataManager *dataManager = new DataManager(); + SystemInfo* systemInfo = dataManager->getSystem(); + + system("pause"); +} void DataManager::Update() { + StopWatch stopWatch; + stopWatch.Start(); + + if (systemInfo->process) + { + for (int i = 0; i < systemInfo->processCount; ++i) + { + if (systemInfo->process[i]) + delete systemInfo->process[i]; + } + + delete[] systemInfo->process; + } + // ProcessList Update processListObj.Update(); systemInfo->processCount = processListObj.getCount(); + // Process Update - systemInfo->process = new Process[systemInfo->processCount]; + systemInfo->process = new Process*[systemInfo->processCount]; for (int i = 0; i < systemInfo->processCount; i++) { int pid = processListObj.getPID(i); - systemInfo->process[i] = Process(pid); + systemInfo->process[i] = new Process(pid); } + // Cpu Usage Update systemCpu.getUsage(systemInfo->cpuUsageVal); systemCpu.getIdleUsage(systemInfo->cpuIdleVal); @@ -29,19 +47,22 @@ void DataManager::Update() systemInfo->disk = systemDiskIO.getDiskList(systemInfo->diskCount); // Memory Update - systemMemory.getFreeByte(systemInfo->memoryFreeByte); - systemMemory.getUsedByte(systemInfo->memoryUsedByte); - systemMemory.getTotalByte(systemInfo->memoryTotalByte); - systemMemory.getLoadPercent(systemInfo->memoryLoadPercent); - - // Network Update - systemNetwork.getConnectionTable(systemInfo->networkConnection, systemInfo->networkConnectionCount); - systemNetwork.getInterfaces(systemInfo->adapterInfo, systemInfo->adapterCount); -} + systemMemory.getFreeByte(systemInfo->memoryFreeByte); + systemMemory.getUsedByte(systemInfo->memoryUsedByte); + systemMemory.getTotalByte(systemInfo->memoryTotalByte); + systemMemory.getLoadPercent(systemInfo->memoryLoadPercent); + + // Network Update + systemNetwork.getConnectionTable(systemInfo->networkConnection, systemInfo->networkConnectionCount); + systemNetwork.getInterfaces(systemInfo->adapterInfo, systemInfo->adapterCount); + stopWatch.Stop(); + stopWatch.secPrint(); +} void DataManager::CallbackProc() { + cout << "UPDATE" << endl; // 1Sec Update Update(); } diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index e654dea..b64842a 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -1,6 +1,7 @@ #ifndef _DATAMANAGER_H_ #define _DATAMANAGER_H_ +#include #include #include "../process/ProcessList.hpp" #include "../process/Process.hpp" @@ -10,6 +11,9 @@ #include "../system/SystemNetwork.hpp" #include "../system/SystemOS.hpp" #include "../util/TQTimer.hpp" +#include "../util/StopWatch.hpp" + +using namespace std; typedef struct system_info { @@ -28,7 +32,7 @@ typedef struct system_info Disk *disk = NULL; int diskCount = 0; - Process *process = NULL; + Process **process = NULL; int processCount = 0; NetworkConnection *networkConnection = NULL; ULONG networkConnectionCount; @@ -41,16 +45,17 @@ class DataManager { private: DWORD *processes = NULL; - ProcessList processListObj = ProcessList(); + SystemInfo *systemInfo = NULL; + TQTimer *tqTimer = NULL; - SystemInfo *systemInfo; + ProcessList processListObj = ProcessList(); SystemCpu systemCpu; SystemDiskIO systemDiskIO; SystemMemory systemMemory; SystemNetwork systemNetwork; SystemOS systemOS; - TQTimer *tqTimer; + private: void Update(); void Start(); @@ -76,6 +81,9 @@ class DataManager ~DataManager() { + systemDiskIO.Stop(); + this->Stop(); + if (systemInfo) { if (systemInfo->disk) @@ -99,9 +107,6 @@ class DataManager delete systemInfo; systemInfo = nullptr; } - - systemDiskIO.Stop(); - this->Stop(); } SystemInfo* getSystem(); diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index bb12654..049bb3c 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -5,25 +5,25 @@ TCHAR* Process::initName() int nResult = 1; TCHAR szProcessName[MAX_PATH]; - HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); + //HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); - if (hProcess != NULL) + if (this->handle != NULL) { HMODULE hMod; DWORD cbNeeded; - if (!EnumProcessModulesEx(hProcess, &hMod, sizeof(hMod), &cbNeeded, LIST_MODULES_ALL)) + if (!EnumProcessModulesEx(this->handle, &hMod, sizeof(hMod), &cbNeeded, LIST_MODULES_ALL)) nResult = 0; - if (GetModuleBaseName(hProcess, hMod, szProcessName, sizeof(szProcessName) / sizeof(TCHAR)) == 0) + if (GetModuleBaseName(this->handle, hMod, szProcessName, sizeof(szProcessName) / sizeof(TCHAR)) == 0) nResult = 0; } else nResult = 0; - if (hProcess != INVALID_HANDLE_VALUE) - CloseHandle(hProcess); + /*if (hProcess != INVALID_HANDLE_VALUE) + CloseHandle(hProcess);*/ return szProcessName; } @@ -33,24 +33,24 @@ TCHAR* Process::initPath() int nResult = 1; TCHAR szProcessPath[MAX_PATH]; - HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); + //HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); - if (hProcess != NULL) + if (this->handle != NULL) { HMODULE hMod; DWORD cbNeeded; - if (!EnumProcessModulesEx(hProcess, &hMod, sizeof(hMod), &cbNeeded, LIST_MODULES_ALL)) + if (!EnumProcessModulesEx(this->handle, &hMod, sizeof(hMod), &cbNeeded, LIST_MODULES_ALL)) nResult = 0; - if (GetModuleFileNameEx(hProcess, hMod, szProcessPath, sizeof(szProcessPath) / sizeof(TCHAR)) == 0) + if (GetModuleFileNameEx(this->handle, hMod, szProcessPath, sizeof(szProcessPath) / sizeof(TCHAR)) == 0) nResult = 0; } else nResult = 0; - if (hProcess != INVALID_HANDLE_VALUE) - CloseHandle(hProcess); + /*if (hProcess != INVALID_HANDLE_VALUE) + CloseHandle(hProcess);*/ return szProcessPath; } @@ -118,30 +118,33 @@ TCHAR* Process::initCommandLine() if (nResult != 1) - throw nResult; + return ""; + // throw nResult; return strCommandLine; } TCHAR * Process::initOwner() { + if (this->handle == NULL) + return ""; + int nResult = 1; TCHAR ownerName[MAX_PATH]; - HANDLE tokenHandle = 0; - - TOKEN_USER *tokenUser; + char name[MAX_PATH], dom[MAX_PATH], tubuf[MAX_PATH], *pret = 0; DWORD nlen = MAX_PATH, dlen = MAX_PATH; - char name[300], dom[300], tubuf[300], *pret = 0; + TOKEN_USER *tokenUser = (TOKEN_USER*)tubuf; + int iUse; //open the processes token - if (!OpenProcessToken(this->handle , TOKEN_QUERY, &tokenHandle)) + if (!OpenProcessToken(this->handle, TOKEN_QUERY, &tokenHandle)) nResult = 0; //get the SID of the token - tokenUser = (TOKEN_USER*)tubuf; + if (!GetTokenInformation(tokenHandle, TokenUser, tokenUser, MAX_PATH, &nlen)) nResult = 0; @@ -151,9 +154,9 @@ TCHAR * Process::initOwner() nResult = 0; // copy info to our static buffer - strcpy(ownerName, dom); - strcat(ownerName, "/"); - strcat(ownerName, name); + strcpy_s(ownerName, dom); + strcat_s(ownerName, "/"); + strcat_s(ownerName, name); if (tokenHandle) @@ -167,7 +170,7 @@ TCHAR * Process::initOwner() tm Process::initCreateTime() { - FILETIME createTime, exitTime, kernelTime, userTime ; + FILETIME createTime, exitTime, kernelTime, userTime; GetProcessTimes(this->handle, &createTime, &exitTime, &kernelTime, &userTime); FILETIME localFileTime; @@ -339,12 +342,12 @@ int Process::getMemoryUsage(DWORD &val) DWORD dPrivatePages = 0; DWORD dPageTablePages = 0; - HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); + //HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); - if (hProcess == NULL) - nResult = 0; + //if (this->handle == NULL) + // nResult = 0; - if (!QueryWorkingSet(hProcess, dWorkingSetPages, sizeof(dWorkingSetPages))) + if (!QueryWorkingSet(this->handle, dWorkingSetPages, sizeof(dWorkingSetPages))) nResult = 0; DWORD dPages = dWorkingSetPages[0]; @@ -394,8 +397,8 @@ int Process::getMemoryUsage(DWORD &val) val = (dTotal - dShared) * 4; //ref - if (hProcess != INVALID_HANDLE_VALUE) - CloseHandle(hProcess); + //if (hProcess != INVALID_HANDLE_VALUE) + // CloseHandle(hProcess); return nResult; } @@ -413,10 +416,10 @@ int Process::getCpuUsage(double &val) GetSystemInfo(&sysInfo); int numProcessors = sysInfo.dwNumberOfProcessors; - HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); + //HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); - if (hProcess == NULL) - nResult = 0; + // if (this->handle == NULL) + // nResult = 0; int count = 0; while (true) @@ -424,7 +427,7 @@ int Process::getCpuUsage(double &val) ULONG64 CycleTime; LARGE_INTEGER qpcLastInt; - if (!QueryProcessCycleTime(hProcess, &CycleTime)) + if (!QueryProcessCycleTime(this->handle, &CycleTime)) nResult = 0; ULONG64 cycle = CycleTime - LastCycleTime; @@ -452,8 +455,8 @@ int Process::getCpuUsage(double &val) count++; } - if (hProcess != INVALID_HANDLE_VALUE) - CloseHandle(hProcess); + //if (hProcess != INVALID_HANDLE_VALUE) + // CloseHandle(hProcess); return nResult; } diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index 00f5bd0..5204433 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -1,11 +1,13 @@ #ifndef _PROCESS_H_ #define _PROCESS_H_ +#include #include #include #include #include "Winternl.h" #include +#include "../util/StopWatch.hpp" #pragma comment(lib, "psapi.lib") @@ -46,17 +48,24 @@ class Process public: Process(const DWORD pid = 0) : pid(pid) { + //StopWatch stopWatch; + // fixed value Init - this->handle = getHandleFromPid(); - this->hWnd = getHwndFromPid(); - - strcpy_s(this->owner, initOwner()); - strcpy_s(this->name, initName()); - strcpy_s(this->path, initPath()); + this->handle = getHandleFromPid(); // 0.005 ~ 0.01ms + this->hWnd = getHwndFromPid(); // 0.2 ~ 3.0 ms + + strcpy_s(this->owner, initOwner()); // 0.15 ~ 0.08 ms + strcpy_s(this->name, initName()); // 0.05 ~ 1.3 ms + strcpy_s(this->path, initPath()); // 0.4 ~ 0.5 ms + + // stopWatch.Start(); this->commandLine = initCommandLine(); this->icon = initIcon(TRUE); this->createTime = initCreateTime(); + //stopWatch.Stop(); + //stopWatch.milliPrint(); + } ~Process() @@ -71,7 +80,7 @@ class Process } if (icon) - DestroyIcon(icon); + DestroyIcon(icon); } BOOLEAN isRunning(); diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp b/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp index 929eb4a..3cb0c8e 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp @@ -293,7 +293,6 @@ int SystemNetwork::getConnectionTable(NetworkConnection *¶mConnection, ULONG if (udp6Table) { - cout << udp6Table->dwNumEntries << endl; for (int i = 0; i < udp6Table->dwNumEntries; i++) { connections[index].protocolType = UDP6_NETWORK_PROTOCOL; From 01c9d96bb23888ceab717d580115eb08d8b0ef08 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Fri, 14 Jul 2017 15:19:54 +0900 Subject: [PATCH 28/84] Memory Leak Solved --- .../data/DataManager.cpp | 59 +++++++++++++------ .../data/DataManager.hpp | 42 +++++++++---- .../process/Process.cpp | 4 +- .../system/SystemDiskIO.cpp | 6 +- .../system/SystemDiskIO.hpp | 2 + .../system/SystemNetwork.cpp | 18 +++--- .../system/SystemNetwork.hpp | 2 +- .../system/SystemOS.hpp | 6 +- 8 files changed, 94 insertions(+), 45 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index be24fe1..88a6287 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -1,9 +1,23 @@ #include "DataManager.hpp" +#ifdef _DEBUG +#include +#define new new(_NORMAL_BLOCK, __FILE__, __LINE__) +#endif + int main() { - DataManager *dataManager = new DataManager(); - SystemInfo* systemInfo = dataManager->getSystem(); + // ޸ +#ifdef _DEBUG + _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); + // ޸ ã + //_CrtSetBreakAlloc(164); +#endif + + DataManager dataManager = DataManager(); + //SystemInfo* systemInfo = dataManager->getSystem(); + + system("pause"); } @@ -13,46 +27,57 @@ void DataManager::Update() StopWatch stopWatch; stopWatch.Start(); + // ProcessList Update + processListObj.Update(); + + // Memory Leak prevation if (systemInfo->process) { - for (int i = 0; i < systemInfo->processCount; ++i) - { - if (systemInfo->process[i]) - delete systemInfo->process[i]; - } - + for (int i = 0; iprocessCount; i++) + delete systemInfo->process[i]; delete[] systemInfo->process; + systemInfo->process = nullptr; } - - // ProcessList Update - processListObj.Update(); + systemInfo->processCount = processListObj.getCount(); - // Process Update systemInfo->process = new Process*[systemInfo->processCount]; for (int i = 0; i < systemInfo->processCount; i++) { int pid = processListObj.getPID(i); systemInfo->process[i] = new Process(pid); - } - + } // Cpu Usage Update systemCpu.getUsage(systemInfo->cpuUsageVal); systemCpu.getIdleUsage(systemInfo->cpuIdleVal); // Disk Usage Update - systemDiskIO.Update(); systemInfo->disk = systemDiskIO.getDiskList(systemInfo->diskCount); + systemDiskIO.Update(); // Memory Update systemMemory.getFreeByte(systemInfo->memoryFreeByte); systemMemory.getUsedByte(systemInfo->memoryUsedByte); systemMemory.getTotalByte(systemInfo->memoryTotalByte); systemMemory.getLoadPercent(systemInfo->memoryLoadPercent); - + // Network Update + + // Memory Leak prevation + if (systemInfo->networkConnection) + { + delete[] systemInfo->networkConnection; + systemInfo->networkConnection = nullptr; + } + + if (systemInfo->adapterInfo) + { + delete[] systemInfo->adapterInfo; + systemInfo->adapterInfo = nullptr; + } + systemNetwork.getConnectionTable(systemInfo->networkConnection, systemInfo->networkConnectionCount); systemNetwork.getInterfaces(systemInfo->adapterInfo, systemInfo->adapterCount); @@ -62,7 +87,7 @@ void DataManager::Update() void DataManager::CallbackProc() { - cout << "UPDATE" << endl; + //cout << "UPDATE" << endl; // 1Sec Update Update(); } diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index b64842a..7063916 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -19,16 +19,16 @@ typedef struct system_info { double cpuUsageVal; double cpuIdleVal; - string cpuModel; + TCHAR cpuModel[1024]; DWORD memoryLoadPercent; DWORDLONG memoryUsedByte; DWORDLONG memoryFreeByte; DWORDLONG memoryTotalByte; - string userName; - string computerName; - string osVersion; + TCHAR userName[MAX_PATH]; + TCHAR computerName[MAX_PATH]; + TCHAR osVersion[MAX_PATH]; Disk *disk = NULL; int diskCount = 0; @@ -37,14 +37,13 @@ typedef struct system_info NetworkConnection *networkConnection = NULL; ULONG networkConnectionCount; - PIP_ADAPTER_INFO adapterInfo; + IP_ADAPTER_INFO *adapterInfo = NULL; int adapterCount = 0; }SystemInfo; class DataManager { private: - DWORD *processes = NULL; SystemInfo *systemInfo = NULL; TQTimer *tqTimer = NULL; @@ -66,10 +65,14 @@ class DataManager { systemInfo = new SystemInfo; // fixed variable - systemInfo->cpuModel = systemCpu.getCpuModeInfo(); + strcpy(systemInfo->cpuModel, systemCpu.getCpuModeInfo()); + strcpy(systemInfo->computerName, systemOS.getComputerName()); + strcpy(systemInfo->userName, systemOS.getUserName()); + strcpy(systemInfo->osVersion, systemOS.getOSVersionName()); + /*systemInfo->cpuModel = systemCpu.getCpuModeInfo(); systemInfo->computerName = systemOS.getComputerName(); systemInfo->userName = systemOS.getUserName(); - systemInfo->osVersion = systemOS.getOSVersionName(); + systemInfo->osVersion = systemOS.getOSVersionName();*/ // first Call this->Update(); @@ -81,24 +84,41 @@ class DataManager ~DataManager() { + cout << "~DataManager()" << endl; systemDiskIO.Stop(); this->Stop(); if (systemInfo) { + // ~SystemDiskIO() + /* if (systemInfo->disk) { delete[] systemInfo->disk; systemInfo->disk = nullptr; - } - + }*/ + if (systemInfo->process) { + for (int i = 0; iprocessCount; i++) + delete systemInfo->process[i]; delete[] systemInfo->process; systemInfo->process = nullptr; } - if (systemInfo->process) + if (systemInfo->networkConnection) + { + delete[] systemInfo->networkConnection; + systemInfo->networkConnection = nullptr; + } + + if (systemInfo->adapterInfo) + { + delete[] systemInfo->adapterInfo; + systemInfo->adapterInfo = nullptr; + } + + if (systemInfo->networkConnection) { delete[] systemInfo->networkConnection; systemInfo->networkConnection = nullptr; diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 049bb3c..f617ce1 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -101,7 +101,7 @@ TCHAR* Process::initCommandLine() int size = commandLine.Length / 2; TCHAR *strCommandLine = new TCHAR[size + 1]; - memset(strCommandLine, NULL, size); + memset(strCommandLine, NULL, size + 1); for (int i = 0; i < commandLine.Length; i++) { @@ -118,7 +118,7 @@ TCHAR* Process::initCommandLine() if (nResult != 1) - return ""; + return NULL; // throw nResult; return strCommandLine; diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp index 50ee019..b684e0c 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.cpp @@ -163,7 +163,11 @@ Disk * SystemDiskIO::getDiskList(int &count) return this->diskList; } -// call update function after recall getDiskList() function +/* + getDiskList function Call -> Update function Call + Low call frequency function + this function purpose is partition update +*/ int SystemDiskIO::Update() { int nResult = 1; diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp index a909438..9763d7c 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemDiskIO.hpp @@ -53,6 +53,8 @@ class SystemDiskIO ~SystemDiskIO() { + this->Stop(); + if (diskList) { delete[] diskList; diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp b/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp index 3cb0c8e..e8b6f3e 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp @@ -110,7 +110,7 @@ TCHAR * SystemNetwork::getStateName(ULONG state) } } -int SystemNetwork::getConnectionTable(NetworkConnection *¶mConnection, ULONG ¶mCount) +int SystemNetwork::getConnectionTable(NetworkConnection *¶mConnection, ULONG ¶mTotalCount) { int nResult = 1; @@ -122,7 +122,7 @@ int SystemNetwork::getConnectionTable(NetworkConnection *¶mConnection, ULONG MIB_UDPTABLE_OWNER_MODULE *udp4Table = NULL; MIB_TCP6TABLE_OWNER_MODULE *tcp6Table = NULL; MIB_UDP6TABLE_OWNER_MODULE *udp6Table = NULL; - NetworkConnection *connections; + NetworkConnection *connections = NULL; //PMIB_TCP6TABLE tcp6Table; //PMIB_UDP6TABLE udp6Table; @@ -239,7 +239,7 @@ int SystemNetwork::getConnectionTable(NetworkConnection *¶mConnection, ULONG index++; } - delete tcp4Table; + delete[] tcp4Table; tcp4Table = nullptr; } else @@ -263,7 +263,7 @@ int SystemNetwork::getConnectionTable(NetworkConnection *¶mConnection, ULONG index++; } - delete tcp6Table; + delete[] tcp6Table; tcp6Table = nullptr; } else @@ -285,7 +285,7 @@ int SystemNetwork::getConnectionTable(NetworkConnection *¶mConnection, ULONG index++; } - delete udp4Table; + delete[] udp4Table; udp4Table = nullptr; } else @@ -307,14 +307,14 @@ int SystemNetwork::getConnectionTable(NetworkConnection *¶mConnection, ULONG index++; } - delete udp6Table; + delete[] udp6Table; udp6Table = nullptr; } else nResult = 0; paramConnection = connections; - paramCount = totalCount; + paramTotalCount = totalCount; return nResult; } @@ -353,10 +353,8 @@ int SystemNetwork::getInterfaces(PIP_ADAPTER_INFO ¶mAdapter, int &outCount) nResult = -2; } - if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen))) - { + if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == ERROR_SUCCESS) paramAdapter = pAdapterInfo; - } else nResult = dwRetVal; // set return value diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.hpp b/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.hpp index ea6d0c2..5e9df69 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.hpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.hpp @@ -58,7 +58,7 @@ class SystemNetwork void formatToMacAddress(TCHAR *param, BYTE addr[]); int getInterfaces(PIP_ADAPTER_INFO &pAdapter, int &outCount); TCHAR* getInterfaceTypeName(IP_ADAPTER_INFO paramAdapterInfo); - int getConnectionTable(NetworkConnection *¶mConnection, ULONG ¶mCount); + int getConnectionTable(NetworkConnection *¶mConnection, ULONG ¶mTotalCount); TCHAR* getProtocolTypeName(ULONG protocolType); TCHAR* getStateName(ULONG state); int getNetworkSendBytes(); diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemOS.hpp b/ServerMonitoringService/ServerMonitoringService/system/SystemOS.hpp index 43ec406..dd757e3 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemOS.hpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemOS.hpp @@ -29,17 +29,17 @@ class SystemOS { if (userName) { - delete userName; + delete[] userName; userName = nullptr; } if (computerName) { - delete computerName; + delete[] computerName; computerName = nullptr; } if (osVersionName) { - delete osVersionName; + delete[] osVersionName; osVersionName = nullptr; } } From fed9a7de2a93284b31ab97a7c8230f1f5b850e23 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Fri, 14 Jul 2017 15:57:52 +0900 Subject: [PATCH 29/84] Fixed error returning character --- .../data/DataManager.cpp | 7 +++-- .../process/Process.cpp | 29 +++++++++++++++---- .../process/Process.hpp | 18 ++++++------ 3 files changed, 38 insertions(+), 16 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 88a6287..0a011f0 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -15,7 +15,7 @@ int main() #endif DataManager dataManager = DataManager(); - //SystemInfo* systemInfo = dataManager->getSystem(); + SystemInfo* systemInfo = dataManager.getSystem(); @@ -47,6 +47,9 @@ void DataManager::Update() { int pid = processListObj.getPID(i); systemInfo->process[i] = new Process(pid); +// cout << systemInfo->process[i]->getName() << endl; +// cout << systemInfo->process[i]->getCommandLine() << endl; +// cout << systemInfo->process[i]->getPath() << endl; } // Cpu Usage Update @@ -97,7 +100,7 @@ void DataManager::Start() if (this->tqTimer == NULL) { this->tqTimer = new TQTimer(std::bind(&DataManager::CallbackProc, this)); - this->tqTimer->setInterval(1000); // 1Sec + this->tqTimer->setInterval(100000); // 100Sec this->tqTimer->Start(); } } diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index f617ce1..9e2ac99 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -2,9 +2,13 @@ TCHAR* Process::initName() { + if (this->handle == NULL) + return ""; + int nResult = 1; TCHAR szProcessName[MAX_PATH]; + //HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); if (this->handle != NULL) @@ -15,9 +19,9 @@ TCHAR* Process::initName() if (!EnumProcessModulesEx(this->handle, &hMod, sizeof(hMod), &cbNeeded, LIST_MODULES_ALL)) nResult = 0; - if (GetModuleBaseName(this->handle, hMod, szProcessName, sizeof(szProcessName) / sizeof(TCHAR)) == 0) nResult = 0; + } else nResult = 0; @@ -30,6 +34,9 @@ TCHAR* Process::initName() TCHAR* Process::initPath() { + if (this->handle == NULL) + return ""; + int nResult = 1; TCHAR szProcessPath[MAX_PATH]; @@ -225,22 +232,34 @@ DWORD Process::getPid() TCHAR * Process::getName() { - return this->name; + if (this->name) + return this->name; + else + return ""; } TCHAR * Process::getPath() { - return this->path; + if (this->path) + return this->path; + else + return ""; } TCHAR * Process::getCommandLine() { - return this->commandLine; + if (this->commandLine) + return this->commandLine; + else + return ""; } TCHAR * Process::getOwner() { - return this->owner; + if (this->owner) + return this->owner; + else + return ""; } HICON Process::getIcon() diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index 5204433..ff0e64d 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -28,13 +28,13 @@ class Process { private: DWORD pid; - HICON icon; + HICON icon = NULL; HANDLE handle = NULL; HWND hWnd = NULL; + TCHAR *commandLine = NULL; TCHAR name[MAX_PATH]; TCHAR path[MAX_PATH]; TCHAR owner[MAX_PATH]; - TCHAR *commandLine = NULL; tm createTime = { 0 }; private: HWND getHwndFromPid(); @@ -48,8 +48,6 @@ class Process public: Process(const DWORD pid = 0) : pid(pid) { - //StopWatch stopWatch; - // fixed value Init this->handle = getHandleFromPid(); // 0.005 ~ 0.01ms this->hWnd = getHwndFromPid(); // 0.2 ~ 3.0 ms @@ -58,14 +56,16 @@ class Process strcpy_s(this->name, initName()); // 0.05 ~ 1.3 ms strcpy_s(this->path, initPath()); // 0.4 ~ 0.5 ms - // stopWatch.Start(); this->commandLine = initCommandLine(); - this->icon = initIcon(TRUE); - this->createTime = initCreateTime(); - //stopWatch.Stop(); - //stopWatch.milliPrint(); + cout << "Owner : " << getOwner() << endl; + cout << "Name : " << getName() << endl; + cout << "Path : " << getPath() << endl; + cout << "Cmd : " << getCommandLine() << endl; + cout << "=========================================" << endl<< endl; + // this->icon = initIcon(TRUE); // cpu time 69.4% usage + this->createTime = initCreateTime(); } ~Process() From cbfd1e72c80b23d96d72f04c5cb367cae70923e2 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Fri, 14 Jul 2017 16:05:55 +0900 Subject: [PATCH 30/84] Code cleanup --- .../ServerMonitoringService/process/Process.cpp | 6 ++---- .../ServerMonitoringService/process/Process.hpp | 5 ++--- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 9e2ac99..6c7574b 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -88,7 +88,6 @@ TCHAR* Process::initCommandLine() PVOID pebAddress; PVOID rtlUserProcParamsAddress; UNICODE_STRING commandLine; - TCHAR *commandLineContents; _NtQueryInformationProcess NtQueryInformationProcess = (_NtQueryInformationProcess)GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtQueryInformationProcess"); PROCESS_BASIC_INFORMATION processBasicInformation; @@ -101,8 +100,7 @@ TCHAR* Process::initCommandLine() if (!ReadProcessMemory(this->handle, &(((_RTL_USER_PROCESS_PARAMETERS*)rtlUserProcParamsAddress)->CommandLine), &commandLine, sizeof(commandLine), NULL)) nResult = -2; - commandLineContents = new TCHAR[commandLine.Length]; - + TCHAR *commandLineContents = new TCHAR[commandLine.Length]; if (!ReadProcessMemory(this->handle, commandLine.Buffer, commandLineContents, commandLine.Length, NULL)) nResult = -3; @@ -110,12 +108,12 @@ TCHAR* Process::initCommandLine() TCHAR *strCommandLine = new TCHAR[size + 1]; memset(strCommandLine, NULL, size + 1); + // char <-> w_char compatibility for (int i = 0; i < commandLine.Length; i++) { if (commandLineContents[i] != NULL) strCommandLine[i / 2] = commandLineContents[i]; } - strCommandLine[size] = commandLineContents[commandLine.Length - 1]; if (commandLineContents) { diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index ff0e64d..7bf0129 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -55,14 +55,13 @@ class Process strcpy_s(this->owner, initOwner()); // 0.15 ~ 0.08 ms strcpy_s(this->name, initName()); // 0.05 ~ 1.3 ms strcpy_s(this->path, initPath()); // 0.4 ~ 0.5 ms - this->commandLine = initCommandLine(); - cout << "Owner : " << getOwner() << endl; + /* cout << "Owner : " << getOwner() << endl; cout << "Name : " << getName() << endl; cout << "Path : " << getPath() << endl; cout << "Cmd : " << getCommandLine() << endl; - cout << "=========================================" << endl<< endl; + cout << "=========================================" << endl<< endl;*/ // this->icon = initIcon(TRUE); // cpu time 69.4% usage this->createTime = initCreateTime(); From c7698c5e77ec813257e6a97ea5026465484f3c40 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Fri, 14 Jul 2017 19:01:21 +0900 Subject: [PATCH 31/84] Improve a Process Call time, Code Clean-Up --- .../data/DataManager.cpp | 17 ++- .../process/Process.cpp | 135 ++++++------------ .../process/Process.hpp | 70 +++++---- 3 files changed, 94 insertions(+), 128 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 0a011f0..20f77b2 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -33,12 +33,12 @@ void DataManager::Update() // Memory Leak prevation if (systemInfo->process) { - for (int i = 0; iprocessCount; i++) + for (int i = 0; i < systemInfo->processCount; i++) delete systemInfo->process[i]; delete[] systemInfo->process; systemInfo->process = nullptr; } - + systemInfo->processCount = processListObj.getCount(); // Process Update @@ -47,10 +47,10 @@ void DataManager::Update() { int pid = processListObj.getPID(i); systemInfo->process[i] = new Process(pid); -// cout << systemInfo->process[i]->getName() << endl; -// cout << systemInfo->process[i]->getCommandLine() << endl; -// cout << systemInfo->process[i]->getPath() << endl; - } + // cout << systemInfo->process[i]->getName() << endl; + // cout << systemInfo->process[i]->getCommandLine() << endl; + // cout << systemInfo->process[i]->getPath() << endl; + } // Cpu Usage Update systemCpu.getUsage(systemInfo->cpuUsageVal); @@ -65,7 +65,7 @@ void DataManager::Update() systemMemory.getUsedByte(systemInfo->memoryUsedByte); systemMemory.getTotalByte(systemInfo->memoryTotalByte); systemMemory.getLoadPercent(systemInfo->memoryLoadPercent); - + // Network Update // Memory Leak prevation @@ -90,7 +90,6 @@ void DataManager::Update() void DataManager::CallbackProc() { - //cout << "UPDATE" << endl; // 1Sec Update Update(); } @@ -100,7 +99,7 @@ void DataManager::Start() if (this->tqTimer == NULL) { this->tqTimer = new TQTimer(std::bind(&DataManager::CallbackProc, this)); - this->tqTimer->setInterval(100000); // 100Sec + this->tqTimer->setInterval(1000); // 100Sec this->tqTimer->Start(); } } diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 6c7574b..1c61f9e 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -1,46 +1,18 @@ #include "Process.hpp" -TCHAR* Process::initName() +void Process::initFileNamePath() { if (this->handle == NULL) - return ""; - - int nResult = 1; - - TCHAR szProcessName[MAX_PATH]; - - //HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); - - if (this->handle != NULL) { - HMODULE hMod; - DWORD cbNeeded; - - if (!EnumProcessModulesEx(this->handle, &hMod, sizeof(hMod), &cbNeeded, LIST_MODULES_ALL)) - nResult = 0; - - if (GetModuleBaseName(this->handle, hMod, szProcessName, sizeof(szProcessName) / sizeof(TCHAR)) == 0) - nResult = 0; - + this->name = NULL; + this->path = NULL; + return; } - else - nResult = 0; - - /*if (hProcess != INVALID_HANDLE_VALUE) - CloseHandle(hProcess);*/ - - return szProcessName; -} - -TCHAR* Process::initPath() -{ - if (this->handle == NULL) - return ""; int nResult = 1; TCHAR szProcessPath[MAX_PATH]; - //HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); + TCHAR szProcessName[MAX_PATH]; if (this->handle != NULL) { @@ -48,23 +20,24 @@ TCHAR* Process::initPath() DWORD cbNeeded; if (!EnumProcessModulesEx(this->handle, &hMod, sizeof(hMod), &cbNeeded, LIST_MODULES_ALL)) - nResult = 0; + nResult = -1; + // Get Process Path if (GetModuleFileNameEx(this->handle, hMod, szProcessPath, sizeof(szProcessPath) / sizeof(TCHAR)) == 0) - nResult = 0; + nResult = -2; + + // Get Process Name + if (GetModuleBaseName(this->handle, hMod, szProcessName, sizeof(szProcessName) / sizeof(TCHAR)) == 0) + nResult = -3; } else - nResult = 0; - - /*if (hProcess != INVALID_HANDLE_VALUE) - CloseHandle(hProcess);*/ + nResult = -4; - return szProcessPath; + strcpy(this->name, szProcessName); + strcpy(this->path, szProcessPath); } - - -HICON Process::initIcon(BOOLEAN LargeIcon) +void Process::initIcon(BOOLEAN LargeIcon) { SHFILEINFO shFileInfo; @@ -74,15 +47,15 @@ HICON Process::initIcon(BOOLEAN LargeIcon) iconFlag = LargeIcon ? SHGFI_LARGEICON : SHGFI_SMALLICON; if (!SHGetFileInfo(this->path, 0, &shFileInfo, sizeof(SHFILEINFO), SHGFI_ICON | iconFlag)) - return NULL; + return; - return shFileInfo.hIcon; + this->icon = shFileInfo.hIcon; } -TCHAR* Process::initCommandLine() +void Process::initCommandLine() { if (this->handle == NULL) - return NULL; + return; int nResult = 1; PVOID pebAddress; @@ -121,67 +94,61 @@ TCHAR* Process::initCommandLine() commandLineContents = nullptr; } - if (nResult != 1) - return NULL; + return; // throw nResult; - return strCommandLine; + this->commandLine = strCommandLine; } -TCHAR * Process::initOwner() +void Process::initOwner() { if (this->handle == NULL) - return ""; + { + this->owner = NULL; + return; + } int nResult = 1; - TCHAR ownerName[MAX_PATH]; HANDLE tokenHandle = 0; - char name[MAX_PATH], dom[MAX_PATH], tubuf[MAX_PATH], *pret = 0; + TCHAR name[MAX_PATH], dom[MAX_PATH], tubuf[MAX_PATH]; DWORD nlen = MAX_PATH, dlen = MAX_PATH; TOKEN_USER *tokenUser = (TOKEN_USER*)tubuf; - int iUse; - //open the processes token if (!OpenProcessToken(this->handle, TOKEN_QUERY, &tokenHandle)) - nResult = 0; + nResult = -1; //get the SID of the token - - if (!GetTokenInformation(tokenHandle, TokenUser, tokenUser, MAX_PATH, &nlen)) - nResult = 0; + nResult = -2; // domain name of the SID + int iUse; if (!LookupAccountSidA(0, tokenUser->User.Sid, name, &nlen, dom, &dlen, (PSID_NAME_USE)&iUse)) - nResult = 0; + nResult = -3; // copy info to our static buffer - strcpy_s(ownerName, dom); - strcat_s(ownerName, "/"); - strcat_s(ownerName, name); + strcpy(this->owner, dom); + strcat(this->owner, "/"); + strcat(this->owner, name); if (tokenHandle) CloseHandle(tokenHandle); - - if (!nResult) - return ""; - - return ownerName; } -tm Process::initCreateTime() +void Process::initCreateTime() { FILETIME createTime, exitTime, kernelTime, userTime; - GetProcessTimes(this->handle, &createTime, &exitTime, &kernelTime, &userTime); - FILETIME localFileTime; - FileTimeToLocalFileTime(&createTime, &localFileTime); SYSTEMTIME sysTime; + + GetProcessTimes(this->handle, &createTime, &exitTime, &kernelTime, &userTime); + FileTimeToLocalFileTime(&createTime, &localFileTime); FileTimeToSystemTime(&localFileTime, &sysTime); + struct tm tmTime = { 0 }; tmTime.tm_year = sysTime.wYear - 1900; tmTime.tm_mon = sysTime.wMonth - 1; @@ -193,7 +160,7 @@ tm Process::initCreateTime() tmTime.tm_yday = 0; tmTime.tm_isdst = -1; - return tmTime; + this->createTime = tmTime; } HWND Process::getHwndFromPid() @@ -268,9 +235,10 @@ HICON Process::getIcon() BOOLEAN Process::isRunning() { DWORD_PTR dw = 0; + HWND hWnd = getHwndFromPid(); // TimeOut 2sec - if (SendMessageTimeout(this->hWnd, NULL, NULL, NULL, SMTO_NORMAL, 2000, &dw)) + if (SendMessageTimeout(hWnd, NULL, NULL, NULL, SMTO_NORMAL, 2000, &dw)) { return TRUE; // process is running } @@ -346,6 +314,7 @@ int Process::getThreadCount(int ¶mTotalThreadCount, int ¶mCurrentProcess int Process::getNetworkUsage(double &val) { + // TODO : return 1; } @@ -359,11 +328,6 @@ int Process::getMemoryUsage(DWORD &val) DWORD dPrivatePages = 0; DWORD dPageTablePages = 0; - //HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); - - //if (this->handle == NULL) - // nResult = 0; - if (!QueryWorkingSet(this->handle, dWorkingSetPages, sizeof(dWorkingSetPages))) nResult = 0; @@ -414,9 +378,6 @@ int Process::getMemoryUsage(DWORD &val) val = (dTotal - dShared) * 4; //ref - //if (hProcess != INVALID_HANDLE_VALUE) - // CloseHandle(hProcess); - return nResult; } @@ -433,11 +394,6 @@ int Process::getCpuUsage(double &val) GetSystemInfo(&sysInfo); int numProcessors = sysInfo.dwNumberOfProcessors; - //HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid); - - // if (this->handle == NULL) - // nResult = 0; - int count = 0; while (true) { @@ -472,9 +428,6 @@ int Process::getCpuUsage(double &val) count++; } - //if (hProcess != INVALID_HANDLE_VALUE) - // CloseHandle(hProcess); - return nResult; } diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index 7bf0129..efbc61c 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -30,56 +30,70 @@ class Process DWORD pid; HICON icon = NULL; HANDLE handle = NULL; - HWND hWnd = NULL; + // HWND hWnd = NULL; Call only when needed TCHAR *commandLine = NULL; - TCHAR name[MAX_PATH]; - TCHAR path[MAX_PATH]; - TCHAR owner[MAX_PATH]; + TCHAR *name = new TCHAR[MAX_PATH]; + TCHAR *path = new TCHAR[MAX_PATH]; + TCHAR *owner = new TCHAR[MAX_PATH]; tm createTime = { 0 }; private: HWND getHwndFromPid(); HANDLE getHandleFromPid(); - HICON initIcon(BOOLEAN LargeIcon = FALSE); - TCHAR* initName(); - TCHAR* initPath(); - TCHAR* initCommandLine(); - TCHAR* initOwner(); - tm initCreateTime(); + void initIcon(BOOLEAN LargeIcon = FALSE); + void initFileNamePath(); + void initOwner(); + void initCommandLine(); + void initCreateTime(); public: Process(const DWORD pid = 0) : pid(pid) { // fixed value Init this->handle = getHandleFromPid(); // 0.005 ~ 0.01ms - this->hWnd = getHwndFromPid(); // 0.2 ~ 3.0 ms - - strcpy_s(this->owner, initOwner()); // 0.15 ~ 0.08 ms - strcpy_s(this->name, initName()); // 0.05 ~ 1.3 ms - strcpy_s(this->path, initPath()); // 0.4 ~ 0.5 ms - this->commandLine = initCommandLine(); + // this->hWnd = getHwndFromPid(); // 0.2 ~ 3.0 ms Call only when needed + initOwner(); + initFileNamePath(); + initCommandLine(); + initCreateTime(); + // this->icon = initIcon(TRUE); // cpu time 69.4% usage - /* cout << "Owner : " << getOwner() << endl; + cout << "Owner : " << getOwner() << endl; cout << "Name : " << getName() << endl; cout << "Path : " << getPath() << endl; cout << "Cmd : " << getCommandLine() << endl; - cout << "=========================================" << endl<< endl;*/ - - // this->icon = initIcon(TRUE); // cpu time 69.4% usage - this->createTime = initCreateTime(); + cout << "=========================================" << endl<< endl; } ~Process() { - if (handle != INVALID_HANDLE_VALUE) - CloseHandle(handle); + if (this->handle != INVALID_HANDLE_VALUE) + CloseHandle(this->handle); + + if (this->name) + { + delete[] this->name; + this->name = nullptr; + } + + if (this->path) + { + delete[] this->path; + this->path = nullptr; + } + + if (this->owner) + { + delete[] this->owner; + this->owner = nullptr; + } - if (commandLine) + if (this->commandLine) { - delete[] commandLine; - commandLine = nullptr; + delete[] this->commandLine; + this->commandLine = nullptr; } - if (icon) - DestroyIcon(icon); + if (this->icon) + DestroyIcon(this->icon); } BOOLEAN isRunning(); From 5baa9dd96cde231428de78880c9e15208c306814 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Fri, 14 Jul 2017 19:13:44 +0900 Subject: [PATCH 32/84] Memory Leak Solved --- .../data/DataManager.cpp | 13 ++++---- .../process/Process.cpp | 31 +++++++++---------- .../process/Process.hpp | 18 +++-------- 3 files changed, 26 insertions(+), 36 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 20f77b2..05e229a 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -11,14 +11,12 @@ int main() #ifdef _DEBUG _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); // ޸ ã - //_CrtSetBreakAlloc(164); + //_CrtSetBreakAlloc(163); #endif DataManager dataManager = DataManager(); SystemInfo* systemInfo = dataManager.getSystem(); - - system("pause"); } @@ -47,9 +45,12 @@ void DataManager::Update() { int pid = processListObj.getPID(i); systemInfo->process[i] = new Process(pid); - // cout << systemInfo->process[i]->getName() << endl; - // cout << systemInfo->process[i]->getCommandLine() << endl; - // cout << systemInfo->process[i]->getPath() << endl; + + /*cout << "Owner : " << systemInfo->process[i]->getOwner() << endl; + cout << "Name : " << systemInfo->process[i]->getName() << endl; + cout << "Path : " << systemInfo->process[i]->getPath() << endl; + cout << "Cmd : " << systemInfo->process[i]->getCommandLine() << endl; + cout << "=========================================" << endl<< endl;*/ } // Cpu Usage Update diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 1c61f9e..b078d74 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -33,25 +33,12 @@ void Process::initFileNamePath() else nResult = -4; + this->name = new TCHAR[MAX_PATH]; + this->path = new TCHAR[MAX_PATH]; strcpy(this->name, szProcessName); strcpy(this->path, szProcessPath); } -void Process::initIcon(BOOLEAN LargeIcon) -{ - SHFILEINFO shFileInfo; - - ZeroMemory(&shFileInfo, sizeof(SHFILEINFO)); - - ULONG iconFlag; - iconFlag = LargeIcon ? SHGFI_LARGEICON : SHGFI_SMALLICON; - - if (!SHGetFileInfo(this->path, 0, &shFileInfo, sizeof(SHFILEINFO), SHGFI_ICON | iconFlag)) - return; - - this->icon = shFileInfo.hIcon; -} - void Process::initCommandLine() { if (this->handle == NULL) @@ -129,6 +116,7 @@ void Process::initOwner() if (!LookupAccountSidA(0, tokenUser->User.Sid, name, &nlen, dom, &dlen, (PSID_NAME_USE)&iUse)) nResult = -3; + this->owner = new TCHAR[MAX_PATH]; // copy info to our static buffer strcpy(this->owner, dom); strcat(this->owner, "/"); @@ -227,9 +215,18 @@ TCHAR * Process::getOwner() return ""; } -HICON Process::getIcon() +HICON Process::getIcon(BOOLEAN LargeIcon) { - return this->icon; + SHFILEINFO shFileInfo; + ZeroMemory(&shFileInfo, sizeof(SHFILEINFO)); + + ULONG iconFlag; + iconFlag = LargeIcon ? SHGFI_LARGEICON : SHGFI_SMALLICON; + + if (!SHGetFileInfo(this->path, 0, &shFileInfo, sizeof(SHFILEINFO), SHGFI_ICON | iconFlag)) + return NULL; + + return shFileInfo.hIcon; } BOOLEAN Process::isRunning() diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index efbc61c..055dada 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -32,14 +32,13 @@ class Process HANDLE handle = NULL; // HWND hWnd = NULL; Call only when needed TCHAR *commandLine = NULL; - TCHAR *name = new TCHAR[MAX_PATH]; - TCHAR *path = new TCHAR[MAX_PATH]; - TCHAR *owner = new TCHAR[MAX_PATH]; + TCHAR *name = NULL; + TCHAR *path = NULL; + TCHAR *owner = NULL; tm createTime = { 0 }; private: HWND getHwndFromPid(); HANDLE getHandleFromPid(); - void initIcon(BOOLEAN LargeIcon = FALSE); void initFileNamePath(); void initOwner(); void initCommandLine(); @@ -54,13 +53,7 @@ class Process initFileNamePath(); initCommandLine(); initCreateTime(); - // this->icon = initIcon(TRUE); // cpu time 69.4% usage - - cout << "Owner : " << getOwner() << endl; - cout << "Name : " << getName() << endl; - cout << "Path : " << getPath() << endl; - cout << "Cmd : " << getCommandLine() << endl; - cout << "=========================================" << endl<< endl; + this->icon = getIcon(TRUE); // cpu time 69.4% usage } ~Process() @@ -102,8 +95,7 @@ class Process TCHAR* getPath(); TCHAR* getCommandLine(); TCHAR* getOwner(); - HICON getIcon(); - + HICON getIcon(BOOLEAN LargeIcon); int getHandleCount(DWORD &val); int getThreadCount(int ¶mTotalThreadCount, int ¶mCurrentProcessThreadCount); int getNetworkUsage(double &val); From a829ab79e1fd271b4d285f6e059040ecb863770b Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Fri, 14 Jul 2017 19:22:17 +0900 Subject: [PATCH 33/84] Replace a GetIcon Function, High Resolution ICON get out --- .../process/Process.cpp | 28 ++++++++++++++----- .../process/Process.hpp | 10 ++++--- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index b078d74..9d4075b 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -215,18 +215,32 @@ TCHAR * Process::getOwner() return ""; } + + HICON Process::getIcon(BOOLEAN LargeIcon) { - SHFILEINFO shFileInfo; - ZeroMemory(&shFileInfo, sizeof(SHFILEINFO)); + /* + Get High Resolution ICON + Vista and higer, 256 * 256 + lower 48 * 48 + */ + + SHFILEINFO sfi; + if (!SHGetFileInfo(this->path, 0, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX)) return NULL; + + // Get the jumbo image list + IImageList *piml; + if (FAILED(SHGetImageList(SHIL_JUMBO, IID_PPV_ARGS(&piml)))) + return NULL; - ULONG iconFlag; - iconFlag = LargeIcon ? SHGFI_LARGEICON : SHGFI_SMALLICON; + // Extract an icon + HICON hico; + piml->GetIcon(sfi.iIcon, 0x00000001, &hico); - if (!SHGetFileInfo(this->path, 0, &shFileInfo, sizeof(SHFILEINFO), SHGFI_ICON | iconFlag)) - return NULL; + // Clean up + piml->Release(); - return shFileInfo.hIcon; + return hico; } BOOLEAN Process::isRunning() diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index 055dada..cfbb25d 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -7,6 +7,7 @@ #include #include "Winternl.h" #include +#include #include "../util/StopWatch.hpp" #pragma comment(lib, "psapi.lib") @@ -28,7 +29,6 @@ class Process { private: DWORD pid; - HICON icon = NULL; HANDLE handle = NULL; // HWND hWnd = NULL; Call only when needed TCHAR *commandLine = NULL; @@ -53,7 +53,7 @@ class Process initFileNamePath(); initCommandLine(); initCreateTime(); - this->icon = getIcon(TRUE); // cpu time 69.4% usage + // this->icon = getIcon(TRUE); // cpu time 81.4% usage } ~Process() @@ -85,8 +85,10 @@ class Process this->commandLine = nullptr; } - if (this->icon) - DestroyIcon(this->icon); + /* + if (this->icon) + DestroyIcon(this->icon); + */ } BOOLEAN isRunning(); From be924c5ad2718eb8c557e8cde8978c68470d4297 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Fri, 14 Jul 2017 20:25:24 +0900 Subject: [PATCH 34/84] Fixed Error getIcon function --- .../process/Process.cpp | 24 +++++++++++-------- .../process/Process.hpp | 14 +++++++---- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 9d4075b..4bcb0ad 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -226,21 +226,25 @@ HICON Process::getIcon(BOOLEAN LargeIcon) */ SHFILEINFO sfi; - if (!SHGetFileInfo(this->path, 0, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX)) return NULL; + if (!SHGetFileInfo(this->path, 0, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX)) + return NULL; - // Get the jumbo image list - IImageList *piml; - if (FAILED(SHGetImageList(SHIL_JUMBO, IID_PPV_ARGS(&piml)))) + // Retrieve the system image list. + // To get the 48x48 icons, use SHIL_EXTRALARGE + // To get the 256x256 icons (Vista only), use SHIL_JUMBO + HIMAGELIST* imageList; + if (SHGetImageList(SHIL_JUMBO, IID_IImageList, (void**)&imageList) != S_OK) return NULL; - // Extract an icon - HICON hico; - piml->GetIcon(sfi.iIcon, 0x00000001, &hico); + // Get the icon we need from the list. Note that the HIMAGELIST we retrieved + // earlier needs to be casted to the IImageList interface before use. + HICON hIcon; + HRESULT hResult = ((IImageList*)imageList)->GetIcon(sfi.iIcon, ILD_TRANSPARENT, &hIcon); - // Clean up - piml->Release(); + if (hResult == S_OK) + return hIcon; - return hico; + return NULL; } BOOLEAN Process::isRunning() diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index cfbb25d..2be457f 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -1,15 +1,21 @@ #ifndef _PROCESS_H_ #define _PROCESS_H_ -#include +#include +#include +#include +#include +#include + #include #include #include -#include "Winternl.h" +#include #include -#include #include "../util/StopWatch.hpp" +#include + #pragma comment(lib, "psapi.lib") using namespace std; @@ -53,7 +59,7 @@ class Process initFileNamePath(); initCommandLine(); initCreateTime(); - // this->icon = getIcon(TRUE); // cpu time 81.4% usage + //this->icon = getIcon(TRUE); // cpu time 81.4% usage } ~Process() From 8f8dce529076a17ad3070e00e65bf4cfd3ba75f3 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Fri, 14 Jul 2017 21:12:42 +0900 Subject: [PATCH 35/84] Solved a Buffer Overflow --- .../ServerMonitoringService/data/DataManager.cpp | 9 ++++++--- .../ServerMonitoringService/process/Process.cpp | 6 +++--- .../ServerMonitoringService/process/Process.hpp | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 05e229a..6c90cc5 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -11,7 +11,7 @@ int main() #ifdef _DEBUG _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); // ޸ ã - //_CrtSetBreakAlloc(163); + // _CrtSetBreakAlloc(165); #endif DataManager dataManager = DataManager(); @@ -32,7 +32,11 @@ void DataManager::Update() if (systemInfo->process) { for (int i = 0; i < systemInfo->processCount; i++) + { delete systemInfo->process[i]; + systemInfo->process[i] = nullptr; + } + delete[] systemInfo->process; systemInfo->process = nullptr; } @@ -45,7 +49,6 @@ void DataManager::Update() { int pid = processListObj.getPID(i); systemInfo->process[i] = new Process(pid); - /*cout << "Owner : " << systemInfo->process[i]->getOwner() << endl; cout << "Name : " << systemInfo->process[i]->getName() << endl; cout << "Path : " << systemInfo->process[i]->getPath() << endl; @@ -100,7 +103,7 @@ void DataManager::Start() if (this->tqTimer == NULL) { this->tqTimer = new TQTimer(std::bind(&DataManager::CallbackProc, this)); - this->tqTimer->setInterval(1000); // 100Sec + this->tqTimer->setInterval(10); // 100Sec this->tqTimer->Start(); } } diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 4bcb0ad..999b72c 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -118,9 +118,9 @@ void Process::initOwner() this->owner = new TCHAR[MAX_PATH]; // copy info to our static buffer - strcpy(this->owner, dom); - strcat(this->owner, "/"); - strcat(this->owner, name); + strcpy_s(this->owner, MAX_PATH, dom); + strcat_s(this->owner, MAX_PATH, "/"); + strcat_s(this->owner, MAX_PATH, name); if (tokenHandle) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index 2be457f..6f078ec 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -36,7 +36,7 @@ class Process private: DWORD pid; HANDLE handle = NULL; - // HWND hWnd = NULL; Call only when needed + // HWND hWnd = NULL; // Call only when needed TCHAR *commandLine = NULL; TCHAR *name = NULL; TCHAR *path = NULL; From 19d14223136b920a87c1cf117d54967cff85bb43 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Fri, 14 Jul 2017 23:39:00 +0900 Subject: [PATCH 36/84] Replace a non-safe function strcpy() -> safe function strcpy_s() --- .../ServerMonitoringService.vcxproj | 6 + .../ServerMonitoringService.vcxproj.filters | 12 ++ .../data/DataManager.cpp | 22 +-- .../data/DataManager.hpp | 12 +- .../ServerMonitoringService/main.cpp | 32 ++- .../ServerMonitoringService/main.hpp | 36 ++++ .../process/Process.cpp | 5 +- .../ServerMonitoringService/stdafx.cpp | 1 + .../ServerMonitoringService/stdafx.h | 44 +++++ .../system/SystemNetwork.cpp | 17 -- .../ServerMonitoringService/util/CSerivce.hpp | 38 ++++ .../ServerMonitoringService/util/CSerive.cpp | 182 ++++++++++++++++++ 12 files changed, 338 insertions(+), 69 deletions(-) create mode 100644 ServerMonitoringService/ServerMonitoringService/stdafx.cpp create mode 100644 ServerMonitoringService/ServerMonitoringService/stdafx.h create mode 100644 ServerMonitoringService/ServerMonitoringService/util/CSerivce.hpp create mode 100644 ServerMonitoringService/ServerMonitoringService/util/CSerive.cpp diff --git a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj index 56c8ef8..8bdae59 100644 --- a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj +++ b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj @@ -82,6 +82,7 @@ Level3 Disabled false + NotUsing HighestAvailable @@ -107,6 +108,7 @@ true true false + Use true @@ -122,6 +124,8 @@ + + @@ -139,6 +143,8 @@ + + diff --git a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters index 60f659a..a3a4372 100644 --- a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters +++ b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters @@ -75,6 +75,12 @@ 헤더 파일 + + 헤더 파일 + + + 헤더 파일 + @@ -122,5 +128,11 @@ 소스 파일 + + 소스 파일 + + + 소스 파일 + \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 6c90cc5..2c16b8e 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -1,25 +1,5 @@ #include "DataManager.hpp" -#ifdef _DEBUG -#include -#define new new(_NORMAL_BLOCK, __FILE__, __LINE__) -#endif - -int main() -{ - // ޸ -#ifdef _DEBUG - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - // ޸ ã - // _CrtSetBreakAlloc(165); -#endif - - DataManager dataManager = DataManager(); - SystemInfo* systemInfo = dataManager.getSystem(); - - system("pause"); -} - void DataManager::Update() { StopWatch stopWatch; @@ -103,7 +83,7 @@ void DataManager::Start() if (this->tqTimer == NULL) { this->tqTimer = new TQTimer(std::bind(&DataManager::CallbackProc, this)); - this->tqTimer->setInterval(10); // 100Sec + this->tqTimer->setInterval(200); // 100Sec this->tqTimer->Start(); } } diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index 7063916..08d2308 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -65,14 +65,10 @@ class DataManager { systemInfo = new SystemInfo; // fixed variable - strcpy(systemInfo->cpuModel, systemCpu.getCpuModeInfo()); - strcpy(systemInfo->computerName, systemOS.getComputerName()); - strcpy(systemInfo->userName, systemOS.getUserName()); - strcpy(systemInfo->osVersion, systemOS.getOSVersionName()); - /*systemInfo->cpuModel = systemCpu.getCpuModeInfo(); - systemInfo->computerName = systemOS.getComputerName(); - systemInfo->userName = systemOS.getUserName(); - systemInfo->osVersion = systemOS.getOSVersionName();*/ + strcpy_s(systemInfo->cpuModel, systemCpu.getCpuModeInfo()); + strcpy_s(systemInfo->computerName, systemOS.getComputerName()); + strcpy_s(systemInfo->userName, systemOS.getUserName()); + strcpy_s(systemInfo->osVersion, systemOS.getOSVersionName()); // first Call this->Update(); diff --git a/ServerMonitoringService/ServerMonitoringService/main.cpp b/ServerMonitoringService/ServerMonitoringService/main.cpp index e0f83b0..db21696 100644 --- a/ServerMonitoringService/ServerMonitoringService/main.cpp +++ b/ServerMonitoringService/ServerMonitoringService/main.cpp @@ -1,15 +1,4 @@ -#include -#include -#include -#include "system/SystemNetwork.hpp" -#include "network socket/NetworkManager.hpp" - -#define DIV 1024 // KB -#define DIV_TWO 1024 / 1024 // MB -#define DIV_THREE 1024 / 1024 / 1024 // GB - - -using namespace std; +#include "main.hpp" void onShellExecute() { @@ -38,23 +27,25 @@ void onShellExecute() // else if (dwStatus == ERROR_FILE_NOT_FOUND) { // TODO : lpFile is not founded; } } } -#include "process/Process.hpp" void mainStart() { - //Process pro = Process(6908); - /* - NetworkManager *networkManager; - networkManager = new NetworkManager(); - networkManager->Init(); - networkManager->Start();*/ + DataManager dataManager = DataManager(); + SystemInfo* systemInfo = dataManager.getSystem(); system("pause"); } -/* int main(int argc, char* argv[]) { + // ޸ +#ifdef _DEBUG + _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); + // ޸ ã + // _CrtSetBreakAlloc(165); +#endif + + if (IsUserAnAdmin()) { mainStart(); @@ -66,4 +57,3 @@ int main(int argc, char* argv[]) return 0; } -*/ \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/main.hpp b/ServerMonitoringService/ServerMonitoringService/main.hpp index d957309..f76aba0 100644 --- a/ServerMonitoringService/ServerMonitoringService/main.hpp +++ b/ServerMonitoringService/ServerMonitoringService/main.hpp @@ -1,4 +1,40 @@ #ifndef _MAIN_H_ #define _MAIN_H_ +#include +#include +#include +#include "data/DataManager.hpp" + +#ifdef _DEBUG +#include +#define new new(_NORMAL_BLOCK, __FILE__, __LINE__) +#endif + +using namespace std; + +#define KB 1024 // KB +#define MB 1024 / 1024 // MB +#define GB 1024 / 1024 / 1024 // GB + + +// Internal name of the service +#define SERVICE_NAME TEXT("Service Monitoring Service Agent") + +// Displayed name of the service +#define SERVICE_DISPLAY_NAME TEXT("Service Monitoring Service") + +// Service start options. +#define SERVICE_START_TYPE SERVICE_DEMAND_START + +// List of service dependencies - "dep1\0dep2\0\0" +#define SERVICE_DEPENDENCIES TEXT("") + +// The name of the account under which the service should run +#define SERVICE_ACCOUNT TEXT("NT AUTHORITY\\LocalService") + +// The password to the service account name +#define SERVICE_PASSWORD NULL + + #endif \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 999b72c..9253f97 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -35,8 +35,8 @@ void Process::initFileNamePath() this->name = new TCHAR[MAX_PATH]; this->path = new TCHAR[MAX_PATH]; - strcpy(this->name, szProcessName); - strcpy(this->path, szProcessPath); + strcpy_s(this->name, MAX_PATH, szProcessName); + strcpy_s(this->path, MAX_PATH, szProcessPath); } void Process::initCommandLine() @@ -263,6 +263,7 @@ BOOLEAN Process::isRunning() return FALSE; // process is not responsed } } + return TRUE; } int Process::getHandleCount(DWORD &val) diff --git a/ServerMonitoringService/ServerMonitoringService/stdafx.cpp b/ServerMonitoringService/ServerMonitoringService/stdafx.cpp new file mode 100644 index 0000000..1577c4e --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/stdafx.cpp @@ -0,0 +1 @@ +#include "stdafx.h" \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/stdafx.h b/ServerMonitoringService/ServerMonitoringService/stdafx.h new file mode 100644 index 0000000..f8e768e --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/stdafx.h @@ -0,0 +1,44 @@ +#ifndef _STDAFX_H_ +#define _STDAFX_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef _WINDOWS_ +#include +#include +#endif + +// Process.hpp +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +#pragma comment(lib, "ws2_32.lib") // WinSock2 Lib +#pragma comment(lib, "IPHLPAPI.lib") +#pragma comment(lib, "psapi.lib") + +#ifdef _DEBUG +#include +#define new new(_NORMAL_BLOCK, __FILE__, __LINE__) +#endif + +#endif diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp b/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp index e8b6f3e..ff9ac25 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemNetwork.cpp @@ -1,22 +1,5 @@ #include "SystemNetwork.hpp" -/* -int main() -{ - ULONG count; - SystemNetwork sn; - NetworkConnection *networkConnection; - sn.getConnectionTable(networkConnection, count); - - for (ULONG i = 0; i < count; i++) - { - cout << networkConnection[i].processID << endl; - } - - system("pause"); -} -*/ - TCHAR* SystemNetwork::getInterfaceTypeName(IP_ADAPTER_INFO paramAdapterInfo) { switch (paramAdapterInfo.Type) { diff --git a/ServerMonitoringService/ServerMonitoringService/util/CSerivce.hpp b/ServerMonitoringService/ServerMonitoringService/util/CSerivce.hpp new file mode 100644 index 0000000..18fee57 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/util/CSerivce.hpp @@ -0,0 +1,38 @@ +#ifndef _SERVICE_H_ +#define _SERVICE_H_ + +#include +#include +#include + + +using namespace std; + +class CService +{ +public: + CService(VOID); + virtual ~CService(VOID); + +private: + SERVICE_STATUS mServiceStatus; + SERVICE_STATUS_HANDLE mServiceStatusHandle; + + TCHAR mServiceName[MAX_PATH]; + +protected: + virtual VOID OnStarted(VOID) = 0; + virtual VOID OnStopped(VOID) = 0; + +public: + BOOL Install(LPCTSTR serviceName); + BOOL Uninstall(LPCTSTR serviceName); + + BOOL Begin(LPTSTR serviceName); + BOOL End(VOID); + + VOID RunCallback(DWORD argumentCount, LPTSTR *arguments); + VOID CtrlHandlerCallback(DWORD opCode); +}; + +#endif \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/util/CSerive.cpp b/ServerMonitoringService/ServerMonitoringService/util/CSerive.cpp new file mode 100644 index 0000000..33c75f3 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/util/CSerive.cpp @@ -0,0 +1,182 @@ +#include "CSerivce.hpp" + +CService *gOwner = NULL; + +VOID WINAPI RunCallback(DWORD argumentCount, LPTSTR *arguments) +{ + gOwner->RunCallback(argumentCount, arguments); +} + +VOID WINAPI CtrlHandlerCallback(DWORD opCode) +{ + gOwner->CtrlHandlerCallback(opCode); +} + +CService::CService(VOID) +{ + ZeroMemory(mServiceName, sizeof(mServiceName)); + + gOwner = this; +} + +CService::~CService(VOID) +{ +} + +VOID CService::RunCallback(DWORD argumentCount, LPTSTR *arguments) +{ + DWORD Status; + + mServiceStatus.dwServiceType = SERVICE_WIN32; + mServiceStatus.dwCurrentState = SERVICE_START_PENDING; + mServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_PAUSE_CONTINUE; + mServiceStatus.dwWin32ExitCode = 0; + mServiceStatus.dwServiceSpecificExitCode = 0; + mServiceStatus.dwCheckPoint = 0; + mServiceStatus.dwWaitHint = 0; + + mServiceStatusHandle = RegisterServiceCtrlHandler(mServiceName, ::CtrlHandlerCallback); + + if (mServiceStatusHandle == (SERVICE_STATUS_HANDLE)0) + return; + + Status = NO_ERROR; + + mServiceStatus.dwCurrentState = SERVICE_RUNNING; + mServiceStatus.dwCheckPoint = 0; + mServiceStatus.dwWaitHint = 0; + + if (!SetServiceStatus(mServiceStatusHandle, &mServiceStatus)) + return; +} + +VOID CService::CtrlHandlerCallback(DWORD opCode) +{ + switch (opCode) + { + case SERVICE_CONTROL_PAUSE: + mServiceStatus.dwCurrentState = SERVICE_PAUSED; + break; + case SERVICE_CONTROL_CONTINUE: + mServiceStatus.dwCurrentState = SERVICE_RUNNING; + break; + case SERVICE_CONTROL_STOP: + mServiceStatus.dwWin32ExitCode = 0; + mServiceStatus.dwCurrentState = SERVICE_STOPPED; + mServiceStatus.dwCheckPoint = 0; + mServiceStatus.dwWaitHint = 0; + break; + case SERVICE_CONTROL_INTERROGATE: + break; + } + + if (!SetServiceStatus(mServiceStatusHandle, &mServiceStatus)) + return; +} + +BOOL CService::Install(LPCTSTR serviceName) +{ + TCHAR ServiceFileName[MAX_PATH] = { 0, }; + SC_HANDLE ServiceControlManager = NULL; + SC_HANDLE ServiceHandle = NULL; + + if (!serviceName) + return FALSE; + + ServiceFileName[0] = '"'; + GetModuleFileName(NULL, ServiceFileName + 1, MAX_PATH - 1); + _tcscat(ServiceFileName, TEXT("\"")); + + ServiceControlManager = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE); + if (!ServiceControlManager) + return FALSE; + + ServiceHandle = CreateService(ServiceControlManager, + serviceName, + serviceName, + SERVICE_ALL_ACCESS, + SERVICE_WIN32_OWN_PROCESS, + SERVICE_DEMAND_START, + SERVICE_ERROR_NORMAL, + ServiceFileName, + NULL, + NULL, + NULL, + NULL, + NULL); + + if (!ServiceHandle) + { + CloseServiceHandle(ServiceControlManager); + return FALSE; + } + + CloseServiceHandle(ServiceHandle); + CloseServiceHandle(ServiceControlManager); + + return TRUE; +} + +BOOL CService::Uninstall(LPCTSTR serviceName) +{ + SC_HANDLE ServiceControlManager = NULL; + SC_HANDLE ServiceHandle = NULL; + + if (!serviceName) + return FALSE; + + ServiceControlManager = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE); + if (!ServiceControlManager) + return FALSE; + + ServiceHandle = OpenService(ServiceControlManager, serviceName, DELETE); + if (!ServiceHandle) + { + CloseServiceHandle(ServiceControlManager); + return FALSE; + } + + if (!DeleteService(ServiceHandle)) + { + CloseServiceHandle(ServiceHandle); + CloseServiceHandle(ServiceControlManager); + + return FALSE; + } + + CloseServiceHandle(ServiceHandle); + CloseServiceHandle(ServiceControlManager); + + return TRUE; +} + +BOOL CService::Begin(LPTSTR serviceName) +{ + if (!serviceName) + return FALSE; + + SERVICE_TABLE_ENTRY DispatchTable[] = + { + { serviceName, ::RunCallback }, + { NULL, NULL } + }; + + _tcscpy(mServiceName, serviceName); + + OnStarted(); + + if (!StartServiceCtrlDispatcher(DispatchTable)) + { + cout << "## Debug console mode ##\n" << endl; + getchar(); + } + + return TRUE; +} + +BOOL CService::End(VOID) +{ + OnStopped(); + + return TRUE; +} \ No newline at end of file From 9c8b407118c0e5c719761f1c80b257bf3b2cf0b0 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Fri, 14 Jul 2017 23:41:59 +0900 Subject: [PATCH 37/84] Remove a stdafx.h --- .../ServerMonitoringService.vcxproj | 2 - .../ServerMonitoringService.vcxproj.filters | 6 --- .../ServerMonitoringService/stdafx.cpp | 1 - .../ServerMonitoringService/stdafx.h | 44 ------------------- 4 files changed, 53 deletions(-) delete mode 100644 ServerMonitoringService/ServerMonitoringService/stdafx.cpp delete mode 100644 ServerMonitoringService/ServerMonitoringService/stdafx.h diff --git a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj index 8bdae59..c4d30d0 100644 --- a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj +++ b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj @@ -125,7 +125,6 @@ - @@ -144,7 +143,6 @@ - diff --git a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters index a3a4372..27d7586 100644 --- a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters +++ b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters @@ -78,9 +78,6 @@ 헤더 파일 - - 헤더 파일 - @@ -131,8 +128,5 @@ 소스 파일 - - 소스 파일 - \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/stdafx.cpp b/ServerMonitoringService/ServerMonitoringService/stdafx.cpp deleted file mode 100644 index 1577c4e..0000000 --- a/ServerMonitoringService/ServerMonitoringService/stdafx.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "stdafx.h" \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/stdafx.h b/ServerMonitoringService/ServerMonitoringService/stdafx.h deleted file mode 100644 index f8e768e..0000000 --- a/ServerMonitoringService/ServerMonitoringService/stdafx.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef _STDAFX_H_ -#define _STDAFX_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef _WINDOWS_ -#include -#include -#endif - -// Process.hpp -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -#pragma comment(lib, "ws2_32.lib") // WinSock2 Lib -#pragma comment(lib, "IPHLPAPI.lib") -#pragma comment(lib, "psapi.lib") - -#ifdef _DEBUG -#include -#define new new(_NORMAL_BLOCK, __FILE__, __LINE__) -#endif - -#endif From 74da3a15752ec83a77be410d3b5ee345ff27383a Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 01:53:49 +0900 Subject: [PATCH 38/84] :rocket: Add a Json.lib --- .../data/DataManager.cpp | 16 +++++++++++++++- .../json/json_vc71_libmt.lib | Bin 0 -> 4584328 bytes .../ServerMonitoringService/main.hpp | 1 + .../process/Process.cpp | 2 -- .../ServerMonitoringService/util/CSerivce.hpp | 1 - 5 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 ServerMonitoringService/ServerMonitoringService/json/json_vc71_libmt.lib diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 2c16b8e..c3cc766 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -29,6 +29,20 @@ void DataManager::Update() { int pid = processListObj.getPID(i); systemInfo->process[i] = new Process(pid); + systemInfo->process[i]->getOwner(); + systemInfo->process[i]->getName(); + systemInfo->process[i]->getPath(); + systemInfo->process[i]->getCommandLine(); + + double cpuVal; + DWORD memoryVal; + DWORD handleCount; + int toTalCount, currentCount; + systemInfo->process[i]->getCpuUsage(cpuVal); + systemInfo->process[i]->getMemoryUsage(memoryVal); + systemInfo->process[i]->getHandleCount(handleCount); + systemInfo->process[i]->getThreadCount(toTalCount, currentCount); + /*cout << "Owner : " << systemInfo->process[i]->getOwner() << endl; cout << "Name : " << systemInfo->process[i]->getName() << endl; cout << "Path : " << systemInfo->process[i]->getPath() << endl; @@ -83,7 +97,7 @@ void DataManager::Start() if (this->tqTimer == NULL) { this->tqTimer = new TQTimer(std::bind(&DataManager::CallbackProc, this)); - this->tqTimer->setInterval(200); // 100Sec + this->tqTimer->setInterval(1000); // 1Sec this->tqTimer->Start(); } } diff --git a/ServerMonitoringService/ServerMonitoringService/json/json_vc71_libmt.lib b/ServerMonitoringService/ServerMonitoringService/json/json_vc71_libmt.lib new file mode 100644 index 0000000000000000000000000000000000000000..2a6299c3aafd31986d0ea046fa74f6f1814e3501 GIT binary patch literal 4584328 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%0AeXvw}k5AoDBM^Lqg`_5Q(pGb%_Jw(pzA(QNV* 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

kK&^Qfzhh)IPWa7+Vx-oFSqJS92 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

%Sj&Vu<6-N-kD>AIti$=}DF!nru+7$@eCY__e~ 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%0D2H=aATGe)> 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

)a0_ple?$f{;m^wvUQ;wa&8s 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%0Dq))?O2CW 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

XB{8t7O5Q50Ye0oDvs8M2RHx}ygSD$iWTAA$ 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 !!AK-!9aD!$rpj(uWjCm@-2$Cv`b}r~ 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%0A)c^x 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%0Dea2dEaH6 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

VRbytMZ1^^BpRCdLE&k?@K$T{zo0K%;J|h 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

S6 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Ðd=e8jJtiSLx&h-dT#&CMJ3TLf~%(MzHxL$IRa&2 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 #include #include "data/DataManager.hpp" +#include "util/CSerivce.hpp" #ifdef _DEBUG #include diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 9253f97..df82357 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -215,8 +215,6 @@ TCHAR * Process::getOwner() return ""; } - - HICON Process::getIcon(BOOLEAN LargeIcon) { /* diff --git a/ServerMonitoringService/ServerMonitoringService/util/CSerivce.hpp b/ServerMonitoringService/ServerMonitoringService/util/CSerivce.hpp index 18fee57..c5bcadf 100644 --- a/ServerMonitoringService/ServerMonitoringService/util/CSerivce.hpp +++ b/ServerMonitoringService/ServerMonitoringService/util/CSerivce.hpp @@ -19,7 +19,6 @@ class CService SERVICE_STATUS_HANDLE mServiceStatusHandle; TCHAR mServiceName[MAX_PATH]; - protected: virtual VOID OnStarted(VOID) = 0; virtual VOID OnStopped(VOID) = 0; From a9c2ab7d244142de067564a6a901d03f636847d4 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 01:55:38 +0900 Subject: [PATCH 39/84] :rocket: Replace a Json.lib add in project --- .../ServerMonitoringService/ServerMonitoringService.vcxproj | 3 +++ .../ServerMonitoringService.vcxproj.filters | 3 +++ 2 files changed, 6 insertions(+) diff --git a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj index c4d30d0..43de15e 100644 --- a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj +++ b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj @@ -152,6 +152,9 @@ + + + diff --git a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters index 27d7586..e67e4e2 100644 --- a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters +++ b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters @@ -129,4 +129,7 @@ 소스 파일 + + + \ No newline at end of file From 512ce4363d78ec15500379ec95f5274753681216 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 02:00:41 +0900 Subject: [PATCH 40/84] :rocket: Add a Json Library --- .../ServerMonitoringService.vcxproj | 8 + .../ServerMonitoringService.vcxproj.filters | 24 + .../ServerMonitoringService/json/autolink.h | 19 + .../ServerMonitoringService/json/config.h | 43 + .../ServerMonitoringService/json/features.h | 42 + .../ServerMonitoringService/json/forwards.h | 39 + .../ServerMonitoringService/json/json.h | 10 + .../ServerMonitoringService/json/reader.h | 196 +++ .../ServerMonitoringService/json/value.h | 1069 +++++++++++++++++ .../ServerMonitoringService/json/writer.h | 174 +++ 10 files changed, 1624 insertions(+) create mode 100644 ServerMonitoringService/ServerMonitoringService/json/autolink.h create mode 100644 ServerMonitoringService/ServerMonitoringService/json/config.h create mode 100644 ServerMonitoringService/ServerMonitoringService/json/features.h create mode 100644 ServerMonitoringService/ServerMonitoringService/json/forwards.h create mode 100644 ServerMonitoringService/ServerMonitoringService/json/json.h create mode 100644 ServerMonitoringService/ServerMonitoringService/json/reader.h create mode 100644 ServerMonitoringService/ServerMonitoringService/json/value.h create mode 100644 ServerMonitoringService/ServerMonitoringService/json/writer.h diff --git a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj index 43de15e..07a44df 100644 --- a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj +++ b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj @@ -118,6 +118,14 @@ + + + + + + + + diff --git a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters index e67e4e2..ee7bda8 100644 --- a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters +++ b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters @@ -78,6 +78,30 @@ 헤더 파일 + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + diff --git a/ServerMonitoringService/ServerMonitoringService/json/autolink.h b/ServerMonitoringService/ServerMonitoringService/json/autolink.h new file mode 100644 index 0000000..37c9258 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/json/autolink.h @@ -0,0 +1,19 @@ +#ifndef JSON_AUTOLINK_H_INCLUDED +# define JSON_AUTOLINK_H_INCLUDED + +# include "config.h" + +# ifdef JSON_IN_CPPTL +# include +# endif + +# if !defined(JSON_NO_AUTOLINK) && !defined(JSON_DLL_BUILD) && !defined(JSON_IN_CPPTL) +# define CPPTL_AUTOLINK_NAME "json" +# undef CPPTL_AUTOLINK_DLL +# ifdef JSON_DLL +# define CPPTL_AUTOLINK_DLL +# endif +# include "autolink.h" +# endif + +#endif // JSON_AUTOLINK_H_INCLUDED diff --git a/ServerMonitoringService/ServerMonitoringService/json/config.h b/ServerMonitoringService/ServerMonitoringService/json/config.h new file mode 100644 index 0000000..5d334cb --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/json/config.h @@ -0,0 +1,43 @@ +#ifndef JSON_CONFIG_H_INCLUDED +# define JSON_CONFIG_H_INCLUDED + +/// If defined, indicates that json library is embedded in CppTL library. +//# define JSON_IN_CPPTL 1 + +/// If defined, indicates that json may leverage CppTL library +//# define JSON_USE_CPPTL 1 +/// If defined, indicates that cpptl vector based map should be used instead of std::map +/// as Value container. +//# define JSON_USE_CPPTL_SMALLMAP 1 +/// If defined, indicates that Json specific container should be used +/// (hash table & simple deque container with customizable allocator). +/// THIS FEATURE IS STILL EXPERIMENTAL! +//# define JSON_VALUE_USE_INTERNAL_MAP 1 +/// Force usage of standard new/malloc based allocator instead of memory pool based allocator. +/// The memory pools allocator used optimization (initializing Value and ValueInternalLink +/// as if it was a POD) that may cause some validation tool to report errors. +/// Only has effects if JSON_VALUE_USE_INTERNAL_MAP is defined. +//# define JSON_USE_SIMPLE_INTERNAL_ALLOCATOR 1 + +/// If defined, indicates that Json use exception to report invalid type manipulation +/// instead of C assert macro. +# define JSON_USE_EXCEPTION 1 + +# ifdef JSON_IN_CPPTL +# include +# ifndef JSON_USE_CPPTL +# define JSON_USE_CPPTL 1 +# endif +# endif + +# ifdef JSON_IN_CPPTL +# define JSON_API CPPTL_API +# elif defined(JSON_DLL_BUILD) +# define JSON_API __declspec(dllexport) +# elif defined(JSON_DLL) +# define JSON_API __declspec(dllimport) +# else +# define JSON_API +# endif + +#endif // JSON_CONFIG_H_INCLUDED diff --git a/ServerMonitoringService/ServerMonitoringService/json/features.h b/ServerMonitoringService/ServerMonitoringService/json/features.h new file mode 100644 index 0000000..5a9adec --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/json/features.h @@ -0,0 +1,42 @@ +#ifndef CPPTL_JSON_FEATURES_H_INCLUDED +# define CPPTL_JSON_FEATURES_H_INCLUDED + +# include "forwards.h" + +namespace Json { + + /** \brief Configuration passed to reader and writer. + * This configuration object can be used to force the Reader or Writer + * to behave in a standard conforming way. + */ + class JSON_API Features + { + public: + /** \brief A configuration that allows all features and assumes all strings are UTF-8. + * - C & C++ comments are allowed + * - Root object can be any JSON value + * - Assumes Value strings are encoded in UTF-8 + */ + static Features all(); + + /** \brief A configuration that is strictly compatible with the JSON specification. + * - Comments are forbidden. + * - Root object must be either an array or an object value. + * - Assumes Value strings are encoded in UTF-8 + */ + static Features strictMode(); + + /** \brief Initialize the configuration like JsonConfig::allFeatures; + */ + Features(); + + /// \c true if comments are allowed. Default: \c true. + bool allowComments_; + + /// \c true if root must be either an array or an object value. Default: \c false. + bool strictRoot_; + }; + +} // namespace Json + +#endif // CPPTL_JSON_FEATURES_H_INCLUDED diff --git a/ServerMonitoringService/ServerMonitoringService/json/forwards.h b/ServerMonitoringService/ServerMonitoringService/json/forwards.h new file mode 100644 index 0000000..d0ce830 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/json/forwards.h @@ -0,0 +1,39 @@ +#ifndef JSON_FORWARDS_H_INCLUDED +# define JSON_FORWARDS_H_INCLUDED + +# include "config.h" + +namespace Json { + + // writer.h + class FastWriter; + class StyledWriter; + + // reader.h + class Reader; + + // features.h + class Features; + + // value.h + typedef int Int; + typedef unsigned int UInt; + class StaticString; + class Path; + class PathArgument; + class Value; + class ValueIteratorBase; + class ValueIterator; + class ValueConstIterator; +#ifdef JSON_VALUE_USE_INTERNAL_MAP + class ValueAllocator; + class ValueMapAllocator; + class ValueInternalLink; + class ValueInternalArray; + class ValueInternalMap; +#endif // #ifdef JSON_VALUE_USE_INTERNAL_MAP + +} // namespace Json + + +#endif // JSON_FORWARDS_H_INCLUDED diff --git a/ServerMonitoringService/ServerMonitoringService/json/json.h b/ServerMonitoringService/ServerMonitoringService/json/json.h new file mode 100644 index 0000000..c71ed65 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/json/json.h @@ -0,0 +1,10 @@ +#ifndef JSON_JSON_H_INCLUDED +# define JSON_JSON_H_INCLUDED + +# include "autolink.h" +# include "value.h" +# include "reader.h" +# include "writer.h" +# include "features.h" + +#endif // JSON_JSON_H_INCLUDED diff --git a/ServerMonitoringService/ServerMonitoringService/json/reader.h b/ServerMonitoringService/ServerMonitoringService/json/reader.h new file mode 100644 index 0000000..ee1d6a2 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/json/reader.h @@ -0,0 +1,196 @@ +#ifndef CPPTL_JSON_READER_H_INCLUDED +# define CPPTL_JSON_READER_H_INCLUDED + +# include "features.h" +# include "value.h" +# include +# include +# include +# include + +namespace Json { + + /** \brief Unserialize a JSON document into a Value. + * + */ + class JSON_API Reader + { + public: + typedef char Char; + typedef const Char *Location; + + /** \brief Constructs a Reader allowing all features + * for parsing. + */ + Reader(); + + /** \brief Constructs a Reader allowing the specified feature set + * for parsing. + */ + Reader( const Features &features ); + + /** \brief Read a Value from a JSON document. + * \param document UTF-8 encoded string containing the document to read. + * \param root [out] Contains the root value of the document if it was + * successfully parsed. + * \param collectComments \c true to collect comment and allow writing them back during + * serialization, \c false to discard comments. + * This parameter is ignored if Features::allowComments_ + * is \c false. + * \return \c true if the document was successfully parsed, \c false if an error occurred. + */ + bool parse( const std::string &document, + Value &root, + bool collectComments = true ); + + /** \brief Read a Value from a JSON document. + * \param document UTF-8 encoded string containing the document to read. + * \param root [out] Contains the root value of the document if it was + * successfully parsed. + * \param collectComments \c true to collect comment and allow writing them back during + * serialization, \c false to discard comments. + * This parameter is ignored if Features::allowComments_ + * is \c false. + * \return \c true if the document was successfully parsed, \c false if an error occurred. + */ + bool parse( const char *beginDoc, const char *endDoc, + Value &root, + bool collectComments = true ); + + /// \brief Parse from input stream. + /// \see Json::operator>>(std::istream&, Json::Value&). + bool parse( std::istream &is, + Value &root, + bool collectComments = true ); + + /** \brief Returns a user friendly string that list errors in the parsed document. + * \return Formatted error message with the list of errors with their location in + * the parsed document. An empty string is returned if no error occurred + * during parsing. + */ + std::string getFormatedErrorMessages() const; + + private: + enum TokenType + { + tokenEndOfStream = 0, + tokenObjectBegin, + tokenObjectEnd, + tokenArrayBegin, + tokenArrayEnd, + tokenString, + tokenNumber, + tokenTrue, + tokenFalse, + tokenNull, + tokenArraySeparator, + tokenMemberSeparator, + tokenComment, + tokenError + }; + + class Token + { + public: + TokenType type_; + Location start_; + Location end_; + }; + + class ErrorInfo + { + public: + Token token_; + std::string message_; + Location extra_; + }; + + typedef std::deque Errors; + + bool expectToken( TokenType type, Token &token, const char *message ); + bool readToken( Token &token ); + void skipSpaces(); + bool match( Location pattern, + int patternLength ); + bool readComment(); + bool readCStyleComment(); + bool readCppStyleComment(); + bool readString(); + void readNumber(); + bool readValue(); + bool readObject( Token &token ); + bool readArray( Token &token ); + bool decodeNumber( Token &token ); + bool decodeString( Token &token ); + bool decodeString( Token &token, std::string &decoded ); + bool decodeDouble( Token &token ); + bool decodeUnicodeCodePoint( Token &token, + Location ¤t, + Location end, + unsigned int &unicode ); + bool decodeUnicodeEscapeSequence( Token &token, + Location ¤t, + Location end, + unsigned int &unicode ); + bool addError( const std::string &message, + Token &token, + Location extra = 0 ); + bool recoverFromError( TokenType skipUntilToken ); + bool addErrorAndRecover( const std::string &message, + Token &token, + TokenType skipUntilToken ); + void skipUntilSpace(); + Value ¤tValue(); + Char getNextChar(); + void getLocationLineAndColumn( Location location, + int &line, + int &column ) const; + std::string getLocationLineAndColumn( Location location ) const; + void addComment( Location begin, + Location end, + CommentPlacement placement ); + void skipCommentTokens( Token &token ); + + typedef std::stack Nodes; + Nodes nodes_; + Errors errors_; + std::string document_; + Location begin_; + Location end_; + Location current_; + Location lastValueEnd_; + Value *lastValue_; + std::string commentsBefore_; + Features features_; + bool collectComments_; + }; + + /** \brief Read from 'sin' into 'root'. + + Always keep comments from the input JSON. + + This can be used to read a file into a particular sub-object. + For example: + \code + Json::Value root; + cin >> root["dir"]["file"]; + cout << root; + \endcode + Result: + \verbatim + { + "dir": { + "file": { + // The input stream JSON would be nested here. + } + } + } + \endverbatim + \throw std::exception on parse error. + \see Json::operator<<() + */ + std::istream& operator>>( std::istream&, Value& ); + +} // namespace Json + +#endif // CPPTL_JSON_READER_H_INCLUDED diff --git a/ServerMonitoringService/ServerMonitoringService/json/value.h b/ServerMonitoringService/ServerMonitoringService/json/value.h new file mode 100644 index 0000000..58bfd88 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/json/value.h @@ -0,0 +1,1069 @@ +#ifndef CPPTL_JSON_H_INCLUDED +# define CPPTL_JSON_H_INCLUDED + +# include "forwards.h" +# include +# include + +# ifndef JSON_USE_CPPTL_SMALLMAP +# include +# else +# include +# endif +# ifdef JSON_USE_CPPTL +# include +# endif + +/** \brief JSON (JavaScript Object Notation). + */ +namespace Json { + + /** \brief Type of the value held by a Value object. + */ + enum ValueType + { + nullValue = 0, ///< 'null' value + intValue, ///< signed integer value + uintValue, ///< unsigned integer value + realValue, ///< double value + stringValue, ///< UTF-8 string value + booleanValue, ///< bool value + arrayValue, ///< array value (ordered list) + objectValue ///< object value (collection of name/value pairs). + }; + + enum CommentPlacement + { + commentBefore = 0, ///< a comment placed on the line before a value + commentAfterOnSameLine, ///< a comment just after a value on the same line + commentAfter, ///< a comment on the line after a value (only make sense for root value) + numberOfCommentPlacement + }; + +//# ifdef JSON_USE_CPPTL +// typedef CppTL::AnyEnumerator EnumMemberNames; +// typedef CppTL::AnyEnumerator EnumValues; +//# endif + + /** \brief Lightweight wrapper to tag static string. + * + * Value constructor and objectValue member assignement takes advantage of the + * StaticString and avoid the cost of string duplication when storing the + * string or the member name. + * + * Example of usage: + * \code + * Json::Value aValue( StaticString("some text") ); + * Json::Value object; + * static const StaticString code("code"); + * object[code] = 1234; + * \endcode + */ + class JSON_API StaticString + { + public: + explicit StaticString( const char *czstring ) + : str_( czstring ) + { + } + + operator const char *() const + { + return str_; + } + + const char *c_str() const + { + return str_; + } + + private: + const char *str_; + }; + + /** \brief Represents a JSON value. + * + * This class is a discriminated union wrapper that can represents a: + * - signed integer [range: Value::minInt - Value::maxInt] + * - unsigned integer (range: 0 - Value::maxUInt) + * - double + * - UTF-8 string + * - boolean + * - 'null' + * - an ordered list of Value + * - collection of name/value pairs (javascript object) + * + * The type of the held value is represented by a #ValueType and + * can be obtained using type(). + * + * values of an #objectValue or #arrayValue can be accessed using operator[]() methods. + * Non const methods will automatically create the a #nullValue element + * if it does not exist. + * The sequence of an #arrayValue will be automatically resize and initialized + * with #nullValue. resize() can be used to enlarge or truncate an #arrayValue. + * + * The get() methods can be used to obtanis default value in the case the required element + * does not exist. + * + * It is possible to iterate over the list of a #objectValue values using + * the getMemberNames() method. + */ + class JSON_API Value + { + friend class ValueIteratorBase; +# ifdef JSON_VALUE_USE_INTERNAL_MAP + friend class ValueInternalLink; + friend class ValueInternalMap; +# endif + public: + typedef std::vector Members; + typedef ValueIterator iterator; + typedef ValueConstIterator const_iterator; + typedef Json::UInt UInt; + typedef Json::Int Int; + typedef UInt ArrayIndex; + + static const Value null; + static const Int minInt; + static const Int maxInt; + static const UInt maxUInt; + + private: +#ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION +# ifndef JSON_VALUE_USE_INTERNAL_MAP + class CZString + { + public: + enum DuplicationPolicy + { + noDuplication = 0, + duplicate, + duplicateOnCopy + }; + CZString( int index ); + CZString( const char *cstr, DuplicationPolicy allocate ); + CZString( const CZString &other ); + ~CZString(); + CZString &operator =( const CZString &other ); + bool operator<( const CZString &other ) const; + bool operator==( const CZString &other ) const; + int index() const; + const char *c_str() const; + bool isStaticString() const; + private: + void swap( CZString &other ); + const char *cstr_; + int index_; + }; + + public: +# ifndef JSON_USE_CPPTL_SMALLMAP + typedef std::map ObjectValues; +# else + typedef CppTL::SmallMap ObjectValues; +# endif // ifndef JSON_USE_CPPTL_SMALLMAP +# endif // ifndef JSON_VALUE_USE_INTERNAL_MAP +#endif // ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION + + public: + /** \brief Create a default Value of the given type. + + This is a very useful constructor. + To create an empty array, pass arrayValue. + To create an empty object, pass objectValue. + Another Value can then be set to this one by assignment. + This is useful since clear() and resize() will not alter types. + + Examples: + \code + Json::Value null_value; // null + Json::Value arr_value(Json::arrayValue); // [] + Json::Value obj_value(Json::objectValue); // {} + \endcode + */ + Value( ValueType type = nullValue ); + Value( Int value ); + Value( UInt value ); + Value( double value ); + Value( const char *value ); + Value( const char *beginValue, const char *endValue ); + /** \brief Constructs a value from a static string. + + * Like other value string constructor but do not duplicate the string for + * internal storage. The given string must remain alive after the call to this + * constructor. + * Example of usage: + * \code + * Json::Value aValue( StaticString("some text") ); + * \endcode + */ + Value( const StaticString &value ); + Value( const std::string &value ); +# ifdef JSON_USE_CPPTL + Value( const CppTL::ConstString &value ); +# endif + Value( bool value ); + Value( const Value &other ); + ~Value(); + + Value &operator=( const Value &other ); + /// Swap values. + /// \note Currently, comments are intentionally not swapped, for + /// both logic and efficiency. + void swap( Value &other ); + + ValueType type() const; + + bool operator <( const Value &other ) const; + bool operator <=( const Value &other ) const; + bool operator >=( const Value &other ) const; + bool operator >( const Value &other ) const; + + bool operator ==( const Value &other ) const; + bool operator !=( const Value &other ) const; + + int compare( const Value &other ); + + const char *asCString() const; + std::string asString() const; +# ifdef JSON_USE_CPPTL + CppTL::ConstString asConstString() const; +# endif + Int asInt() const; + UInt asUInt() const; + double asDouble() const; + bool asBool() const; + + bool isNull() const; + bool isBool() const; + bool isInt() const; + bool isUInt() const; + bool isIntegral() const; + bool isDouble() const; + bool isNumeric() const; + bool isString() const; + bool isArray() const; + bool isObject() const; + + bool isConvertibleTo( ValueType other ) const; + + /// Number of values in array or object + UInt size() const; + + /// \brief Return true if empty array, empty object, or null; + /// otherwise, false. + bool empty() const; + + /// Return isNull() + bool operator!() const; + + /// Remove all object members and array elements. + /// \pre type() is arrayValue, objectValue, or nullValue + /// \post type() is unchanged + void clear(); + + /// Resize the array to size elements. + /// New elements are initialized to null. + /// May only be called on nullValue or arrayValue. + /// \pre type() is arrayValue or nullValue + /// \post type() is arrayValue + void resize( UInt size ); + + /// Access an array element (zero based index ). + /// If the array contains less than index element, then null value are inserted + /// in the array so that its size is index+1. + /// (You may need to say 'value[0u]' to get your compiler to distinguish + /// this from the operator[] which takes a string.) + Value &operator[]( UInt index ); + /// Access an array element (zero based index ) + /// (You may need to say 'value[0u]' to get your compiler to distinguish + /// this from the operator[] which takes a string.) + const Value &operator[]( UInt index ) const; + /// If the array contains at least index+1 elements, returns the element value, + /// otherwise returns defaultValue. + Value get( UInt index, + const Value &defaultValue ) const; + /// Return true if index < size(). + bool isValidIndex( UInt index ) const; + /// \brief Append value to array at the end. + /// + /// Equivalent to jsonvalue[jsonvalue.size()] = value; + Value &append( const Value &value ); + + /// Access an object value by name, create a null member if it does not exist. + Value &operator[]( const char *key ); + /// Access an object value by name, returns null if there is no member with that name. + const Value &operator[]( const char *key ) const; + /// Access an object value by name, create a null member if it does not exist. + Value &operator[]( const std::string &key ); + /// Access an object value by name, returns null if there is no member with that name. + const Value &operator[]( const std::string &key ) const; + /** \brief Access an object value by name, create a null member if it does not exist. + + * If the object as no entry for that name, then the member name used to store + * the new entry is not duplicated. + * Example of use: + * \code + * Json::Value object; + * static const StaticString code("code"); + * object[code] = 1234; + * \endcode + */ + Value &operator[]( const StaticString &key ); +# ifdef JSON_USE_CPPTL + /// Access an object value by name, create a null member if it does not exist. + Value &operator[]( const CppTL::ConstString &key ); + /// Access an object value by name, returns null if there is no member with that name. + const Value &operator[]( const CppTL::ConstString &key ) const; +# endif + /// Return the member named key if it exist, defaultValue otherwise. + Value get( const char *key, + const Value &defaultValue ) const; + /// Return the member named key if it exist, defaultValue otherwise. + Value get( const std::string &key, + const Value &defaultValue ) const; +# ifdef JSON_USE_CPPTL + /// Return the member named key if it exist, defaultValue otherwise. + Value get( const CppTL::ConstString &key, + const Value &defaultValue ) const; +# endif + /// \brief Remove and return the named member. + /// + /// Do nothing if it did not exist. + /// \return the removed Value, or null. + /// \pre type() is objectValue or nullValue + /// \post type() is unchanged + Value removeMember( const char* key ); + /// Same as removeMember(const char*) + Value removeMember( const std::string &key ); + + /// Return true if the object has a member named key. + bool isMember( const char *key ) const; + /// Return true if the object has a member named key. + bool isMember( const std::string &key ) const; +# ifdef JSON_USE_CPPTL + /// Return true if the object has a member named key. + bool isMember( const CppTL::ConstString &key ) const; +# endif + + /// \brief Return a list of the member names. + /// + /// If null, return an empty list. + /// \pre type() is objectValue or nullValue + /// \post if type() was nullValue, it remains nullValue + Members getMemberNames() const; + +//# ifdef JSON_USE_CPPTL +// EnumMemberNames enumMemberNames() const; +// EnumValues enumValues() const; +//# endif + + /// Comments must be //... or /* ... */ + void setComment( const char *comment, + CommentPlacement placement ); + /// Comments must be //... or /* ... */ + void setComment( const std::string &comment, + CommentPlacement placement ); + bool hasComment( CommentPlacement placement ) const; + /// Include delimiters and embedded newlines. + std::string getComment( CommentPlacement placement ) const; + + std::string toStyledString() const; + + const_iterator begin() const; + const_iterator end() const; + + iterator begin(); + iterator end(); + + private: + Value &resolveReference( const char *key, + bool isStatic ); + +# ifdef JSON_VALUE_USE_INTERNAL_MAP + inline bool isItemAvailable() const + { + return itemIsUsed_ == 0; + } + + inline void setItemUsed( bool isUsed = true ) + { + itemIsUsed_ = isUsed ? 1 : 0; + } + + inline bool isMemberNameStatic() const + { + return memberNameIsStatic_ == 0; + } + + inline void setMemberNameIsStatic( bool isStatic ) + { + memberNameIsStatic_ = isStatic ? 1 : 0; + } +# endif // # ifdef JSON_VALUE_USE_INTERNAL_MAP + + private: + struct CommentInfo + { + CommentInfo(); + ~CommentInfo(); + + void setComment( const char *text ); + + char *comment_; + }; + + //struct MemberNamesTransform + //{ + // typedef const char *result_type; + // const char *operator()( const CZString &name ) const + // { + // return name.c_str(); + // } + //}; + + union ValueHolder + { + Int int_; + UInt uint_; + double real_; + bool bool_; + char *string_; +# ifdef JSON_VALUE_USE_INTERNAL_MAP + ValueInternalArray *array_; + ValueInternalMap *map_; +#else + ObjectValues *map_; +# endif + } value_; + ValueType type_ : 8; + int allocated_ : 1; // Notes: if declared as bool, bitfield is useless. +# ifdef JSON_VALUE_USE_INTERNAL_MAP + unsigned int itemIsUsed_ : 1; // used by the ValueInternalMap container. + int memberNameIsStatic_ : 1; // used by the ValueInternalMap container. +# endif + CommentInfo *comments_; + }; + + + /** \brief Experimental and untested: represents an element of the "path" to access a node. + */ + class PathArgument + { + public: + friend class Path; + + PathArgument(); + PathArgument( UInt index ); + PathArgument( const char *key ); + PathArgument( const std::string &key ); + + private: + enum Kind + { + kindNone = 0, + kindIndex, + kindKey + }; + std::string key_; + UInt index_; + Kind kind_; + }; + + /** \brief Experimental and untested: represents a "path" to access a node. + * + * Syntax: + * - "." => root node + * - ".[n]" => elements at index 'n' of root node (an array value) + * - ".name" => member named 'name' of root node (an object value) + * - ".name1.name2.name3" + * - ".[0][1][2].name1[3]" + * - ".%" => member name is provided as parameter + * - ".[%]" => index is provied as parameter + */ + class Path + { + public: + Path( const std::string &path, + const PathArgument &a1 = PathArgument(), + const PathArgument &a2 = PathArgument(), + const PathArgument &a3 = PathArgument(), + const PathArgument &a4 = PathArgument(), + const PathArgument &a5 = PathArgument() ); + + const Value &resolve( const Value &root ) const; + Value resolve( const Value &root, + const Value &defaultValue ) const; + /// Creates the "path" to access the specified node and returns a reference on the node. + Value &make( Value &root ) const; + + private: + typedef std::vector InArgs; + typedef std::vector Args; + + void makePath( const std::string &path, + const InArgs &in ); + void addPathInArg( const std::string &path, + const InArgs &in, + InArgs::const_iterator &itInArg, + PathArgument::Kind kind ); + void invalidPath( const std::string &path, + int location ); + + Args args_; + }; + + /** \brief Experimental do not use: Allocator to customize member name and string value memory management done by Value. + * + * - makeMemberName() and releaseMemberName() are called to respectively duplicate and + * free an Json::objectValue member name. + * - duplicateStringValue() and releaseStringValue() are called similarly to + * duplicate and free a Json::stringValue value. + */ + class ValueAllocator + { + public: + enum { unknown = (unsigned)-1 }; + + virtual ~ValueAllocator(); + + virtual char *makeMemberName( const char *memberName ) = 0; + virtual void releaseMemberName( char *memberName ) = 0; + virtual char *duplicateStringValue( const char *value, + unsigned int length = unknown ) = 0; + virtual void releaseStringValue( char *value ) = 0; + }; + +#ifdef JSON_VALUE_USE_INTERNAL_MAP + /** \brief Allocator to customize Value internal map. + * Below is an example of a simple implementation (default implementation actually + * use memory pool for speed). + * \code + class DefaultValueMapAllocator : public ValueMapAllocator + { + public: // overridden from ValueMapAllocator + virtual ValueInternalMap *newMap() + { + return new ValueInternalMap(); + } + + virtual ValueInternalMap *newMapCopy( const ValueInternalMap &other ) + { + return new ValueInternalMap( other ); + } + + virtual void destructMap( ValueInternalMap *map ) + { + delete map; + } + + virtual ValueInternalLink *allocateMapBuckets( unsigned int size ) + { + return new ValueInternalLink[size]; + } + + virtual void releaseMapBuckets( ValueInternalLink *links ) + { + delete [] links; + } + + virtual ValueInternalLink *allocateMapLink() + { + return new ValueInternalLink(); + } + + virtual void releaseMapLink( ValueInternalLink *link ) + { + delete link; + } + }; + * \endcode + */ + class JSON_API ValueMapAllocator + { + public: + virtual ~ValueMapAllocator(); + virtual ValueInternalMap *newMap() = 0; + virtual ValueInternalMap *newMapCopy( const ValueInternalMap &other ) = 0; + virtual void destructMap( ValueInternalMap *map ) = 0; + virtual ValueInternalLink *allocateMapBuckets( unsigned int size ) = 0; + virtual void releaseMapBuckets( ValueInternalLink *links ) = 0; + virtual ValueInternalLink *allocateMapLink() = 0; + virtual void releaseMapLink( ValueInternalLink *link ) = 0; + }; + + /** \brief ValueInternalMap hash-map bucket chain link (for internal use only). + * \internal previous_ & next_ allows for bidirectional traversal. + */ + class JSON_API ValueInternalLink + { + public: + enum { itemPerLink = 6 }; // sizeof(ValueInternalLink) = 128 on 32 bits architecture. + enum InternalFlags { + flagAvailable = 0, + flagUsed = 1 + }; + + ValueInternalLink(); + + ~ValueInternalLink(); + + Value items_[itemPerLink]; + char *keys_[itemPerLink]; + ValueInternalLink *previous_; + ValueInternalLink *next_; + }; + + + /** \brief A linked page based hash-table implementation used internally by Value. + * \internal ValueInternalMap is a tradional bucket based hash-table, with a linked + * list in each bucket to handle collision. There is an addional twist in that + * each node of the collision linked list is a page containing a fixed amount of + * value. This provides a better compromise between memory usage and speed. + * + * Each bucket is made up of a chained list of ValueInternalLink. The last + * link of a given bucket can be found in the 'previous_' field of the following bucket. + * The last link of the last bucket is stored in tailLink_ as it has no following bucket. + * Only the last link of a bucket may contains 'available' item. The last link always + * contains at least one element unless is it the bucket one very first link. + */ + class JSON_API ValueInternalMap + { + friend class ValueIteratorBase; + friend class Value; + public: + typedef unsigned int HashKey; + typedef unsigned int BucketIndex; + +# ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION + struct IteratorState + { + IteratorState() + : map_(0) + , link_(0) + , itemIndex_(0) + , bucketIndex_(0) + { + } + ValueInternalMap *map_; + ValueInternalLink *link_; + BucketIndex itemIndex_; + BucketIndex bucketIndex_; + }; +# endif // ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION + + ValueInternalMap(); + ValueInternalMap( const ValueInternalMap &other ); + ValueInternalMap &operator =( const ValueInternalMap &other ); + ~ValueInternalMap(); + + void swap( ValueInternalMap &other ); + + BucketIndex size() const; + + void clear(); + + bool reserveDelta( BucketIndex growth ); + + bool reserve( BucketIndex newItemCount ); + + const Value *find( const char *key ) const; + + Value *find( const char *key ); + + Value &resolveReference( const char *key, + bool isStatic ); + + void remove( const char *key ); + + void doActualRemove( ValueInternalLink *link, + BucketIndex index, + BucketIndex bucketIndex ); + + ValueInternalLink *&getLastLinkInBucket( BucketIndex bucketIndex ); + + Value &setNewItem( const char *key, + bool isStatic, + ValueInternalLink *link, + BucketIndex index ); + + Value &unsafeAdd( const char *key, + bool isStatic, + HashKey hashedKey ); + + HashKey hash( const char *key ) const; + + int compare( const ValueInternalMap &other ) const; + + private: + void makeBeginIterator( IteratorState &it ) const; + void makeEndIterator( IteratorState &it ) const; + static bool equals( const IteratorState &x, const IteratorState &other ); + static void increment( IteratorState &iterator ); + static void incrementBucket( IteratorState &iterator ); + static void decrement( IteratorState &iterator ); + static const char *key( const IteratorState &iterator ); + static const char *key( const IteratorState &iterator, bool &isStatic ); + static Value &value( const IteratorState &iterator ); + static int distance( const IteratorState &x, const IteratorState &y ); + + private: + ValueInternalLink *buckets_; + ValueInternalLink *tailLink_; + BucketIndex bucketsSize_; + BucketIndex itemCount_; + }; + + /** \brief A simplified deque implementation used internally by Value. + * \internal + * It is based on a list of fixed "page", each page contains a fixed number of items. + * Instead of using a linked-list, a array of pointer is used for fast item look-up. + * Look-up for an element is as follow: + * - compute page index: pageIndex = itemIndex / itemsPerPage + * - look-up item in page: pages_[pageIndex][itemIndex % itemsPerPage] + * + * Insertion is amortized constant time (only the array containing the index of pointers + * need to be reallocated when items are appended). + */ + class JSON_API ValueInternalArray + { + friend class Value; + friend class ValueIteratorBase; + public: + enum { itemsPerPage = 8 }; // should be a power of 2 for fast divide and modulo. + typedef Value::ArrayIndex ArrayIndex; + typedef unsigned int PageIndex; + +# ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION + struct IteratorState // Must be a POD + { + IteratorState() + : array_(0) + , currentPageIndex_(0) + , currentItemIndex_(0) + { + } + ValueInternalArray *array_; + Value **currentPageIndex_; + unsigned int currentItemIndex_; + }; +# endif // ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION + + ValueInternalArray(); + ValueInternalArray( const ValueInternalArray &other ); + ValueInternalArray &operator =( const ValueInternalArray &other ); + ~ValueInternalArray(); + void swap( ValueInternalArray &other ); + + void clear(); + void resize( ArrayIndex newSize ); + + Value &resolveReference( ArrayIndex index ); + + Value *find( ArrayIndex index ) const; + + ArrayIndex size() const; + + int compare( const ValueInternalArray &other ) const; + + private: + static bool equals( const IteratorState &x, const IteratorState &other ); + static void increment( IteratorState &iterator ); + static void decrement( IteratorState &iterator ); + static Value &dereference( const IteratorState &iterator ); + static Value &unsafeDereference( const IteratorState &iterator ); + static int distance( const IteratorState &x, const IteratorState &y ); + static ArrayIndex indexOf( const IteratorState &iterator ); + void makeBeginIterator( IteratorState &it ) const; + void makeEndIterator( IteratorState &it ) const; + void makeIterator( IteratorState &it, ArrayIndex index ) const; + + void makeIndexValid( ArrayIndex index ); + + Value **pages_; + ArrayIndex size_; + PageIndex pageCount_; + }; + + /** \brief Experimental: do not use. Allocator to customize Value internal array. + * Below is an example of a simple implementation (actual implementation use + * memory pool). + \code +class DefaultValueArrayAllocator : public ValueArrayAllocator +{ +public: // overridden from ValueArrayAllocator + virtual ~DefaultValueArrayAllocator() + { + } + + virtual ValueInternalArray *newArray() + { + return new ValueInternalArray(); + } + + virtual ValueInternalArray *newArrayCopy( const ValueInternalArray &other ) + { + return new ValueInternalArray( other ); + } + + virtual void destruct( ValueInternalArray *array ) + { + delete array; + } + + virtual void reallocateArrayPageIndex( Value **&indexes, + ValueInternalArray::PageIndex &indexCount, + ValueInternalArray::PageIndex minNewIndexCount ) + { + ValueInternalArray::PageIndex newIndexCount = (indexCount*3)/2 + 1; + if ( minNewIndexCount > newIndexCount ) + newIndexCount = minNewIndexCount; + void *newIndexes = realloc( indexes, sizeof(Value*) * newIndexCount ); + if ( !newIndexes ) + throw std::bad_alloc(); + indexCount = newIndexCount; + indexes = static_cast( newIndexes ); + } + virtual void releaseArrayPageIndex( Value **indexes, + ValueInternalArray::PageIndex indexCount ) + { + if ( indexes ) + free( indexes ); + } + + virtual Value *allocateArrayPage() + { + return static_cast( malloc( sizeof(Value) * ValueInternalArray::itemsPerPage ) ); + } + + virtual void releaseArrayPage( Value *value ) + { + if ( value ) + free( value ); + } +}; + \endcode + */ + class JSON_API ValueArrayAllocator + { + public: + virtual ~ValueArrayAllocator(); + virtual ValueInternalArray *newArray() = 0; + virtual ValueInternalArray *newArrayCopy( const ValueInternalArray &other ) = 0; + virtual void destructArray( ValueInternalArray *array ) = 0; + /** \brief Reallocate array page index. + * Reallocates an array of pointer on each page. + * \param indexes [input] pointer on the current index. May be \c NULL. + * [output] pointer on the new index of at least + * \a minNewIndexCount pages. + * \param indexCount [input] current number of pages in the index. + * [output] number of page the reallocated index can handle. + * \b MUST be >= \a minNewIndexCount. + * \param minNewIndexCount Minimum number of page the new index must be able to + * handle. + */ + virtual void reallocateArrayPageIndex( Value **&indexes, + ValueInternalArray::PageIndex &indexCount, + ValueInternalArray::PageIndex minNewIndexCount ) = 0; + virtual void releaseArrayPageIndex( Value **indexes, + ValueInternalArray::PageIndex indexCount ) = 0; + virtual Value *allocateArrayPage() = 0; + virtual void releaseArrayPage( Value *value ) = 0; + }; +#endif // #ifdef JSON_VALUE_USE_INTERNAL_MAP + + + /** \brief base class for Value iterators. + * + */ + class ValueIteratorBase + { + public: + typedef unsigned int size_t; + typedef int difference_type; + typedef ValueIteratorBase SelfType; + + ValueIteratorBase(); +#ifndef JSON_VALUE_USE_INTERNAL_MAP + explicit ValueIteratorBase( const Value::ObjectValues::iterator ¤t ); +#else + ValueIteratorBase( const ValueInternalArray::IteratorState &state ); + ValueIteratorBase( const ValueInternalMap::IteratorState &state ); +#endif + + bool operator ==( const SelfType &other ) const + { + return isEqual( other ); + } + + bool operator !=( const SelfType &other ) const + { + return !isEqual( other ); + } + + difference_type operator -( const SelfType &other ) const + { + return computeDistance( other ); + } + + /// Return either the index or the member name of the referenced value as a Value. + Value key() const; + + /// Return the index of the referenced Value. -1 if it is not an arrayValue. + UInt index() const; + + /// Return the member name of the referenced Value. "" if it is not an objectValue. + const char *memberName() const; + + protected: + Value &deref() const; + + void increment(); + + void decrement(); + + difference_type computeDistance( const SelfType &other ) const; + + bool isEqual( const SelfType &other ) const; + + void copy( const SelfType &other ); + + private: +#ifndef JSON_VALUE_USE_INTERNAL_MAP + Value::ObjectValues::iterator current_; + // Indicates that iterator is for a null value. + bool isNull_; +#else + union + { + ValueInternalArray::IteratorState array_; + ValueInternalMap::IteratorState map_; + } iterator_; + bool isArray_; +#endif + }; + + /** \brief const iterator for object and array value. + * + */ + class ValueConstIterator : public ValueIteratorBase + { + friend class Value; + public: + typedef unsigned int size_t; + typedef int difference_type; + typedef const Value &reference; + typedef const Value *pointer; + typedef ValueConstIterator SelfType; + + ValueConstIterator(); + private: + /*! \internal Use by Value to create an iterator. + */ +#ifndef JSON_VALUE_USE_INTERNAL_MAP + explicit ValueConstIterator( const Value::ObjectValues::iterator ¤t ); +#else + ValueConstIterator( const ValueInternalArray::IteratorState &state ); + ValueConstIterator( const ValueInternalMap::IteratorState &state ); +#endif + public: + SelfType &operator =( const ValueIteratorBase &other ); + + SelfType operator++( int ) + { + SelfType temp( *this ); + ++*this; + return temp; + } + + SelfType operator--( int ) + { + SelfType temp( *this ); + --*this; + return temp; + } + + SelfType &operator--() + { + decrement(); + return *this; + } + + SelfType &operator++() + { + increment(); + return *this; + } + + reference operator *() const + { + return deref(); + } + }; + + + /** \brief Iterator for object and array value. + */ + class ValueIterator : public ValueIteratorBase + { + friend class Value; + public: + typedef unsigned int size_t; + typedef int difference_type; + typedef Value &reference; + typedef Value *pointer; + typedef ValueIterator SelfType; + + ValueIterator(); + ValueIterator( const ValueConstIterator &other ); + ValueIterator( const ValueIterator &other ); + private: + /*! \internal Use by Value to create an iterator. + */ +#ifndef JSON_VALUE_USE_INTERNAL_MAP + explicit ValueIterator( const Value::ObjectValues::iterator ¤t ); +#else + ValueIterator( const ValueInternalArray::IteratorState &state ); + ValueIterator( const ValueInternalMap::IteratorState &state ); +#endif + public: + + SelfType &operator =( const SelfType &other ); + + SelfType operator++( int ) + { + SelfType temp( *this ); + ++*this; + return temp; + } + + SelfType operator--( int ) + { + SelfType temp( *this ); + --*this; + return temp; + } + + SelfType &operator--() + { + decrement(); + return *this; + } + + SelfType &operator++() + { + increment(); + return *this; + } + + reference operator *() const + { + return deref(); + } + }; + + +} // namespace Json + + +#endif // CPPTL_JSON_H_INCLUDED diff --git a/ServerMonitoringService/ServerMonitoringService/json/writer.h b/ServerMonitoringService/ServerMonitoringService/json/writer.h new file mode 100644 index 0000000..5f4b83b --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/json/writer.h @@ -0,0 +1,174 @@ +#ifndef JSON_WRITER_H_INCLUDED +# define JSON_WRITER_H_INCLUDED + +# include "value.h" +# include +# include +# include + +namespace Json { + + class Value; + + /** \brief Abstract class for writers. + */ + class JSON_API Writer + { + public: + virtual ~Writer(); + + virtual std::string write( const Value &root ) = 0; + }; + + /** \brief Outputs a Value in JSON format without formatting (not human friendly). + * + * The JSON document is written in a single line. It is not intended for 'human' consumption, + * but may be usefull to support feature such as RPC where bandwith is limited. + * \sa Reader, Value + */ + class JSON_API FastWriter : public Writer + { + public: + FastWriter(); + virtual ~FastWriter(){} + + void enableYAMLCompatibility(); + + public: // overridden from Writer + virtual std::string write( const Value &root ); + + private: + void writeValue( const Value &value ); + + std::string document_; + bool yamlCompatiblityEnabled_; + }; + + /** \brief Writes a Value in JSON format in a human friendly way. + * + * The rules for line break and indent are as follow: + * - Object value: + * - if empty then print {} without indent and line break + * - if not empty the print '{', line break & indent, print one value per line + * and then unindent and line break and print '}'. + * - Array value: + * - if empty then print [] without indent and line break + * - if the array contains no object value, empty array or some other value types, + * and all the values fit on one lines, then print the array on a single line. + * - otherwise, it the values do not fit on one line, or the array contains + * object or non empty array, then print one value per line. + * + * If the Value have comments then they are outputed according to their #CommentPlacement. + * + * \sa Reader, Value, Value::setComment() + */ + class JSON_API StyledWriter: public Writer + { + public: + StyledWriter(); + virtual ~StyledWriter(){} + + public: // overridden from Writer + /** \brief Serialize a Value in JSON format. + * \param root Value to serialize. + * \return String containing the JSON document that represents the root value. + */ + virtual std::string write( const Value &root ); + + private: + void writeValue( const Value &value ); + void writeArrayValue( const Value &value ); + bool isMultineArray( const Value &value ); + void pushValue( const std::string &value ); + void writeIndent(); + void writeWithIndent( const std::string &value ); + void indent(); + void unindent(); + void writeCommentBeforeValue( const Value &root ); + void writeCommentAfterValueOnSameLine( const Value &root ); + bool hasCommentForValue( const Value &value ); + static std::string normalizeEOL( const std::string &text ); + + typedef std::vector ChildValues; + + ChildValues childValues_; + std::string document_; + std::string indentString_; + int rightMargin_; + int indentSize_; + bool addChildValues_; + }; + + /** \brief Writes a Value in JSON format in a human friendly way, + to a stream rather than to a string. + * + * The rules for line break and indent are as follow: + * - Object value: + * - if empty then print {} without indent and line break + * - if not empty the print '{', line break & indent, print one value per line + * and then unindent and line break and print '}'. + * - Array value: + * - if empty then print [] without indent and line break + * - if the array contains no object value, empty array or some other value types, + * and all the values fit on one lines, then print the array on a single line. + * - otherwise, it the values do not fit on one line, or the array contains + * object or non empty array, then print one value per line. + * + * If the Value have comments then they are outputed according to their #CommentPlacement. + * + * \param indentation Each level will be indented by this amount extra. + * \sa Reader, Value, Value::setComment() + */ + class JSON_API StyledStreamWriter + { + public: + StyledStreamWriter( std::string indentation="\t" ); + ~StyledStreamWriter(){} + + public: + /** \brief Serialize a Value in JSON format. + * \param out Stream to write to. (Can be ostringstream, e.g.) + * \param root Value to serialize. + * \note There is no point in deriving from Writer, since write() should not return a value. + */ + void write( std::ostream &out, const Value &root ); + + private: + void writeValue( const Value &value ); + void writeArrayValue( const Value &value ); + bool isMultineArray( const Value &value ); + void pushValue( const std::string &value ); + void writeIndent(); + void writeWithIndent( const std::string &value ); + void indent(); + void unindent(); + void writeCommentBeforeValue( const Value &root ); + void writeCommentAfterValueOnSameLine( const Value &root ); + bool hasCommentForValue( const Value &value ); + static std::string normalizeEOL( const std::string &text ); + + typedef std::vector ChildValues; + + ChildValues childValues_; + std::ostream* document_; + std::string indentString_; + int rightMargin_; + std::string indentation_; + bool addChildValues_; + }; + + std::string JSON_API valueToString( Int value ); + std::string JSON_API valueToString( UInt value ); + std::string JSON_API valueToString( double value ); + std::string JSON_API valueToString( bool value ); + std::string JSON_API valueToQuotedString( const char *value ); + + /// \brief Output using the StyledStreamWriter. + /// \see Json::operator>>() + std::ostream& operator<<( std::ostream&, const Value &root ); + +} // namespace Json + + + +#endif // JSON_WRITER_H_INCLUDED From 11b1b14be2891027e7c965665318c486d01cd9ce Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 02:39:44 +0900 Subject: [PATCH 41/84] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 51d64a9..b14ce69 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,12 @@ # SMS - Server Monitoring Service +### 현재 이 프로젝트는 개발 진행중인 프로젝트 입니다. ### (this project is not a finished project.) ### Server Monitoring Service #### > SMS Agent #### > Data Server #### > Web Server (Visualization) -### +### --- From 663dbce76875b0b5967bd5ae9fdd125cc694c248 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 02:40:14 +0900 Subject: [PATCH 42/84] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b14ce69..f8222fd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # SMS - Server Monitoring Service -### 현재 이 프로젝트는 개발 진행중인 프로젝트 입니다. +### 현재 이 프로젝트는 개발중 입니다. ### (this project is not a finished project.) ### Server Monitoring Service #### > SMS Agent From 7d55d1103f517cf23ad57a908d6078dee282ccea Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 03:45:53 +0900 Subject: [PATCH 43/84] :fire: Remove a jsoncpp, :wrench: changed rapidjson --- .../ServerMonitoringService.vcxproj | 49 +- .../ServerMonitoringService.vcxproj.filters | 100 +- .../ServerMonitoringService/json/autolink.h | 19 - .../ServerMonitoringService/json/config.h | 43 - .../ServerMonitoringService/json/features.h | 42 - .../ServerMonitoringService/json/forwards.h | 39 - .../ServerMonitoringService/json/json.h | 10 - .../json/json_vc71_libmt.lib | Bin 4584328 -> 0 bytes .../ServerMonitoringService/json/reader.h | 196 -- .../ServerMonitoringService/json/value.h | 1069 ------- .../ServerMonitoringService/json/writer.h | 174 -- .../ServerMonitoringService/main.cpp | 5 +- .../network socket/NetworkManager.cpp | 6 +- .../network socket/NetworkManager.hpp | 1 + .../rapidjson/allocators.h | 271 ++ .../rapidjson/document.h | 2575 +++++++++++++++++ .../rapidjson/encodedstream.h | 299 ++ .../rapidjson/encodings.h | 716 +++++ .../rapidjson/error/en.h | 74 + .../rapidjson/error/error.h | 155 + .../rapidjson/filereadstream.h | 99 + .../rapidjson/filewritestream.h | 104 + .../ServerMonitoringService/rapidjson/fwd.h | 151 + .../rapidjson/internal/biginteger.h | 290 ++ .../rapidjson/internal/diyfp.h | 258 ++ .../rapidjson/internal/dtoa.h | 245 ++ .../rapidjson/internal/ieee754.h | 78 + .../rapidjson/internal/itoa.h | 304 ++ .../rapidjson/internal/meta.h | 181 ++ .../rapidjson/internal/pow10.h | 55 + .../rapidjson/internal/regex.h | 701 +++++ .../rapidjson/internal/stack.h | 230 ++ .../rapidjson/internal/strfunc.h | 55 + .../rapidjson/internal/strtod.h | 269 ++ .../rapidjson/internal/swap.h | 46 + .../rapidjson/istreamwrapper.h | 115 + .../rapidjson/memorybuffer.h | 70 + .../rapidjson/memorystream.h | 71 + .../rapidjson/msinttypes/inttypes.h | 316 ++ .../rapidjson/msinttypes/stdint.h | 300 ++ .../rapidjson/ostreamwrapper.h | 81 + .../rapidjson/pointer.h | 1358 +++++++++ .../rapidjson/prettywriter.h | 255 ++ .../rapidjson/rapidjson.h | 615 ++++ .../rapidjson/reader.h | 1879 ++++++++++++ .../rapidjson/schema.h | 2006 +++++++++++++ .../rapidjson/stream.h | 179 ++ .../rapidjson/stringbuffer.h | 117 + .../rapidjson/writer.h | 610 ++++ 49 files changed, 15260 insertions(+), 1621 deletions(-) delete mode 100644 ServerMonitoringService/ServerMonitoringService/json/autolink.h delete mode 100644 ServerMonitoringService/ServerMonitoringService/json/config.h delete mode 100644 ServerMonitoringService/ServerMonitoringService/json/features.h delete mode 100644 ServerMonitoringService/ServerMonitoringService/json/forwards.h delete mode 100644 ServerMonitoringService/ServerMonitoringService/json/json.h delete mode 100644 ServerMonitoringService/ServerMonitoringService/json/json_vc71_libmt.lib delete mode 100644 ServerMonitoringService/ServerMonitoringService/json/reader.h delete mode 100644 ServerMonitoringService/ServerMonitoringService/json/value.h delete mode 100644 ServerMonitoringService/ServerMonitoringService/json/writer.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/allocators.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/document.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/encodedstream.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/encodings.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/error/en.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/error/error.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/filereadstream.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/filewritestream.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/fwd.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/internal/biginteger.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/internal/diyfp.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/internal/dtoa.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/internal/ieee754.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/internal/itoa.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/internal/meta.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/internal/pow10.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/internal/regex.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/internal/stack.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/internal/strfunc.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/internal/strtod.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/internal/swap.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/istreamwrapper.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/memorybuffer.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/memorystream.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/msinttypes/inttypes.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/msinttypes/stdint.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/ostreamwrapper.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/pointer.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/prettywriter.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/rapidjson.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/reader.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/schema.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/stream.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/stringbuffer.h create mode 100644 ServerMonitoringService/ServerMonitoringService/rapidjson/writer.h diff --git a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj index 07a44df..7ceed6a 100644 --- a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj +++ b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj @@ -86,6 +86,7 @@ HighestAvailable + %(AdditionalLibraryDirectories) @@ -108,7 +109,7 @@ true true false - Use + NotUsing true @@ -118,20 +119,47 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -160,9 +188,6 @@ - - - diff --git a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters index ee7bda8..06c3727 100644 --- a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters +++ b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters @@ -78,28 +78,109 @@ 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + + 헤더 파일 + + 헤더 파일 @@ -153,7 +234,4 @@ 소스 파일 - - - \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/json/autolink.h b/ServerMonitoringService/ServerMonitoringService/json/autolink.h deleted file mode 100644 index 37c9258..0000000 --- a/ServerMonitoringService/ServerMonitoringService/json/autolink.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef JSON_AUTOLINK_H_INCLUDED -# define JSON_AUTOLINK_H_INCLUDED - -# include "config.h" - -# ifdef JSON_IN_CPPTL -# include -# endif - -# if !defined(JSON_NO_AUTOLINK) && !defined(JSON_DLL_BUILD) && !defined(JSON_IN_CPPTL) -# define CPPTL_AUTOLINK_NAME "json" -# undef CPPTL_AUTOLINK_DLL -# ifdef JSON_DLL -# define CPPTL_AUTOLINK_DLL -# endif -# include "autolink.h" -# endif - -#endif // JSON_AUTOLINK_H_INCLUDED diff --git a/ServerMonitoringService/ServerMonitoringService/json/config.h b/ServerMonitoringService/ServerMonitoringService/json/config.h deleted file mode 100644 index 5d334cb..0000000 --- a/ServerMonitoringService/ServerMonitoringService/json/config.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef JSON_CONFIG_H_INCLUDED -# define JSON_CONFIG_H_INCLUDED - -/// If defined, indicates that json library is embedded in CppTL library. -//# define JSON_IN_CPPTL 1 - -/// If defined, indicates that json may leverage CppTL library -//# define JSON_USE_CPPTL 1 -/// If defined, indicates that cpptl vector based map should be used instead of std::map -/// as Value container. -//# define JSON_USE_CPPTL_SMALLMAP 1 -/// If defined, indicates that Json specific container should be used -/// (hash table & simple deque container with customizable allocator). -/// THIS FEATURE IS STILL EXPERIMENTAL! -//# define JSON_VALUE_USE_INTERNAL_MAP 1 -/// Force usage of standard new/malloc based allocator instead of memory pool based allocator. -/// The memory pools allocator used optimization (initializing Value and ValueInternalLink -/// as if it was a POD) that may cause some validation tool to report errors. -/// Only has effects if JSON_VALUE_USE_INTERNAL_MAP is defined. -//# define JSON_USE_SIMPLE_INTERNAL_ALLOCATOR 1 - -/// If defined, indicates that Json use exception to report invalid type manipulation -/// instead of C assert macro. -# define JSON_USE_EXCEPTION 1 - -# ifdef JSON_IN_CPPTL -# include -# ifndef JSON_USE_CPPTL -# define JSON_USE_CPPTL 1 -# endif -# endif - -# ifdef JSON_IN_CPPTL -# define JSON_API CPPTL_API -# elif defined(JSON_DLL_BUILD) -# define JSON_API __declspec(dllexport) -# elif defined(JSON_DLL) -# define JSON_API __declspec(dllimport) -# else -# define JSON_API -# endif - -#endif // JSON_CONFIG_H_INCLUDED diff --git a/ServerMonitoringService/ServerMonitoringService/json/features.h b/ServerMonitoringService/ServerMonitoringService/json/features.h deleted file mode 100644 index 5a9adec..0000000 --- a/ServerMonitoringService/ServerMonitoringService/json/features.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef CPPTL_JSON_FEATURES_H_INCLUDED -# define CPPTL_JSON_FEATURES_H_INCLUDED - -# include "forwards.h" - -namespace Json { - - /** \brief Configuration passed to reader and writer. - * This configuration object can be used to force the Reader or Writer - * to behave in a standard conforming way. - */ - class JSON_API Features - { - public: - /** \brief A configuration that allows all features and assumes all strings are UTF-8. - * - C & C++ comments are allowed - * - Root object can be any JSON value - * - Assumes Value strings are encoded in UTF-8 - */ - static Features all(); - - /** \brief A configuration that is strictly compatible with the JSON specification. - * - Comments are forbidden. - * - Root object must be either an array or an object value. - * - Assumes Value strings are encoded in UTF-8 - */ - static Features strictMode(); - - /** \brief Initialize the configuration like JsonConfig::allFeatures; - */ - Features(); - - /// \c true if comments are allowed. Default: \c true. - bool allowComments_; - - /// \c true if root must be either an array or an object value. Default: \c false. - bool strictRoot_; - }; - -} // namespace Json - -#endif // CPPTL_JSON_FEATURES_H_INCLUDED diff --git a/ServerMonitoringService/ServerMonitoringService/json/forwards.h b/ServerMonitoringService/ServerMonitoringService/json/forwards.h deleted file mode 100644 index d0ce830..0000000 --- a/ServerMonitoringService/ServerMonitoringService/json/forwards.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef JSON_FORWARDS_H_INCLUDED -# define JSON_FORWARDS_H_INCLUDED - -# include "config.h" - -namespace Json { - - // writer.h - class FastWriter; - class StyledWriter; - - // reader.h - class Reader; - - // features.h - class Features; - - // value.h - typedef int Int; - typedef unsigned int UInt; - class StaticString; - class Path; - class PathArgument; - class Value; - class ValueIteratorBase; - class ValueIterator; - class ValueConstIterator; -#ifdef JSON_VALUE_USE_INTERNAL_MAP - class ValueAllocator; - class ValueMapAllocator; - class ValueInternalLink; - class ValueInternalArray; - class ValueInternalMap; -#endif // #ifdef JSON_VALUE_USE_INTERNAL_MAP - -} // namespace Json - - -#endif // JSON_FORWARDS_H_INCLUDED diff --git a/ServerMonitoringService/ServerMonitoringService/json/json.h b/ServerMonitoringService/ServerMonitoringService/json/json.h deleted file mode 100644 index c71ed65..0000000 --- a/ServerMonitoringService/ServerMonitoringService/json/json.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef JSON_JSON_H_INCLUDED -# define JSON_JSON_H_INCLUDED - -# include "autolink.h" -# include "value.h" -# include "reader.h" -# include "writer.h" -# include "features.h" - -#endif // JSON_JSON_H_INCLUDED diff --git a/ServerMonitoringService/ServerMonitoringService/json/json_vc71_libmt.lib b/ServerMonitoringService/ServerMonitoringService/json/json_vc71_libmt.lib deleted file mode 100644 index 2a6299c3aafd31986d0ea046fa74f6f1814e3501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4584328 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%0AeXvw}k5AoDBM^Lqg`_5Q(pGb%_Jw(pzA(QNV* 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

kK&^Qfzhh)IPWa7+Vx-oFSqJS92 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

%Sj&Vu<6-N-kD>AIti$=}DF!nru+7$@eCY__e~ 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%0D2H=aATGe)> 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

)a0_ple?$f{;m^wvUQ;wa&8s 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%0Dq))?O2CW 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

XB{8t7O5Q50Ye0oDvs8M2RHx}ygSD$iWTAA$ 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 !!AK-!9aD!$rpj(uWjCm@-2$Cv`b}r~ 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%0A)c^x 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%0Dea2dEaH6 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

VRbytMZ1^^BpRCdLE&k?@K$T{zo0K%;J|h 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

S6 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Ðd=e8jJtiSLx&h-dT#&CMJ3TLf~%(MzHxL$IRa&2 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 -# include -# include -# include - -namespace Json { - - /** \brief Unserialize a JSON document into a Value. - * - */ - class JSON_API Reader - { - public: - typedef char Char; - typedef const Char *Location; - - /** \brief Constructs a Reader allowing all features - * for parsing. - */ - Reader(); - - /** \brief Constructs a Reader allowing the specified feature set - * for parsing. - */ - Reader( const Features &features ); - - /** \brief Read a Value from a JSON document. - * \param document UTF-8 encoded string containing the document to read. - * \param root [out] Contains the root value of the document if it was - * successfully parsed. - * \param collectComments \c true to collect comment and allow writing them back during - * serialization, \c false to discard comments. - * This parameter is ignored if Features::allowComments_ - * is \c false. - * \return \c true if the document was successfully parsed, \c false if an error occurred. - */ - bool parse( const std::string &document, - Value &root, - bool collectComments = true ); - - /** \brief Read a Value from a JSON document. - * \param document UTF-8 encoded string containing the document to read. - * \param root [out] Contains the root value of the document if it was - * successfully parsed. - * \param collectComments \c true to collect comment and allow writing them back during - * serialization, \c false to discard comments. - * This parameter is ignored if Features::allowComments_ - * is \c false. - * \return \c true if the document was successfully parsed, \c false if an error occurred. - */ - bool parse( const char *beginDoc, const char *endDoc, - Value &root, - bool collectComments = true ); - - /// \brief Parse from input stream. - /// \see Json::operator>>(std::istream&, Json::Value&). - bool parse( std::istream &is, - Value &root, - bool collectComments = true ); - - /** \brief Returns a user friendly string that list errors in the parsed document. - * \return Formatted error message with the list of errors with their location in - * the parsed document. An empty string is returned if no error occurred - * during parsing. - */ - std::string getFormatedErrorMessages() const; - - private: - enum TokenType - { - tokenEndOfStream = 0, - tokenObjectBegin, - tokenObjectEnd, - tokenArrayBegin, - tokenArrayEnd, - tokenString, - tokenNumber, - tokenTrue, - tokenFalse, - tokenNull, - tokenArraySeparator, - tokenMemberSeparator, - tokenComment, - tokenError - }; - - class Token - { - public: - TokenType type_; - Location start_; - Location end_; - }; - - class ErrorInfo - { - public: - Token token_; - std::string message_; - Location extra_; - }; - - typedef std::deque Errors; - - bool expectToken( TokenType type, Token &token, const char *message ); - bool readToken( Token &token ); - void skipSpaces(); - bool match( Location pattern, - int patternLength ); - bool readComment(); - bool readCStyleComment(); - bool readCppStyleComment(); - bool readString(); - void readNumber(); - bool readValue(); - bool readObject( Token &token ); - bool readArray( Token &token ); - bool decodeNumber( Token &token ); - bool decodeString( Token &token ); - bool decodeString( Token &token, std::string &decoded ); - bool decodeDouble( Token &token ); - bool decodeUnicodeCodePoint( Token &token, - Location ¤t, - Location end, - unsigned int &unicode ); - bool decodeUnicodeEscapeSequence( Token &token, - Location ¤t, - Location end, - unsigned int &unicode ); - bool addError( const std::string &message, - Token &token, - Location extra = 0 ); - bool recoverFromError( TokenType skipUntilToken ); - bool addErrorAndRecover( const std::string &message, - Token &token, - TokenType skipUntilToken ); - void skipUntilSpace(); - Value ¤tValue(); - Char getNextChar(); - void getLocationLineAndColumn( Location location, - int &line, - int &column ) const; - std::string getLocationLineAndColumn( Location location ) const; - void addComment( Location begin, - Location end, - CommentPlacement placement ); - void skipCommentTokens( Token &token ); - - typedef std::stack Nodes; - Nodes nodes_; - Errors errors_; - std::string document_; - Location begin_; - Location end_; - Location current_; - Location lastValueEnd_; - Value *lastValue_; - std::string commentsBefore_; - Features features_; - bool collectComments_; - }; - - /** \brief Read from 'sin' into 'root'. - - Always keep comments from the input JSON. - - This can be used to read a file into a particular sub-object. - For example: - \code - Json::Value root; - cin >> root["dir"]["file"]; - cout << root; - \endcode - Result: - \verbatim - { - "dir": { - "file": { - // The input stream JSON would be nested here. - } - } - } - \endverbatim - \throw std::exception on parse error. - \see Json::operator<<() - */ - std::istream& operator>>( std::istream&, Value& ); - -} // namespace Json - -#endif // CPPTL_JSON_READER_H_INCLUDED diff --git a/ServerMonitoringService/ServerMonitoringService/json/value.h b/ServerMonitoringService/ServerMonitoringService/json/value.h deleted file mode 100644 index 58bfd88..0000000 --- a/ServerMonitoringService/ServerMonitoringService/json/value.h +++ /dev/null @@ -1,1069 +0,0 @@ -#ifndef CPPTL_JSON_H_INCLUDED -# define CPPTL_JSON_H_INCLUDED - -# include "forwards.h" -# include -# include - -# ifndef JSON_USE_CPPTL_SMALLMAP -# include -# else -# include -# endif -# ifdef JSON_USE_CPPTL -# include -# endif - -/** \brief JSON (JavaScript Object Notation). - */ -namespace Json { - - /** \brief Type of the value held by a Value object. - */ - enum ValueType - { - nullValue = 0, ///< 'null' value - intValue, ///< signed integer value - uintValue, ///< unsigned integer value - realValue, ///< double value - stringValue, ///< UTF-8 string value - booleanValue, ///< bool value - arrayValue, ///< array value (ordered list) - objectValue ///< object value (collection of name/value pairs). - }; - - enum CommentPlacement - { - commentBefore = 0, ///< a comment placed on the line before a value - commentAfterOnSameLine, ///< a comment just after a value on the same line - commentAfter, ///< a comment on the line after a value (only make sense for root value) - numberOfCommentPlacement - }; - -//# ifdef JSON_USE_CPPTL -// typedef CppTL::AnyEnumerator EnumMemberNames; -// typedef CppTL::AnyEnumerator EnumValues; -//# endif - - /** \brief Lightweight wrapper to tag static string. - * - * Value constructor and objectValue member assignement takes advantage of the - * StaticString and avoid the cost of string duplication when storing the - * string or the member name. - * - * Example of usage: - * \code - * Json::Value aValue( StaticString("some text") ); - * Json::Value object; - * static const StaticString code("code"); - * object[code] = 1234; - * \endcode - */ - class JSON_API StaticString - { - public: - explicit StaticString( const char *czstring ) - : str_( czstring ) - { - } - - operator const char *() const - { - return str_; - } - - const char *c_str() const - { - return str_; - } - - private: - const char *str_; - }; - - /** \brief Represents a JSON value. - * - * This class is a discriminated union wrapper that can represents a: - * - signed integer [range: Value::minInt - Value::maxInt] - * - unsigned integer (range: 0 - Value::maxUInt) - * - double - * - UTF-8 string - * - boolean - * - 'null' - * - an ordered list of Value - * - collection of name/value pairs (javascript object) - * - * The type of the held value is represented by a #ValueType and - * can be obtained using type(). - * - * values of an #objectValue or #arrayValue can be accessed using operator[]() methods. - * Non const methods will automatically create the a #nullValue element - * if it does not exist. - * The sequence of an #arrayValue will be automatically resize and initialized - * with #nullValue. resize() can be used to enlarge or truncate an #arrayValue. - * - * The get() methods can be used to obtanis default value in the case the required element - * does not exist. - * - * It is possible to iterate over the list of a #objectValue values using - * the getMemberNames() method. - */ - class JSON_API Value - { - friend class ValueIteratorBase; -# ifdef JSON_VALUE_USE_INTERNAL_MAP - friend class ValueInternalLink; - friend class ValueInternalMap; -# endif - public: - typedef std::vector Members; - typedef ValueIterator iterator; - typedef ValueConstIterator const_iterator; - typedef Json::UInt UInt; - typedef Json::Int Int; - typedef UInt ArrayIndex; - - static const Value null; - static const Int minInt; - static const Int maxInt; - static const UInt maxUInt; - - private: -#ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION -# ifndef JSON_VALUE_USE_INTERNAL_MAP - class CZString - { - public: - enum DuplicationPolicy - { - noDuplication = 0, - duplicate, - duplicateOnCopy - }; - CZString( int index ); - CZString( const char *cstr, DuplicationPolicy allocate ); - CZString( const CZString &other ); - ~CZString(); - CZString &operator =( const CZString &other ); - bool operator<( const CZString &other ) const; - bool operator==( const CZString &other ) const; - int index() const; - const char *c_str() const; - bool isStaticString() const; - private: - void swap( CZString &other ); - const char *cstr_; - int index_; - }; - - public: -# ifndef JSON_USE_CPPTL_SMALLMAP - typedef std::map ObjectValues; -# else - typedef CppTL::SmallMap ObjectValues; -# endif // ifndef JSON_USE_CPPTL_SMALLMAP -# endif // ifndef JSON_VALUE_USE_INTERNAL_MAP -#endif // ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION - - public: - /** \brief Create a default Value of the given type. - - This is a very useful constructor. - To create an empty array, pass arrayValue. - To create an empty object, pass objectValue. - Another Value can then be set to this one by assignment. - This is useful since clear() and resize() will not alter types. - - Examples: - \code - Json::Value null_value; // null - Json::Value arr_value(Json::arrayValue); // [] - Json::Value obj_value(Json::objectValue); // {} - \endcode - */ - Value( ValueType type = nullValue ); - Value( Int value ); - Value( UInt value ); - Value( double value ); - Value( const char *value ); - Value( const char *beginValue, const char *endValue ); - /** \brief Constructs a value from a static string. - - * Like other value string constructor but do not duplicate the string for - * internal storage. The given string must remain alive after the call to this - * constructor. - * Example of usage: - * \code - * Json::Value aValue( StaticString("some text") ); - * \endcode - */ - Value( const StaticString &value ); - Value( const std::string &value ); -# ifdef JSON_USE_CPPTL - Value( const CppTL::ConstString &value ); -# endif - Value( bool value ); - Value( const Value &other ); - ~Value(); - - Value &operator=( const Value &other ); - /// Swap values. - /// \note Currently, comments are intentionally not swapped, for - /// both logic and efficiency. - void swap( Value &other ); - - ValueType type() const; - - bool operator <( const Value &other ) const; - bool operator <=( const Value &other ) const; - bool operator >=( const Value &other ) const; - bool operator >( const Value &other ) const; - - bool operator ==( const Value &other ) const; - bool operator !=( const Value &other ) const; - - int compare( const Value &other ); - - const char *asCString() const; - std::string asString() const; -# ifdef JSON_USE_CPPTL - CppTL::ConstString asConstString() const; -# endif - Int asInt() const; - UInt asUInt() const; - double asDouble() const; - bool asBool() const; - - bool isNull() const; - bool isBool() const; - bool isInt() const; - bool isUInt() const; - bool isIntegral() const; - bool isDouble() const; - bool isNumeric() const; - bool isString() const; - bool isArray() const; - bool isObject() const; - - bool isConvertibleTo( ValueType other ) const; - - /// Number of values in array or object - UInt size() const; - - /// \brief Return true if empty array, empty object, or null; - /// otherwise, false. - bool empty() const; - - /// Return isNull() - bool operator!() const; - - /// Remove all object members and array elements. - /// \pre type() is arrayValue, objectValue, or nullValue - /// \post type() is unchanged - void clear(); - - /// Resize the array to size elements. - /// New elements are initialized to null. - /// May only be called on nullValue or arrayValue. - /// \pre type() is arrayValue or nullValue - /// \post type() is arrayValue - void resize( UInt size ); - - /// Access an array element (zero based index ). - /// If the array contains less than index element, then null value are inserted - /// in the array so that its size is index+1. - /// (You may need to say 'value[0u]' to get your compiler to distinguish - /// this from the operator[] which takes a string.) - Value &operator[]( UInt index ); - /// Access an array element (zero based index ) - /// (You may need to say 'value[0u]' to get your compiler to distinguish - /// this from the operator[] which takes a string.) - const Value &operator[]( UInt index ) const; - /// If the array contains at least index+1 elements, returns the element value, - /// otherwise returns defaultValue. - Value get( UInt index, - const Value &defaultValue ) const; - /// Return true if index < size(). - bool isValidIndex( UInt index ) const; - /// \brief Append value to array at the end. - /// - /// Equivalent to jsonvalue[jsonvalue.size()] = value; - Value &append( const Value &value ); - - /// Access an object value by name, create a null member if it does not exist. - Value &operator[]( const char *key ); - /// Access an object value by name, returns null if there is no member with that name. - const Value &operator[]( const char *key ) const; - /// Access an object value by name, create a null member if it does not exist. - Value &operator[]( const std::string &key ); - /// Access an object value by name, returns null if there is no member with that name. - const Value &operator[]( const std::string &key ) const; - /** \brief Access an object value by name, create a null member if it does not exist. - - * If the object as no entry for that name, then the member name used to store - * the new entry is not duplicated. - * Example of use: - * \code - * Json::Value object; - * static const StaticString code("code"); - * object[code] = 1234; - * \endcode - */ - Value &operator[]( const StaticString &key ); -# ifdef JSON_USE_CPPTL - /// Access an object value by name, create a null member if it does not exist. - Value &operator[]( const CppTL::ConstString &key ); - /// Access an object value by name, returns null if there is no member with that name. - const Value &operator[]( const CppTL::ConstString &key ) const; -# endif - /// Return the member named key if it exist, defaultValue otherwise. - Value get( const char *key, - const Value &defaultValue ) const; - /// Return the member named key if it exist, defaultValue otherwise. - Value get( const std::string &key, - const Value &defaultValue ) const; -# ifdef JSON_USE_CPPTL - /// Return the member named key if it exist, defaultValue otherwise. - Value get( const CppTL::ConstString &key, - const Value &defaultValue ) const; -# endif - /// \brief Remove and return the named member. - /// - /// Do nothing if it did not exist. - /// \return the removed Value, or null. - /// \pre type() is objectValue or nullValue - /// \post type() is unchanged - Value removeMember( const char* key ); - /// Same as removeMember(const char*) - Value removeMember( const std::string &key ); - - /// Return true if the object has a member named key. - bool isMember( const char *key ) const; - /// Return true if the object has a member named key. - bool isMember( const std::string &key ) const; -# ifdef JSON_USE_CPPTL - /// Return true if the object has a member named key. - bool isMember( const CppTL::ConstString &key ) const; -# endif - - /// \brief Return a list of the member names. - /// - /// If null, return an empty list. - /// \pre type() is objectValue or nullValue - /// \post if type() was nullValue, it remains nullValue - Members getMemberNames() const; - -//# ifdef JSON_USE_CPPTL -// EnumMemberNames enumMemberNames() const; -// EnumValues enumValues() const; -//# endif - - /// Comments must be //... or /* ... */ - void setComment( const char *comment, - CommentPlacement placement ); - /// Comments must be //... or /* ... */ - void setComment( const std::string &comment, - CommentPlacement placement ); - bool hasComment( CommentPlacement placement ) const; - /// Include delimiters and embedded newlines. - std::string getComment( CommentPlacement placement ) const; - - std::string toStyledString() const; - - const_iterator begin() const; - const_iterator end() const; - - iterator begin(); - iterator end(); - - private: - Value &resolveReference( const char *key, - bool isStatic ); - -# ifdef JSON_VALUE_USE_INTERNAL_MAP - inline bool isItemAvailable() const - { - return itemIsUsed_ == 0; - } - - inline void setItemUsed( bool isUsed = true ) - { - itemIsUsed_ = isUsed ? 1 : 0; - } - - inline bool isMemberNameStatic() const - { - return memberNameIsStatic_ == 0; - } - - inline void setMemberNameIsStatic( bool isStatic ) - { - memberNameIsStatic_ = isStatic ? 1 : 0; - } -# endif // # ifdef JSON_VALUE_USE_INTERNAL_MAP - - private: - struct CommentInfo - { - CommentInfo(); - ~CommentInfo(); - - void setComment( const char *text ); - - char *comment_; - }; - - //struct MemberNamesTransform - //{ - // typedef const char *result_type; - // const char *operator()( const CZString &name ) const - // { - // return name.c_str(); - // } - //}; - - union ValueHolder - { - Int int_; - UInt uint_; - double real_; - bool bool_; - char *string_; -# ifdef JSON_VALUE_USE_INTERNAL_MAP - ValueInternalArray *array_; - ValueInternalMap *map_; -#else - ObjectValues *map_; -# endif - } value_; - ValueType type_ : 8; - int allocated_ : 1; // Notes: if declared as bool, bitfield is useless. -# ifdef JSON_VALUE_USE_INTERNAL_MAP - unsigned int itemIsUsed_ : 1; // used by the ValueInternalMap container. - int memberNameIsStatic_ : 1; // used by the ValueInternalMap container. -# endif - CommentInfo *comments_; - }; - - - /** \brief Experimental and untested: represents an element of the "path" to access a node. - */ - class PathArgument - { - public: - friend class Path; - - PathArgument(); - PathArgument( UInt index ); - PathArgument( const char *key ); - PathArgument( const std::string &key ); - - private: - enum Kind - { - kindNone = 0, - kindIndex, - kindKey - }; - std::string key_; - UInt index_; - Kind kind_; - }; - - /** \brief Experimental and untested: represents a "path" to access a node. - * - * Syntax: - * - "." => root node - * - ".[n]" => elements at index 'n' of root node (an array value) - * - ".name" => member named 'name' of root node (an object value) - * - ".name1.name2.name3" - * - ".[0][1][2].name1[3]" - * - ".%" => member name is provided as parameter - * - ".[%]" => index is provied as parameter - */ - class Path - { - public: - Path( const std::string &path, - const PathArgument &a1 = PathArgument(), - const PathArgument &a2 = PathArgument(), - const PathArgument &a3 = PathArgument(), - const PathArgument &a4 = PathArgument(), - const PathArgument &a5 = PathArgument() ); - - const Value &resolve( const Value &root ) const; - Value resolve( const Value &root, - const Value &defaultValue ) const; - /// Creates the "path" to access the specified node and returns a reference on the node. - Value &make( Value &root ) const; - - private: - typedef std::vector InArgs; - typedef std::vector Args; - - void makePath( const std::string &path, - const InArgs &in ); - void addPathInArg( const std::string &path, - const InArgs &in, - InArgs::const_iterator &itInArg, - PathArgument::Kind kind ); - void invalidPath( const std::string &path, - int location ); - - Args args_; - }; - - /** \brief Experimental do not use: Allocator to customize member name and string value memory management done by Value. - * - * - makeMemberName() and releaseMemberName() are called to respectively duplicate and - * free an Json::objectValue member name. - * - duplicateStringValue() and releaseStringValue() are called similarly to - * duplicate and free a Json::stringValue value. - */ - class ValueAllocator - { - public: - enum { unknown = (unsigned)-1 }; - - virtual ~ValueAllocator(); - - virtual char *makeMemberName( const char *memberName ) = 0; - virtual void releaseMemberName( char *memberName ) = 0; - virtual char *duplicateStringValue( const char *value, - unsigned int length = unknown ) = 0; - virtual void releaseStringValue( char *value ) = 0; - }; - -#ifdef JSON_VALUE_USE_INTERNAL_MAP - /** \brief Allocator to customize Value internal map. - * Below is an example of a simple implementation (default implementation actually - * use memory pool for speed). - * \code - class DefaultValueMapAllocator : public ValueMapAllocator - { - public: // overridden from ValueMapAllocator - virtual ValueInternalMap *newMap() - { - return new ValueInternalMap(); - } - - virtual ValueInternalMap *newMapCopy( const ValueInternalMap &other ) - { - return new ValueInternalMap( other ); - } - - virtual void destructMap( ValueInternalMap *map ) - { - delete map; - } - - virtual ValueInternalLink *allocateMapBuckets( unsigned int size ) - { - return new ValueInternalLink[size]; - } - - virtual void releaseMapBuckets( ValueInternalLink *links ) - { - delete [] links; - } - - virtual ValueInternalLink *allocateMapLink() - { - return new ValueInternalLink(); - } - - virtual void releaseMapLink( ValueInternalLink *link ) - { - delete link; - } - }; - * \endcode - */ - class JSON_API ValueMapAllocator - { - public: - virtual ~ValueMapAllocator(); - virtual ValueInternalMap *newMap() = 0; - virtual ValueInternalMap *newMapCopy( const ValueInternalMap &other ) = 0; - virtual void destructMap( ValueInternalMap *map ) = 0; - virtual ValueInternalLink *allocateMapBuckets( unsigned int size ) = 0; - virtual void releaseMapBuckets( ValueInternalLink *links ) = 0; - virtual ValueInternalLink *allocateMapLink() = 0; - virtual void releaseMapLink( ValueInternalLink *link ) = 0; - }; - - /** \brief ValueInternalMap hash-map bucket chain link (for internal use only). - * \internal previous_ & next_ allows for bidirectional traversal. - */ - class JSON_API ValueInternalLink - { - public: - enum { itemPerLink = 6 }; // sizeof(ValueInternalLink) = 128 on 32 bits architecture. - enum InternalFlags { - flagAvailable = 0, - flagUsed = 1 - }; - - ValueInternalLink(); - - ~ValueInternalLink(); - - Value items_[itemPerLink]; - char *keys_[itemPerLink]; - ValueInternalLink *previous_; - ValueInternalLink *next_; - }; - - - /** \brief A linked page based hash-table implementation used internally by Value. - * \internal ValueInternalMap is a tradional bucket based hash-table, with a linked - * list in each bucket to handle collision. There is an addional twist in that - * each node of the collision linked list is a page containing a fixed amount of - * value. This provides a better compromise between memory usage and speed. - * - * Each bucket is made up of a chained list of ValueInternalLink. The last - * link of a given bucket can be found in the 'previous_' field of the following bucket. - * The last link of the last bucket is stored in tailLink_ as it has no following bucket. - * Only the last link of a bucket may contains 'available' item. The last link always - * contains at least one element unless is it the bucket one very first link. - */ - class JSON_API ValueInternalMap - { - friend class ValueIteratorBase; - friend class Value; - public: - typedef unsigned int HashKey; - typedef unsigned int BucketIndex; - -# ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION - struct IteratorState - { - IteratorState() - : map_(0) - , link_(0) - , itemIndex_(0) - , bucketIndex_(0) - { - } - ValueInternalMap *map_; - ValueInternalLink *link_; - BucketIndex itemIndex_; - BucketIndex bucketIndex_; - }; -# endif // ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION - - ValueInternalMap(); - ValueInternalMap( const ValueInternalMap &other ); - ValueInternalMap &operator =( const ValueInternalMap &other ); - ~ValueInternalMap(); - - void swap( ValueInternalMap &other ); - - BucketIndex size() const; - - void clear(); - - bool reserveDelta( BucketIndex growth ); - - bool reserve( BucketIndex newItemCount ); - - const Value *find( const char *key ) const; - - Value *find( const char *key ); - - Value &resolveReference( const char *key, - bool isStatic ); - - void remove( const char *key ); - - void doActualRemove( ValueInternalLink *link, - BucketIndex index, - BucketIndex bucketIndex ); - - ValueInternalLink *&getLastLinkInBucket( BucketIndex bucketIndex ); - - Value &setNewItem( const char *key, - bool isStatic, - ValueInternalLink *link, - BucketIndex index ); - - Value &unsafeAdd( const char *key, - bool isStatic, - HashKey hashedKey ); - - HashKey hash( const char *key ) const; - - int compare( const ValueInternalMap &other ) const; - - private: - void makeBeginIterator( IteratorState &it ) const; - void makeEndIterator( IteratorState &it ) const; - static bool equals( const IteratorState &x, const IteratorState &other ); - static void increment( IteratorState &iterator ); - static void incrementBucket( IteratorState &iterator ); - static void decrement( IteratorState &iterator ); - static const char *key( const IteratorState &iterator ); - static const char *key( const IteratorState &iterator, bool &isStatic ); - static Value &value( const IteratorState &iterator ); - static int distance( const IteratorState &x, const IteratorState &y ); - - private: - ValueInternalLink *buckets_; - ValueInternalLink *tailLink_; - BucketIndex bucketsSize_; - BucketIndex itemCount_; - }; - - /** \brief A simplified deque implementation used internally by Value. - * \internal - * It is based on a list of fixed "page", each page contains a fixed number of items. - * Instead of using a linked-list, a array of pointer is used for fast item look-up. - * Look-up for an element is as follow: - * - compute page index: pageIndex = itemIndex / itemsPerPage - * - look-up item in page: pages_[pageIndex][itemIndex % itemsPerPage] - * - * Insertion is amortized constant time (only the array containing the index of pointers - * need to be reallocated when items are appended). - */ - class JSON_API ValueInternalArray - { - friend class Value; - friend class ValueIteratorBase; - public: - enum { itemsPerPage = 8 }; // should be a power of 2 for fast divide and modulo. - typedef Value::ArrayIndex ArrayIndex; - typedef unsigned int PageIndex; - -# ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION - struct IteratorState // Must be a POD - { - IteratorState() - : array_(0) - , currentPageIndex_(0) - , currentItemIndex_(0) - { - } - ValueInternalArray *array_; - Value **currentPageIndex_; - unsigned int currentItemIndex_; - }; -# endif // ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION - - ValueInternalArray(); - ValueInternalArray( const ValueInternalArray &other ); - ValueInternalArray &operator =( const ValueInternalArray &other ); - ~ValueInternalArray(); - void swap( ValueInternalArray &other ); - - void clear(); - void resize( ArrayIndex newSize ); - - Value &resolveReference( ArrayIndex index ); - - Value *find( ArrayIndex index ) const; - - ArrayIndex size() const; - - int compare( const ValueInternalArray &other ) const; - - private: - static bool equals( const IteratorState &x, const IteratorState &other ); - static void increment( IteratorState &iterator ); - static void decrement( IteratorState &iterator ); - static Value &dereference( const IteratorState &iterator ); - static Value &unsafeDereference( const IteratorState &iterator ); - static int distance( const IteratorState &x, const IteratorState &y ); - static ArrayIndex indexOf( const IteratorState &iterator ); - void makeBeginIterator( IteratorState &it ) const; - void makeEndIterator( IteratorState &it ) const; - void makeIterator( IteratorState &it, ArrayIndex index ) const; - - void makeIndexValid( ArrayIndex index ); - - Value **pages_; - ArrayIndex size_; - PageIndex pageCount_; - }; - - /** \brief Experimental: do not use. Allocator to customize Value internal array. - * Below is an example of a simple implementation (actual implementation use - * memory pool). - \code -class DefaultValueArrayAllocator : public ValueArrayAllocator -{ -public: // overridden from ValueArrayAllocator - virtual ~DefaultValueArrayAllocator() - { - } - - virtual ValueInternalArray *newArray() - { - return new ValueInternalArray(); - } - - virtual ValueInternalArray *newArrayCopy( const ValueInternalArray &other ) - { - return new ValueInternalArray( other ); - } - - virtual void destruct( ValueInternalArray *array ) - { - delete array; - } - - virtual void reallocateArrayPageIndex( Value **&indexes, - ValueInternalArray::PageIndex &indexCount, - ValueInternalArray::PageIndex minNewIndexCount ) - { - ValueInternalArray::PageIndex newIndexCount = (indexCount*3)/2 + 1; - if ( minNewIndexCount > newIndexCount ) - newIndexCount = minNewIndexCount; - void *newIndexes = realloc( indexes, sizeof(Value*) * newIndexCount ); - if ( !newIndexes ) - throw std::bad_alloc(); - indexCount = newIndexCount; - indexes = static_cast( newIndexes ); - } - virtual void releaseArrayPageIndex( Value **indexes, - ValueInternalArray::PageIndex indexCount ) - { - if ( indexes ) - free( indexes ); - } - - virtual Value *allocateArrayPage() - { - return static_cast( malloc( sizeof(Value) * ValueInternalArray::itemsPerPage ) ); - } - - virtual void releaseArrayPage( Value *value ) - { - if ( value ) - free( value ); - } -}; - \endcode - */ - class JSON_API ValueArrayAllocator - { - public: - virtual ~ValueArrayAllocator(); - virtual ValueInternalArray *newArray() = 0; - virtual ValueInternalArray *newArrayCopy( const ValueInternalArray &other ) = 0; - virtual void destructArray( ValueInternalArray *array ) = 0; - /** \brief Reallocate array page index. - * Reallocates an array of pointer on each page. - * \param indexes [input] pointer on the current index. May be \c NULL. - * [output] pointer on the new index of at least - * \a minNewIndexCount pages. - * \param indexCount [input] current number of pages in the index. - * [output] number of page the reallocated index can handle. - * \b MUST be >= \a minNewIndexCount. - * \param minNewIndexCount Minimum number of page the new index must be able to - * handle. - */ - virtual void reallocateArrayPageIndex( Value **&indexes, - ValueInternalArray::PageIndex &indexCount, - ValueInternalArray::PageIndex minNewIndexCount ) = 0; - virtual void releaseArrayPageIndex( Value **indexes, - ValueInternalArray::PageIndex indexCount ) = 0; - virtual Value *allocateArrayPage() = 0; - virtual void releaseArrayPage( Value *value ) = 0; - }; -#endif // #ifdef JSON_VALUE_USE_INTERNAL_MAP - - - /** \brief base class for Value iterators. - * - */ - class ValueIteratorBase - { - public: - typedef unsigned int size_t; - typedef int difference_type; - typedef ValueIteratorBase SelfType; - - ValueIteratorBase(); -#ifndef JSON_VALUE_USE_INTERNAL_MAP - explicit ValueIteratorBase( const Value::ObjectValues::iterator ¤t ); -#else - ValueIteratorBase( const ValueInternalArray::IteratorState &state ); - ValueIteratorBase( const ValueInternalMap::IteratorState &state ); -#endif - - bool operator ==( const SelfType &other ) const - { - return isEqual( other ); - } - - bool operator !=( const SelfType &other ) const - { - return !isEqual( other ); - } - - difference_type operator -( const SelfType &other ) const - { - return computeDistance( other ); - } - - /// Return either the index or the member name of the referenced value as a Value. - Value key() const; - - /// Return the index of the referenced Value. -1 if it is not an arrayValue. - UInt index() const; - - /// Return the member name of the referenced Value. "" if it is not an objectValue. - const char *memberName() const; - - protected: - Value &deref() const; - - void increment(); - - void decrement(); - - difference_type computeDistance( const SelfType &other ) const; - - bool isEqual( const SelfType &other ) const; - - void copy( const SelfType &other ); - - private: -#ifndef JSON_VALUE_USE_INTERNAL_MAP - Value::ObjectValues::iterator current_; - // Indicates that iterator is for a null value. - bool isNull_; -#else - union - { - ValueInternalArray::IteratorState array_; - ValueInternalMap::IteratorState map_; - } iterator_; - bool isArray_; -#endif - }; - - /** \brief const iterator for object and array value. - * - */ - class ValueConstIterator : public ValueIteratorBase - { - friend class Value; - public: - typedef unsigned int size_t; - typedef int difference_type; - typedef const Value &reference; - typedef const Value *pointer; - typedef ValueConstIterator SelfType; - - ValueConstIterator(); - private: - /*! \internal Use by Value to create an iterator. - */ -#ifndef JSON_VALUE_USE_INTERNAL_MAP - explicit ValueConstIterator( const Value::ObjectValues::iterator ¤t ); -#else - ValueConstIterator( const ValueInternalArray::IteratorState &state ); - ValueConstIterator( const ValueInternalMap::IteratorState &state ); -#endif - public: - SelfType &operator =( const ValueIteratorBase &other ); - - SelfType operator++( int ) - { - SelfType temp( *this ); - ++*this; - return temp; - } - - SelfType operator--( int ) - { - SelfType temp( *this ); - --*this; - return temp; - } - - SelfType &operator--() - { - decrement(); - return *this; - } - - SelfType &operator++() - { - increment(); - return *this; - } - - reference operator *() const - { - return deref(); - } - }; - - - /** \brief Iterator for object and array value. - */ - class ValueIterator : public ValueIteratorBase - { - friend class Value; - public: - typedef unsigned int size_t; - typedef int difference_type; - typedef Value &reference; - typedef Value *pointer; - typedef ValueIterator SelfType; - - ValueIterator(); - ValueIterator( const ValueConstIterator &other ); - ValueIterator( const ValueIterator &other ); - private: - /*! \internal Use by Value to create an iterator. - */ -#ifndef JSON_VALUE_USE_INTERNAL_MAP - explicit ValueIterator( const Value::ObjectValues::iterator ¤t ); -#else - ValueIterator( const ValueInternalArray::IteratorState &state ); - ValueIterator( const ValueInternalMap::IteratorState &state ); -#endif - public: - - SelfType &operator =( const SelfType &other ); - - SelfType operator++( int ) - { - SelfType temp( *this ); - ++*this; - return temp; - } - - SelfType operator--( int ) - { - SelfType temp( *this ); - --*this; - return temp; - } - - SelfType &operator--() - { - decrement(); - return *this; - } - - SelfType &operator++() - { - increment(); - return *this; - } - - reference operator *() const - { - return deref(); - } - }; - - -} // namespace Json - - -#endif // CPPTL_JSON_H_INCLUDED diff --git a/ServerMonitoringService/ServerMonitoringService/json/writer.h b/ServerMonitoringService/ServerMonitoringService/json/writer.h deleted file mode 100644 index 5f4b83b..0000000 --- a/ServerMonitoringService/ServerMonitoringService/json/writer.h +++ /dev/null @@ -1,174 +0,0 @@ -#ifndef JSON_WRITER_H_INCLUDED -# define JSON_WRITER_H_INCLUDED - -# include "value.h" -# include -# include -# include - -namespace Json { - - class Value; - - /** \brief Abstract class for writers. - */ - class JSON_API Writer - { - public: - virtual ~Writer(); - - virtual std::string write( const Value &root ) = 0; - }; - - /** \brief Outputs a Value in JSON format without formatting (not human friendly). - * - * The JSON document is written in a single line. It is not intended for 'human' consumption, - * but may be usefull to support feature such as RPC where bandwith is limited. - * \sa Reader, Value - */ - class JSON_API FastWriter : public Writer - { - public: - FastWriter(); - virtual ~FastWriter(){} - - void enableYAMLCompatibility(); - - public: // overridden from Writer - virtual std::string write( const Value &root ); - - private: - void writeValue( const Value &value ); - - std::string document_; - bool yamlCompatiblityEnabled_; - }; - - /** \brief Writes a Value in JSON format in a human friendly way. - * - * The rules for line break and indent are as follow: - * - Object value: - * - if empty then print {} without indent and line break - * - if not empty the print '{', line break & indent, print one value per line - * and then unindent and line break and print '}'. - * - Array value: - * - if empty then print [] without indent and line break - * - if the array contains no object value, empty array or some other value types, - * and all the values fit on one lines, then print the array on a single line. - * - otherwise, it the values do not fit on one line, or the array contains - * object or non empty array, then print one value per line. - * - * If the Value have comments then they are outputed according to their #CommentPlacement. - * - * \sa Reader, Value, Value::setComment() - */ - class JSON_API StyledWriter: public Writer - { - public: - StyledWriter(); - virtual ~StyledWriter(){} - - public: // overridden from Writer - /** \brief Serialize a Value in JSON format. - * \param root Value to serialize. - * \return String containing the JSON document that represents the root value. - */ - virtual std::string write( const Value &root ); - - private: - void writeValue( const Value &value ); - void writeArrayValue( const Value &value ); - bool isMultineArray( const Value &value ); - void pushValue( const std::string &value ); - void writeIndent(); - void writeWithIndent( const std::string &value ); - void indent(); - void unindent(); - void writeCommentBeforeValue( const Value &root ); - void writeCommentAfterValueOnSameLine( const Value &root ); - bool hasCommentForValue( const Value &value ); - static std::string normalizeEOL( const std::string &text ); - - typedef std::vector ChildValues; - - ChildValues childValues_; - std::string document_; - std::string indentString_; - int rightMargin_; - int indentSize_; - bool addChildValues_; - }; - - /** \brief Writes a Value in JSON format in a human friendly way, - to a stream rather than to a string. - * - * The rules for line break and indent are as follow: - * - Object value: - * - if empty then print {} without indent and line break - * - if not empty the print '{', line break & indent, print one value per line - * and then unindent and line break and print '}'. - * - Array value: - * - if empty then print [] without indent and line break - * - if the array contains no object value, empty array or some other value types, - * and all the values fit on one lines, then print the array on a single line. - * - otherwise, it the values do not fit on one line, or the array contains - * object or non empty array, then print one value per line. - * - * If the Value have comments then they are outputed according to their #CommentPlacement. - * - * \param indentation Each level will be indented by this amount extra. - * \sa Reader, Value, Value::setComment() - */ - class JSON_API StyledStreamWriter - { - public: - StyledStreamWriter( std::string indentation="\t" ); - ~StyledStreamWriter(){} - - public: - /** \brief Serialize a Value in JSON format. - * \param out Stream to write to. (Can be ostringstream, e.g.) - * \param root Value to serialize. - * \note There is no point in deriving from Writer, since write() should not return a value. - */ - void write( std::ostream &out, const Value &root ); - - private: - void writeValue( const Value &value ); - void writeArrayValue( const Value &value ); - bool isMultineArray( const Value &value ); - void pushValue( const std::string &value ); - void writeIndent(); - void writeWithIndent( const std::string &value ); - void indent(); - void unindent(); - void writeCommentBeforeValue( const Value &root ); - void writeCommentAfterValueOnSameLine( const Value &root ); - bool hasCommentForValue( const Value &value ); - static std::string normalizeEOL( const std::string &text ); - - typedef std::vector ChildValues; - - ChildValues childValues_; - std::ostream* document_; - std::string indentString_; - int rightMargin_; - std::string indentation_; - bool addChildValues_; - }; - - std::string JSON_API valueToString( Int value ); - std::string JSON_API valueToString( UInt value ); - std::string JSON_API valueToString( double value ); - std::string JSON_API valueToString( bool value ); - std::string JSON_API valueToQuotedString( const char *value ); - - /// \brief Output using the StyledStreamWriter. - /// \see Json::operator>>() - std::ostream& operator<<( std::ostream&, const Value &root ); - -} // namespace Json - - - -#endif // JSON_WRITER_H_INCLUDED diff --git a/ServerMonitoringService/ServerMonitoringService/main.cpp b/ServerMonitoringService/ServerMonitoringService/main.cpp index db21696..63e2fa8 100644 --- a/ServerMonitoringService/ServerMonitoringService/main.cpp +++ b/ServerMonitoringService/ServerMonitoringService/main.cpp @@ -31,11 +31,12 @@ void onShellExecute() void mainStart() { DataManager dataManager = DataManager(); - SystemInfo* systemInfo = dataManager.getSystem(); + // SystemInfo* systemInfo = dataManager.getSystem(); system("pause"); } +/* int main(int argc, char* argv[]) { // ޸ @@ -56,4 +57,4 @@ int main(int argc, char* argv[]) } return 0; -} +}*/ diff --git a/ServerMonitoringService/ServerMonitoringService/network socket/NetworkManager.cpp b/ServerMonitoringService/ServerMonitoringService/network socket/NetworkManager.cpp index 7afb4a8..5cf4ab3 100644 --- a/ServerMonitoringService/ServerMonitoringService/network socket/NetworkManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/network socket/NetworkManager.cpp @@ -17,10 +17,8 @@ int NetworkManager::Start() while (true) { - //std::cout << "SEND()" << std::endl; - char * buf = "1\0"; - - if (!NetworkListener::Send(socket, buf,10)) + int len = sizeof(buf); + if (!NetworkListener::Send(socket, buf, len)) { return 0; } diff --git a/ServerMonitoringService/ServerMonitoringService/network socket/NetworkManager.hpp b/ServerMonitoringService/ServerMonitoringService/network socket/NetworkManager.hpp index 50953e9..6fe4070 100644 --- a/ServerMonitoringService/ServerMonitoringService/network socket/NetworkManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/network socket/NetworkManager.hpp @@ -17,6 +17,7 @@ class NetworkManager private: NetworkListener* networkListener = NULL; SOCKET socket; + TCHAR buf[SEND_BUFFER_SIZE]; public: NetworkManager() { diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/allocators.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/allocators.h new file mode 100644 index 0000000..98affe0 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/allocators.h @@ -0,0 +1,271 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_ALLOCATORS_H_ +#define RAPIDJSON_ALLOCATORS_H_ + +#include "rapidjson.h" + +RAPIDJSON_NAMESPACE_BEGIN + +/////////////////////////////////////////////////////////////////////////////// +// Allocator + +/*! \class rapidjson::Allocator + \brief Concept for allocating, resizing and freeing memory block. + + Note that Malloc() and Realloc() are non-static but Free() is static. + + So if an allocator need to support Free(), it needs to put its pointer in + the header of memory block. + +\code +concept Allocator { + static const bool kNeedFree; //!< Whether this allocator needs to call Free(). + + // Allocate a memory block. + // \param size of the memory block in bytes. + // \returns pointer to the memory block. + void* Malloc(size_t size); + + // Resize a memory block. + // \param originalPtr The pointer to current memory block. Null pointer is permitted. + // \param originalSize The current size in bytes. (Design issue: since some allocator may not book-keep this, explicitly pass to it can save memory.) + // \param newSize the new size in bytes. + void* Realloc(void* originalPtr, size_t originalSize, size_t newSize); + + // Free a memory block. + // \param pointer to the memory block. Null pointer is permitted. + static void Free(void *ptr); +}; +\endcode +*/ + +/////////////////////////////////////////////////////////////////////////////// +// CrtAllocator + +//! C-runtime library allocator. +/*! This class is just wrapper for standard C library memory routines. + \note implements Allocator concept +*/ +class CrtAllocator { +public: + static const bool kNeedFree = true; + void* Malloc(size_t size) { + if (size) // behavior of malloc(0) is implementation defined. + return std::malloc(size); + else + return NULL; // standardize to returning NULL. + } + void* Realloc(void* originalPtr, size_t originalSize, size_t newSize) { + (void)originalSize; + if (newSize == 0) { + std::free(originalPtr); + return NULL; + } + return std::realloc(originalPtr, newSize); + } + static void Free(void *ptr) { std::free(ptr); } +}; + +/////////////////////////////////////////////////////////////////////////////// +// MemoryPoolAllocator + +//! Default memory allocator used by the parser and DOM. +/*! This allocator allocate memory blocks from pre-allocated memory chunks. + + It does not free memory blocks. And Realloc() only allocate new memory. + + The memory chunks are allocated by BaseAllocator, which is CrtAllocator by default. + + User may also supply a buffer as the first chunk. + + If the user-buffer is full then additional chunks are allocated by BaseAllocator. + + The user-buffer is not deallocated by this allocator. + + \tparam BaseAllocator the allocator type for allocating memory chunks. Default is CrtAllocator. + \note implements Allocator concept +*/ +template +class MemoryPoolAllocator { +public: + static const bool kNeedFree = false; //!< Tell users that no need to call Free() with this allocator. (concept Allocator) + + //! Constructor with chunkSize. + /*! \param chunkSize The size of memory chunk. The default is kDefaultChunkSize. + \param baseAllocator The allocator for allocating memory chunks. + */ + MemoryPoolAllocator(size_t chunkSize = kDefaultChunkCapacity, BaseAllocator* baseAllocator = 0) : + chunkHead_(0), chunk_capacity_(chunkSize), userBuffer_(0), baseAllocator_(baseAllocator), ownBaseAllocator_(0) + { + } + + //! Constructor with user-supplied buffer. + /*! The user buffer will be used firstly. When it is full, memory pool allocates new chunk with chunk size. + + The user buffer will not be deallocated when this allocator is destructed. + + \param buffer User supplied buffer. + \param size Size of the buffer in bytes. It must at least larger than sizeof(ChunkHeader). + \param chunkSize The size of memory chunk. The default is kDefaultChunkSize. + \param baseAllocator The allocator for allocating memory chunks. + */ + MemoryPoolAllocator(void *buffer, size_t size, size_t chunkSize = kDefaultChunkCapacity, BaseAllocator* baseAllocator = 0) : + chunkHead_(0), chunk_capacity_(chunkSize), userBuffer_(buffer), baseAllocator_(baseAllocator), ownBaseAllocator_(0) + { + RAPIDJSON_ASSERT(buffer != 0); + RAPIDJSON_ASSERT(size > sizeof(ChunkHeader)); + chunkHead_ = reinterpret_cast(buffer); + chunkHead_->capacity = size - sizeof(ChunkHeader); + chunkHead_->size = 0; + chunkHead_->next = 0; + } + + //! Destructor. + /*! This deallocates all memory chunks, excluding the user-supplied buffer. + */ + ~MemoryPoolAllocator() { + Clear(); + RAPIDJSON_DELETE(ownBaseAllocator_); + } + + //! Deallocates all memory chunks, excluding the user-supplied buffer. + void Clear() { + while (chunkHead_ && chunkHead_ != userBuffer_) { + ChunkHeader* next = chunkHead_->next; + baseAllocator_->Free(chunkHead_); + chunkHead_ = next; + } + if (chunkHead_ && chunkHead_ == userBuffer_) + chunkHead_->size = 0; // Clear user buffer + } + + //! Computes the total capacity of allocated memory chunks. + /*! \return total capacity in bytes. + */ + size_t Capacity() const { + size_t capacity = 0; + for (ChunkHeader* c = chunkHead_; c != 0; c = c->next) + capacity += c->capacity; + return capacity; + } + + //! Computes the memory blocks allocated. + /*! \return total used bytes. + */ + size_t Size() const { + size_t size = 0; + for (ChunkHeader* c = chunkHead_; c != 0; c = c->next) + size += c->size; + return size; + } + + //! Allocates a memory block. (concept Allocator) + void* Malloc(size_t size) { + if (!size) + return NULL; + + size = RAPIDJSON_ALIGN(size); + if (chunkHead_ == 0 || chunkHead_->size + size > chunkHead_->capacity) + if (!AddChunk(chunk_capacity_ > size ? chunk_capacity_ : size)) + return NULL; + + void *buffer = reinterpret_cast(chunkHead_) + RAPIDJSON_ALIGN(sizeof(ChunkHeader)) + chunkHead_->size; + chunkHead_->size += size; + return buffer; + } + + //! Resizes a memory block (concept Allocator) + void* Realloc(void* originalPtr, size_t originalSize, size_t newSize) { + if (originalPtr == 0) + return Malloc(newSize); + + if (newSize == 0) + return NULL; + + originalSize = RAPIDJSON_ALIGN(originalSize); + newSize = RAPIDJSON_ALIGN(newSize); + + // Do not shrink if new size is smaller than original + if (originalSize >= newSize) + return originalPtr; + + // Simply expand it if it is the last allocation and there is sufficient space + if (originalPtr == reinterpret_cast(chunkHead_) + RAPIDJSON_ALIGN(sizeof(ChunkHeader)) + chunkHead_->size - originalSize) { + size_t increment = static_cast(newSize - originalSize); + if (chunkHead_->size + increment <= chunkHead_->capacity) { + chunkHead_->size += increment; + return originalPtr; + } + } + + // Realloc process: allocate and copy memory, do not free original buffer. + if (void* newBuffer = Malloc(newSize)) { + if (originalSize) + std::memcpy(newBuffer, originalPtr, originalSize); + return newBuffer; + } + else + return NULL; + } + + //! Frees a memory block (concept Allocator) + static void Free(void *ptr) { (void)ptr; } // Do nothing + +private: + //! Copy constructor is not permitted. + MemoryPoolAllocator(const MemoryPoolAllocator& rhs) /* = delete */; + //! Copy assignment operator is not permitted. + MemoryPoolAllocator& operator=(const MemoryPoolAllocator& rhs) /* = delete */; + + //! Creates a new chunk. + /*! \param capacity Capacity of the chunk in bytes. + \return true if success. + */ + bool AddChunk(size_t capacity) { + if (!baseAllocator_) + ownBaseAllocator_ = baseAllocator_ = RAPIDJSON_NEW(BaseAllocator()); + if (ChunkHeader* chunk = reinterpret_cast(baseAllocator_->Malloc(RAPIDJSON_ALIGN(sizeof(ChunkHeader)) + capacity))) { + chunk->capacity = capacity; + chunk->size = 0; + chunk->next = chunkHead_; + chunkHead_ = chunk; + return true; + } + else + return false; + } + + static const int kDefaultChunkCapacity = 64 * 1024; //!< Default chunk capacity. + + //! Chunk header for perpending to each chunk. + /*! Chunks are stored as a singly linked list. + */ + struct ChunkHeader { + size_t capacity; //!< Capacity of the chunk in bytes (excluding the header itself). + size_t size; //!< Current size of allocated memory in bytes. + ChunkHeader *next; //!< Next chunk in the linked list. + }; + + ChunkHeader *chunkHead_; //!< Head of the chunk linked-list. Only the head chunk serves allocation. + size_t chunk_capacity_; //!< The minimum capacity of chunk when they are allocated. + void *userBuffer_; //!< User supplied buffer. + BaseAllocator* baseAllocator_; //!< base allocator for allocating memory chunks. + BaseAllocator* ownBaseAllocator_; //!< base allocator created by this object. +}; + +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_ENCODINGS_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/document.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/document.h new file mode 100644 index 0000000..e3e20df --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/document.h @@ -0,0 +1,2575 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_DOCUMENT_H_ +#define RAPIDJSON_DOCUMENT_H_ + +/*! \file document.h */ + +#include "reader.h" +#include "internal/meta.h" +#include "internal/strfunc.h" +#include "memorystream.h" +#include "encodedstream.h" +#include // placement new +#include + +RAPIDJSON_DIAG_PUSH +#ifdef _MSC_VER +RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant +RAPIDJSON_DIAG_OFF(4244) // conversion from kXxxFlags to 'uint16_t', possible loss of data +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_OFF(padded) +RAPIDJSON_DIAG_OFF(switch-enum) +RAPIDJSON_DIAG_OFF(c++98-compat) +#endif + +#ifdef __GNUC__ +RAPIDJSON_DIAG_OFF(effc++) +#if __GNUC__ >= 6 +RAPIDJSON_DIAG_OFF(terminate) // ignore throwing RAPIDJSON_ASSERT in RAPIDJSON_NOEXCEPT functions +#endif +#endif // __GNUC__ + +#ifndef RAPIDJSON_NOMEMBERITERATORCLASS +#include // std::iterator, std::random_access_iterator_tag +#endif + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS +#include // std::move +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +// Forward declaration. +template +class GenericValue; + +template +class GenericDocument; + +//! Name-value pair in a JSON object value. +/*! + This class was internal to GenericValue. It used to be a inner struct. + But a compiler (IBM XL C/C++ for AIX) have reported to have problem with that so it moved as a namespace scope struct. + https://code.google.com/p/rapidjson/issues/detail?id=64 +*/ +template +struct GenericMember { + GenericValue name; //!< name of member (must be a string) + GenericValue value; //!< value of member. +}; + +/////////////////////////////////////////////////////////////////////////////// +// GenericMemberIterator + +#ifndef RAPIDJSON_NOMEMBERITERATORCLASS + +//! (Constant) member iterator for a JSON object value +/*! + \tparam Const Is this a constant iterator? + \tparam Encoding Encoding of the value. (Even non-string values need to have the same encoding in a document) + \tparam Allocator Allocator type for allocating memory of object, array and string. + + This class implements a Random Access Iterator for GenericMember elements + of a GenericValue, see ISO/IEC 14882:2003(E) C++ standard, 24.1 [lib.iterator.requirements]. + + \note This iterator implementation is mainly intended to avoid implicit + conversions from iterator values to \c NULL, + e.g. from GenericValue::FindMember. + + \note Define \c RAPIDJSON_NOMEMBERITERATORCLASS to fall back to a + pointer-based implementation, if your platform doesn't provide + the C++ header. + + \see GenericMember, GenericValue::MemberIterator, GenericValue::ConstMemberIterator + */ +template +class GenericMemberIterator + : public std::iterator >::Type> { + + friend class GenericValue; + template friend class GenericMemberIterator; + + typedef GenericMember PlainType; + typedef typename internal::MaybeAddConst::Type ValueType; + typedef std::iterator BaseType; + +public: + //! Iterator type itself + typedef GenericMemberIterator Iterator; + //! Constant iterator type + typedef GenericMemberIterator ConstIterator; + //! Non-constant iterator type + typedef GenericMemberIterator NonConstIterator; + + //! Pointer to (const) GenericMember + typedef typename BaseType::pointer Pointer; + //! Reference to (const) GenericMember + typedef typename BaseType::reference Reference; + //! Signed integer type (e.g. \c ptrdiff_t) + typedef typename BaseType::difference_type DifferenceType; + + //! Default constructor (singular value) + /*! Creates an iterator pointing to no element. + \note All operations, except for comparisons, are undefined on such values. + */ + GenericMemberIterator() : ptr_() {} + + //! Iterator conversions to more const + /*! + \param it (Non-const) iterator to copy from + + Allows the creation of an iterator from another GenericMemberIterator + that is "less const". Especially, creating a non-constant iterator + from a constant iterator are disabled: + \li const -> non-const (not ok) + \li const -> const (ok) + \li non-const -> const (ok) + \li non-const -> non-const (ok) + + \note If the \c Const template parameter is already \c false, this + constructor effectively defines a regular copy-constructor. + Otherwise, the copy constructor is implicitly defined. + */ + GenericMemberIterator(const NonConstIterator & it) : ptr_(it.ptr_) {} + Iterator& operator=(const NonConstIterator & it) { ptr_ = it.ptr_; return *this; } + + //! @name stepping + //@{ + Iterator& operator++(){ ++ptr_; return *this; } + Iterator& operator--(){ --ptr_; return *this; } + Iterator operator++(int){ Iterator old(*this); ++ptr_; return old; } + Iterator operator--(int){ Iterator old(*this); --ptr_; return old; } + //@} + + //! @name increment/decrement + //@{ + Iterator operator+(DifferenceType n) const { return Iterator(ptr_+n); } + Iterator operator-(DifferenceType n) const { return Iterator(ptr_-n); } + + Iterator& operator+=(DifferenceType n) { ptr_+=n; return *this; } + Iterator& operator-=(DifferenceType n) { ptr_-=n; return *this; } + //@} + + //! @name relations + //@{ + bool operator==(ConstIterator that) const { return ptr_ == that.ptr_; } + bool operator!=(ConstIterator that) const { return ptr_ != that.ptr_; } + bool operator<=(ConstIterator that) const { return ptr_ <= that.ptr_; } + bool operator>=(ConstIterator that) const { return ptr_ >= that.ptr_; } + bool operator< (ConstIterator that) const { return ptr_ < that.ptr_; } + bool operator> (ConstIterator that) const { return ptr_ > that.ptr_; } + //@} + + //! @name dereference + //@{ + Reference operator*() const { return *ptr_; } + Pointer operator->() const { return ptr_; } + Reference operator[](DifferenceType n) const { return ptr_[n]; } + //@} + + //! Distance + DifferenceType operator-(ConstIterator that) const { return ptr_-that.ptr_; } + +private: + //! Internal constructor from plain pointer + explicit GenericMemberIterator(Pointer p) : ptr_(p) {} + + Pointer ptr_; //!< raw pointer +}; + +#else // RAPIDJSON_NOMEMBERITERATORCLASS + +// class-based member iterator implementation disabled, use plain pointers + +template +struct GenericMemberIterator; + +//! non-const GenericMemberIterator +template +struct GenericMemberIterator { + //! use plain pointer as iterator type + typedef GenericMember* Iterator; +}; +//! const GenericMemberIterator +template +struct GenericMemberIterator { + //! use plain const pointer as iterator type + typedef const GenericMember* Iterator; +}; + +#endif // RAPIDJSON_NOMEMBERITERATORCLASS + +/////////////////////////////////////////////////////////////////////////////// +// GenericStringRef + +//! Reference to a constant string (not taking a copy) +/*! + \tparam CharType character type of the string + + This helper class is used to automatically infer constant string + references for string literals, especially from \c const \b (!) + character arrays. + + The main use is for creating JSON string values without copying the + source string via an \ref Allocator. This requires that the referenced + string pointers have a sufficient lifetime, which exceeds the lifetime + of the associated GenericValue. + + \b Example + \code + Value v("foo"); // ok, no need to copy & calculate length + const char foo[] = "foo"; + v.SetString(foo); // ok + + const char* bar = foo; + // Value x(bar); // not ok, can't rely on bar's lifetime + Value x(StringRef(bar)); // lifetime explicitly guaranteed by user + Value y(StringRef(bar, 3)); // ok, explicitly pass length + \endcode + + \see StringRef, GenericValue::SetString +*/ +template +struct GenericStringRef { + typedef CharType Ch; //!< character type of the string + + //! Create string reference from \c const character array +#ifndef __clang__ // -Wdocumentation + /*! + This constructor implicitly creates a constant string reference from + a \c const character array. It has better performance than + \ref StringRef(const CharType*) by inferring the string \ref length + from the array length, and also supports strings containing null + characters. + + \tparam N length of the string, automatically inferred + + \param str Constant character array, lifetime assumed to be longer + than the use of the string in e.g. a GenericValue + + \post \ref s == str + + \note Constant complexity. + \note There is a hidden, private overload to disallow references to + non-const character arrays to be created via this constructor. + By this, e.g. function-scope arrays used to be filled via + \c snprintf are excluded from consideration. + In such cases, the referenced string should be \b copied to the + GenericValue instead. + */ +#endif + template + GenericStringRef(const CharType (&str)[N]) RAPIDJSON_NOEXCEPT + : s(str), length(N-1) {} + + //! Explicitly create string reference from \c const character pointer +#ifndef __clang__ // -Wdocumentation + /*! + This constructor can be used to \b explicitly create a reference to + a constant string pointer. + + \see StringRef(const CharType*) + + \param str Constant character pointer, lifetime assumed to be longer + than the use of the string in e.g. a GenericValue + + \post \ref s == str + + \note There is a hidden, private overload to disallow references to + non-const character arrays to be created via this constructor. + By this, e.g. function-scope arrays used to be filled via + \c snprintf are excluded from consideration. + In such cases, the referenced string should be \b copied to the + GenericValue instead. + */ +#endif + explicit GenericStringRef(const CharType* str) + : s(str), length(internal::StrLen(str)){ RAPIDJSON_ASSERT(s != 0); } + + //! Create constant string reference from pointer and length +#ifndef __clang__ // -Wdocumentation + /*! \param str constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue + \param len length of the string, excluding the trailing NULL terminator + + \post \ref s == str && \ref length == len + \note Constant complexity. + */ +#endif + GenericStringRef(const CharType* str, SizeType len) + : s(str), length(len) { RAPIDJSON_ASSERT(s != 0); } + + GenericStringRef(const GenericStringRef& rhs) : s(rhs.s), length(rhs.length) {} + + GenericStringRef& operator=(const GenericStringRef& rhs) { s = rhs.s; length = rhs.length; } + + //! implicit conversion to plain CharType pointer + operator const Ch *() const { return s; } + + const Ch* const s; //!< plain CharType pointer + const SizeType length; //!< length of the string (excluding the trailing NULL terminator) + +private: + //! Disallow construction from non-const array + template + GenericStringRef(CharType (&str)[N]) /* = delete */; +}; + +//! Mark a character pointer as constant string +/*! Mark a plain character pointer as a "string literal". This function + can be used to avoid copying a character string to be referenced as a + value in a JSON GenericValue object, if the string's lifetime is known + to be valid long enough. + \tparam CharType Character type of the string + \param str Constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue + \return GenericStringRef string reference object + \relatesalso GenericStringRef + + \see GenericValue::GenericValue(StringRefType), GenericValue::operator=(StringRefType), GenericValue::SetString(StringRefType), GenericValue::PushBack(StringRefType, Allocator&), GenericValue::AddMember +*/ +template +inline GenericStringRef StringRef(const CharType* str) { + return GenericStringRef(str, internal::StrLen(str)); +} + +//! Mark a character pointer as constant string +/*! Mark a plain character pointer as a "string literal". This function + can be used to avoid copying a character string to be referenced as a + value in a JSON GenericValue object, if the string's lifetime is known + to be valid long enough. + + This version has better performance with supplied length, and also + supports string containing null characters. + + \tparam CharType character type of the string + \param str Constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue + \param length The length of source string. + \return GenericStringRef string reference object + \relatesalso GenericStringRef +*/ +template +inline GenericStringRef StringRef(const CharType* str, size_t length) { + return GenericStringRef(str, SizeType(length)); +} + +#if RAPIDJSON_HAS_STDSTRING +//! Mark a string object as constant string +/*! Mark a string object (e.g. \c std::string) as a "string literal". + This function can be used to avoid copying a string to be referenced as a + value in a JSON GenericValue object, if the string's lifetime is known + to be valid long enough. + + \tparam CharType character type of the string + \param str Constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue + \return GenericStringRef string reference object + \relatesalso GenericStringRef + \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING. +*/ +template +inline GenericStringRef StringRef(const std::basic_string& str) { + return GenericStringRef(str.data(), SizeType(str.size())); +} +#endif + +/////////////////////////////////////////////////////////////////////////////// +// GenericValue type traits +namespace internal { + +template +struct IsGenericValueImpl : FalseType {}; + +// select candidates according to nested encoding and allocator types +template struct IsGenericValueImpl::Type, typename Void::Type> + : IsBaseOf, T>::Type {}; + +// helper to match arbitrary GenericValue instantiations, including derived classes +template struct IsGenericValue : IsGenericValueImpl::Type {}; + +} // namespace internal + +/////////////////////////////////////////////////////////////////////////////// +// TypeHelper + +namespace internal { + +template +struct TypeHelper {}; + +template +struct TypeHelper { + static bool Is(const ValueType& v) { return v.IsBool(); } + static bool Get(const ValueType& v) { return v.GetBool(); } + static ValueType& Set(ValueType& v, bool data) { return v.SetBool(data); } + static ValueType& Set(ValueType& v, bool data, typename ValueType::AllocatorType&) { return v.SetBool(data); } +}; + +template +struct TypeHelper { + static bool Is(const ValueType& v) { return v.IsInt(); } + static int Get(const ValueType& v) { return v.GetInt(); } + static ValueType& Set(ValueType& v, int data) { return v.SetInt(data); } + static ValueType& Set(ValueType& v, int data, typename ValueType::AllocatorType&) { return v.SetInt(data); } +}; + +template +struct TypeHelper { + static bool Is(const ValueType& v) { return v.IsUint(); } + static unsigned Get(const ValueType& v) { return v.GetUint(); } + static ValueType& Set(ValueType& v, unsigned data) { return v.SetUint(data); } + static ValueType& Set(ValueType& v, unsigned data, typename ValueType::AllocatorType&) { return v.SetUint(data); } +}; + +template +struct TypeHelper { + static bool Is(const ValueType& v) { return v.IsInt64(); } + static int64_t Get(const ValueType& v) { return v.GetInt64(); } + static ValueType& Set(ValueType& v, int64_t data) { return v.SetInt64(data); } + static ValueType& Set(ValueType& v, int64_t data, typename ValueType::AllocatorType&) { return v.SetInt64(data); } +}; + +template +struct TypeHelper { + static bool Is(const ValueType& v) { return v.IsUint64(); } + static uint64_t Get(const ValueType& v) { return v.GetUint64(); } + static ValueType& Set(ValueType& v, uint64_t data) { return v.SetUint64(data); } + static ValueType& Set(ValueType& v, uint64_t data, typename ValueType::AllocatorType&) { return v.SetUint64(data); } +}; + +template +struct TypeHelper { + static bool Is(const ValueType& v) { return v.IsDouble(); } + static double Get(const ValueType& v) { return v.GetDouble(); } + static ValueType& Set(ValueType& v, double data) { return v.SetDouble(data); } + static ValueType& Set(ValueType& v, double data, typename ValueType::AllocatorType&) { return v.SetDouble(data); } +}; + +template +struct TypeHelper { + static bool Is(const ValueType& v) { return v.IsFloat(); } + static float Get(const ValueType& v) { return v.GetFloat(); } + static ValueType& Set(ValueType& v, float data) { return v.SetFloat(data); } + static ValueType& Set(ValueType& v, float data, typename ValueType::AllocatorType&) { return v.SetFloat(data); } +}; + +template +struct TypeHelper { + typedef const typename ValueType::Ch* StringType; + static bool Is(const ValueType& v) { return v.IsString(); } + static StringType Get(const ValueType& v) { return v.GetString(); } + static ValueType& Set(ValueType& v, const StringType data) { return v.SetString(typename ValueType::StringRefType(data)); } + static ValueType& Set(ValueType& v, const StringType data, typename ValueType::AllocatorType& a) { return v.SetString(data, a); } +}; + +#if RAPIDJSON_HAS_STDSTRING +template +struct TypeHelper > { + typedef std::basic_string StringType; + static bool Is(const ValueType& v) { return v.IsString(); } + static StringType Get(const ValueType& v) { return StringType(v.GetString(), v.GetStringLength()); } + static ValueType& Set(ValueType& v, const StringType& data, typename ValueType::AllocatorType& a) { return v.SetString(data, a); } +}; +#endif + +template +struct TypeHelper { + typedef typename ValueType::Array ArrayType; + static bool Is(const ValueType& v) { return v.IsArray(); } + static ArrayType Get(ValueType& v) { return v.GetArray(); } + static ValueType& Set(ValueType& v, ArrayType data) { return v = data; } + static ValueType& Set(ValueType& v, ArrayType data, typename ValueType::AllocatorType&) { return v = data; } +}; + +template +struct TypeHelper { + typedef typename ValueType::ConstArray ArrayType; + static bool Is(const ValueType& v) { return v.IsArray(); } + static ArrayType Get(const ValueType& v) { return v.GetArray(); } +}; + +template +struct TypeHelper { + typedef typename ValueType::Object ObjectType; + static bool Is(const ValueType& v) { return v.IsObject(); } + static ObjectType Get(ValueType& v) { return v.GetObject(); } + static ValueType& Set(ValueType& v, ObjectType data) { return v = data; } + static ValueType& Set(ValueType& v, ObjectType data, typename ValueType::AllocatorType&) { v = data; } +}; + +template +struct TypeHelper { + typedef typename ValueType::ConstObject ObjectType; + static bool Is(const ValueType& v) { return v.IsObject(); } + static ObjectType Get(const ValueType& v) { return v.GetObject(); } +}; + +} // namespace internal + +// Forward declarations +template class GenericArray; +template class GenericObject; + +/////////////////////////////////////////////////////////////////////////////// +// GenericValue + +//! Represents a JSON value. Use Value for UTF8 encoding and default allocator. +/*! + A JSON value can be one of 7 types. This class is a variant type supporting + these types. + + Use the Value if UTF8 and default allocator + + \tparam Encoding Encoding of the value. (Even non-string values need to have the same encoding in a document) + \tparam Allocator Allocator type for allocating memory of object, array and string. +*/ +template > +class GenericValue { +public: + //! Name-value pair in an object. + typedef GenericMember Member; + typedef Encoding EncodingType; //!< Encoding type from template parameter. + typedef Allocator AllocatorType; //!< Allocator type from template parameter. + typedef typename Encoding::Ch Ch; //!< Character type derived from Encoding. + typedef GenericStringRef StringRefType; //!< Reference to a constant string + typedef typename GenericMemberIterator::Iterator MemberIterator; //!< Member iterator for iterating in object. + typedef typename GenericMemberIterator::Iterator ConstMemberIterator; //!< Constant member iterator for iterating in object. + typedef GenericValue* ValueIterator; //!< Value iterator for iterating in array. + typedef const GenericValue* ConstValueIterator; //!< Constant value iterator for iterating in array. + typedef GenericValue ValueType; //!< Value type of itself. + typedef GenericArray Array; + typedef GenericArray ConstArray; + typedef GenericObject Object; + typedef GenericObject ConstObject; + + //!@name Constructors and destructor. + //@{ + + //! Default constructor creates a null value. + GenericValue() RAPIDJSON_NOEXCEPT : data_() { data_.f.flags = kNullFlag; } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + //! Move constructor in C++11 + GenericValue(GenericValue&& rhs) RAPIDJSON_NOEXCEPT : data_(rhs.data_) { + rhs.data_.f.flags = kNullFlag; // give up contents + } +#endif + +private: + //! Copy constructor is not permitted. + GenericValue(const GenericValue& rhs); + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + //! Moving from a GenericDocument is not permitted. + template + GenericValue(GenericDocument&& rhs); + + //! Move assignment from a GenericDocument is not permitted. + template + GenericValue& operator=(GenericDocument&& rhs); +#endif + +public: + + //! Constructor with JSON value type. + /*! This creates a Value of specified type with default content. + \param type Type of the value. + \note Default content for number is zero. + */ + explicit GenericValue(Type type) RAPIDJSON_NOEXCEPT : data_() { + static const uint16_t defaultFlags[7] = { + kNullFlag, kFalseFlag, kTrueFlag, kObjectFlag, kArrayFlag, kShortStringFlag, + kNumberAnyFlag + }; + RAPIDJSON_ASSERT(type <= kNumberType); + data_.f.flags = defaultFlags[type]; + + // Use ShortString to store empty string. + if (type == kStringType) + data_.ss.SetLength(0); + } + + //! Explicit copy constructor (with allocator) + /*! Creates a copy of a Value by using the given Allocator + \tparam SourceAllocator allocator of \c rhs + \param rhs Value to copy from (read-only) + \param allocator Allocator for allocating copied elements and buffers. Commonly use GenericDocument::GetAllocator(). + \see CopyFrom() + */ + template< typename SourceAllocator > + GenericValue(const GenericValue& rhs, Allocator & allocator); + + //! Constructor for boolean value. + /*! \param b Boolean value + \note This constructor is limited to \em real boolean values and rejects + implicitly converted types like arbitrary pointers. Use an explicit cast + to \c bool, if you want to construct a boolean JSON value in such cases. + */ +#ifndef RAPIDJSON_DOXYGEN_RUNNING // hide SFINAE from Doxygen + template + explicit GenericValue(T b, RAPIDJSON_ENABLEIF((internal::IsSame))) RAPIDJSON_NOEXCEPT // See #472 +#else + explicit GenericValue(bool b) RAPIDJSON_NOEXCEPT +#endif + : data_() { + // safe-guard against failing SFINAE + RAPIDJSON_STATIC_ASSERT((internal::IsSame::Value)); + data_.f.flags = b ? kTrueFlag : kFalseFlag; + } + + //! Constructor for int value. + explicit GenericValue(int i) RAPIDJSON_NOEXCEPT : data_() { + data_.n.i64 = i; + data_.f.flags = (i >= 0) ? (kNumberIntFlag | kUintFlag | kUint64Flag) : kNumberIntFlag; + } + + //! Constructor for unsigned value. + explicit GenericValue(unsigned u) RAPIDJSON_NOEXCEPT : data_() { + data_.n.u64 = u; + data_.f.flags = (u & 0x80000000) ? kNumberUintFlag : (kNumberUintFlag | kIntFlag | kInt64Flag); + } + + //! Constructor for int64_t value. + explicit GenericValue(int64_t i64) RAPIDJSON_NOEXCEPT : data_() { + data_.n.i64 = i64; + data_.f.flags = kNumberInt64Flag; + if (i64 >= 0) { + data_.f.flags |= kNumberUint64Flag; + if (!(static_cast(i64) & RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x00000000))) + data_.f.flags |= kUintFlag; + if (!(static_cast(i64) & RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x80000000))) + data_.f.flags |= kIntFlag; + } + else if (i64 >= static_cast(RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x80000000))) + data_.f.flags |= kIntFlag; + } + + //! Constructor for uint64_t value. + explicit GenericValue(uint64_t u64) RAPIDJSON_NOEXCEPT : data_() { + data_.n.u64 = u64; + data_.f.flags = kNumberUint64Flag; + if (!(u64 & RAPIDJSON_UINT64_C2(0x80000000, 0x00000000))) + data_.f.flags |= kInt64Flag; + if (!(u64 & RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x00000000))) + data_.f.flags |= kUintFlag; + if (!(u64 & RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x80000000))) + data_.f.flags |= kIntFlag; + } + + //! Constructor for double value. + explicit GenericValue(double d) RAPIDJSON_NOEXCEPT : data_() { data_.n.d = d; data_.f.flags = kNumberDoubleFlag; } + + //! Constructor for constant string (i.e. do not make a copy of string) + GenericValue(const Ch* s, SizeType length) RAPIDJSON_NOEXCEPT : data_() { SetStringRaw(StringRef(s, length)); } + + //! Constructor for constant string (i.e. do not make a copy of string) + explicit GenericValue(StringRefType s) RAPIDJSON_NOEXCEPT : data_() { SetStringRaw(s); } + + //! Constructor for copy-string (i.e. do make a copy of string) + GenericValue(const Ch* s, SizeType length, Allocator& allocator) : data_() { SetStringRaw(StringRef(s, length), allocator); } + + //! Constructor for copy-string (i.e. do make a copy of string) + GenericValue(const Ch*s, Allocator& allocator) : data_() { SetStringRaw(StringRef(s), allocator); } + +#if RAPIDJSON_HAS_STDSTRING + //! Constructor for copy-string from a string object (i.e. do make a copy of string) + /*! \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING. + */ + GenericValue(const std::basic_string& s, Allocator& allocator) : data_() { SetStringRaw(StringRef(s), allocator); } +#endif + + //! Constructor for Array. + /*! + \param a An array obtained by \c GetArray(). + \note \c Array is always pass-by-value. + \note the source array is moved into this value and the sourec array becomes empty. + */ + GenericValue(Array a) RAPIDJSON_NOEXCEPT : data_(a.value_.data_) { + a.value_.data_ = Data(); + a.value_.data_.f.flags = kArrayFlag; + } + + //! Constructor for Object. + /*! + \param o An object obtained by \c GetObject(). + \note \c Object is always pass-by-value. + \note the source object is moved into this value and the sourec object becomes empty. + */ + GenericValue(Object o) RAPIDJSON_NOEXCEPT : data_(o.value_.data_) { + o.value_.data_ = Data(); + o.value_.data_.f.flags = kObjectFlag; + } + + //! Destructor. + /*! Need to destruct elements of array, members of object, or copy-string. + */ + ~GenericValue() { + if (Allocator::kNeedFree) { // Shortcut by Allocator's trait + switch(data_.f.flags) { + case kArrayFlag: + { + GenericValue* e = GetElementsPointer(); + for (GenericValue* v = e; v != e + data_.a.size; ++v) + v->~GenericValue(); + Allocator::Free(e); + } + break; + + case kObjectFlag: + for (MemberIterator m = MemberBegin(); m != MemberEnd(); ++m) + m->~Member(); + Allocator::Free(GetMembersPointer()); + break; + + case kCopyStringFlag: + Allocator::Free(const_cast(GetStringPointer())); + break; + + default: + break; // Do nothing for other types. + } + } + } + + //@} + + //!@name Assignment operators + //@{ + + //! Assignment with move semantics. + /*! \param rhs Source of the assignment. It will become a null value after assignment. + */ + GenericValue& operator=(GenericValue& rhs) RAPIDJSON_NOEXCEPT { + RAPIDJSON_ASSERT(this != &rhs); + this->~GenericValue(); + RawAssign(rhs); + return *this; + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + //! Move assignment in C++11 + GenericValue& operator=(GenericValue&& rhs) RAPIDJSON_NOEXCEPT { + return *this = rhs.Move(); + } +#endif + + //! Assignment of constant string reference (no copy) + /*! \param str Constant string reference to be assigned + \note This overload is needed to avoid clashes with the generic primitive type assignment overload below. + \see GenericStringRef, operator=(T) + */ + GenericValue& operator=(StringRefType str) RAPIDJSON_NOEXCEPT { + GenericValue s(str); + return *this = s; + } + + //! Assignment with primitive types. + /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t + \param value The value to be assigned. + + \note The source type \c T explicitly disallows all pointer types, + especially (\c const) \ref Ch*. This helps avoiding implicitly + referencing character strings with insufficient lifetime, use + \ref SetString(const Ch*, Allocator&) (for copying) or + \ref StringRef() (to explicitly mark the pointer as constant) instead. + All other pointer types would implicitly convert to \c bool, + use \ref SetBool() instead. + */ + template + RAPIDJSON_DISABLEIF_RETURN((internal::IsPointer), (GenericValue&)) + operator=(T value) { + GenericValue v(value); + return *this = v; + } + + //! Deep-copy assignment from Value + /*! Assigns a \b copy of the Value to the current Value object + \tparam SourceAllocator Allocator type of \c rhs + \param rhs Value to copy from (read-only) + \param allocator Allocator to use for copying + */ + template + GenericValue& CopyFrom(const GenericValue& rhs, Allocator& allocator) { + RAPIDJSON_ASSERT(static_cast(this) != static_cast(&rhs)); + this->~GenericValue(); + new (this) GenericValue(rhs, allocator); + return *this; + } + + //! Exchange the contents of this value with those of other. + /*! + \param other Another value. + \note Constant complexity. + */ + GenericValue& Swap(GenericValue& other) RAPIDJSON_NOEXCEPT { + GenericValue temp; + temp.RawAssign(*this); + RawAssign(other); + other.RawAssign(temp); + return *this; + } + + //! free-standing swap function helper + /*! + Helper function to enable support for common swap implementation pattern based on \c std::swap: + \code + void swap(MyClass& a, MyClass& b) { + using std::swap; + swap(a.value, b.value); + // ... + } + \endcode + \see Swap() + */ + friend inline void swap(GenericValue& a, GenericValue& b) RAPIDJSON_NOEXCEPT { a.Swap(b); } + + //! Prepare Value for move semantics + /*! \return *this */ + GenericValue& Move() RAPIDJSON_NOEXCEPT { return *this; } + //@} + + //!@name Equal-to and not-equal-to operators + //@{ + //! Equal-to operator + /*! + \note If an object contains duplicated named member, comparing equality with any object is always \c false. + \note Linear time complexity (number of all values in the subtree and total lengths of all strings). + */ + template + bool operator==(const GenericValue& rhs) const { + typedef GenericValue RhsType; + if (GetType() != rhs.GetType()) + return false; + + switch (GetType()) { + case kObjectType: // Warning: O(n^2) inner-loop + if (data_.o.size != rhs.data_.o.size) + return false; + for (ConstMemberIterator lhsMemberItr = MemberBegin(); lhsMemberItr != MemberEnd(); ++lhsMemberItr) { + typename RhsType::ConstMemberIterator rhsMemberItr = rhs.FindMember(lhsMemberItr->name); + if (rhsMemberItr == rhs.MemberEnd() || lhsMemberItr->value != rhsMemberItr->value) + return false; + } + return true; + + case kArrayType: + if (data_.a.size != rhs.data_.a.size) + return false; + for (SizeType i = 0; i < data_.a.size; i++) + if ((*this)[i] != rhs[i]) + return false; + return true; + + case kStringType: + return StringEqual(rhs); + + case kNumberType: + if (IsDouble() || rhs.IsDouble()) { + double a = GetDouble(); // May convert from integer to double. + double b = rhs.GetDouble(); // Ditto + return a >= b && a <= b; // Prevent -Wfloat-equal + } + else + return data_.n.u64 == rhs.data_.n.u64; + + default: + return true; + } + } + + //! Equal-to operator with const C-string pointer + bool operator==(const Ch* rhs) const { return *this == GenericValue(StringRef(rhs)); } + +#if RAPIDJSON_HAS_STDSTRING + //! Equal-to operator with string object + /*! \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING. + */ + bool operator==(const std::basic_string& rhs) const { return *this == GenericValue(StringRef(rhs)); } +#endif + + //! Equal-to operator with primitive types + /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c double, \c true, \c false + */ + template RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr,internal::IsGenericValue >), (bool)) operator==(const T& rhs) const { return *this == GenericValue(rhs); } + + //! Not-equal-to operator + /*! \return !(*this == rhs) + */ + template + bool operator!=(const GenericValue& rhs) const { return !(*this == rhs); } + + //! Not-equal-to operator with const C-string pointer + bool operator!=(const Ch* rhs) const { return !(*this == rhs); } + + //! Not-equal-to operator with arbitrary types + /*! \return !(*this == rhs) + */ + template RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue), (bool)) operator!=(const T& rhs) const { return !(*this == rhs); } + + //! Equal-to operator with arbitrary types (symmetric version) + /*! \return (rhs == lhs) + */ + template friend RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue), (bool)) operator==(const T& lhs, const GenericValue& rhs) { return rhs == lhs; } + + //! Not-Equal-to operator with arbitrary types (symmetric version) + /*! \return !(rhs == lhs) + */ + template friend RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue), (bool)) operator!=(const T& lhs, const GenericValue& rhs) { return !(rhs == lhs); } + //@} + + //!@name Type + //@{ + + Type GetType() const { return static_cast(data_.f.flags & kTypeMask); } + bool IsNull() const { return data_.f.flags == kNullFlag; } + bool IsFalse() const { return data_.f.flags == kFalseFlag; } + bool IsTrue() const { return data_.f.flags == kTrueFlag; } + bool IsBool() const { return (data_.f.flags & kBoolFlag) != 0; } + bool IsObject() const { return data_.f.flags == kObjectFlag; } + bool IsArray() const { return data_.f.flags == kArrayFlag; } + bool IsNumber() const { return (data_.f.flags & kNumberFlag) != 0; } + bool IsInt() const { return (data_.f.flags & kIntFlag) != 0; } + bool IsUint() const { return (data_.f.flags & kUintFlag) != 0; } + bool IsInt64() const { return (data_.f.flags & kInt64Flag) != 0; } + bool IsUint64() const { return (data_.f.flags & kUint64Flag) != 0; } + bool IsDouble() const { return (data_.f.flags & kDoubleFlag) != 0; } + bool IsString() const { return (data_.f.flags & kStringFlag) != 0; } + + // Checks whether a number can be losslessly converted to a double. + bool IsLosslessDouble() const { + if (!IsNumber()) return false; + if (IsUint64()) { + uint64_t u = GetUint64(); + volatile double d = static_cast(u); + return (d >= 0.0) + && (d < static_cast(std::numeric_limits::max())) + && (u == static_cast(d)); + } + if (IsInt64()) { + int64_t i = GetInt64(); + volatile double d = static_cast(i); + return (d >= static_cast(std::numeric_limits::min())) + && (d < static_cast(std::numeric_limits::max())) + && (i == static_cast(d)); + } + return true; // double, int, uint are always lossless + } + + // Checks whether a number is a float (possible lossy). + bool IsFloat() const { + if ((data_.f.flags & kDoubleFlag) == 0) + return false; + double d = GetDouble(); + return d >= -3.4028234e38 && d <= 3.4028234e38; + } + // Checks whether a number can be losslessly converted to a float. + bool IsLosslessFloat() const { + if (!IsNumber()) return false; + double a = GetDouble(); + if (a < static_cast(-std::numeric_limits::max()) + || a > static_cast(std::numeric_limits::max())) + return false; + double b = static_cast(static_cast(a)); + return a >= b && a <= b; // Prevent -Wfloat-equal + } + + //@} + + //!@name Null + //@{ + + GenericValue& SetNull() { this->~GenericValue(); new (this) GenericValue(); return *this; } + + //@} + + //!@name Bool + //@{ + + bool GetBool() const { RAPIDJSON_ASSERT(IsBool()); return data_.f.flags == kTrueFlag; } + //!< Set boolean value + /*! \post IsBool() == true */ + GenericValue& SetBool(bool b) { this->~GenericValue(); new (this) GenericValue(b); return *this; } + + //@} + + //!@name Object + //@{ + + //! Set this value as an empty object. + /*! \post IsObject() == true */ + GenericValue& SetObject() { this->~GenericValue(); new (this) GenericValue(kObjectType); return *this; } + + //! Get the number of members in the object. + SizeType MemberCount() const { RAPIDJSON_ASSERT(IsObject()); return data_.o.size; } + + //! Check whether the object is empty. + bool ObjectEmpty() const { RAPIDJSON_ASSERT(IsObject()); return data_.o.size == 0; } + + //! Get a value from an object associated with the name. + /*! \pre IsObject() == true + \tparam T Either \c Ch or \c const \c Ch (template used for disambiguation with \ref operator[](SizeType)) + \note In version 0.1x, if the member is not found, this function returns a null value. This makes issue 7. + Since 0.2, if the name is not correct, it will assert. + If user is unsure whether a member exists, user should use HasMember() first. + A better approach is to use FindMember(). + \note Linear time complexity. + */ + template + RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr::Type, Ch> >),(GenericValue&)) operator[](T* name) { + GenericValue n(StringRef(name)); + return (*this)[n]; + } + template + RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr::Type, Ch> >),(const GenericValue&)) operator[](T* name) const { return const_cast(*this)[name]; } + + //! Get a value from an object associated with the name. + /*! \pre IsObject() == true + \tparam SourceAllocator Allocator of the \c name value + + \note Compared to \ref operator[](T*), this version is faster because it does not need a StrLen(). + And it can also handle strings with embedded null characters. + + \note Linear time complexity. + */ + template + GenericValue& operator[](const GenericValue& name) { + MemberIterator member = FindMember(name); + if (member != MemberEnd()) + return member->value; + else { + RAPIDJSON_ASSERT(false); // see above note + + // This will generate -Wexit-time-destructors in clang + // static GenericValue NullValue; + // return NullValue; + + // Use static buffer and placement-new to prevent destruction + static char buffer[sizeof(GenericValue)]; + return *new (buffer) GenericValue(); + } + } + template + const GenericValue& operator[](const GenericValue& name) const { return const_cast(*this)[name]; } + +#if RAPIDJSON_HAS_STDSTRING + //! Get a value from an object associated with name (string object). + GenericValue& operator[](const std::basic_string& name) { return (*this)[GenericValue(StringRef(name))]; } + const GenericValue& operator[](const std::basic_string& name) const { return (*this)[GenericValue(StringRef(name))]; } +#endif + + //! Const member iterator + /*! \pre IsObject() == true */ + ConstMemberIterator MemberBegin() const { RAPIDJSON_ASSERT(IsObject()); return ConstMemberIterator(GetMembersPointer()); } + //! Const \em past-the-end member iterator + /*! \pre IsObject() == true */ + ConstMemberIterator MemberEnd() const { RAPIDJSON_ASSERT(IsObject()); return ConstMemberIterator(GetMembersPointer() + data_.o.size); } + //! Member iterator + /*! \pre IsObject() == true */ + MemberIterator MemberBegin() { RAPIDJSON_ASSERT(IsObject()); return MemberIterator(GetMembersPointer()); } + //! \em Past-the-end member iterator + /*! \pre IsObject() == true */ + MemberIterator MemberEnd() { RAPIDJSON_ASSERT(IsObject()); return MemberIterator(GetMembersPointer() + data_.o.size); } + + //! Check whether a member exists in the object. + /*! + \param name Member name to be searched. + \pre IsObject() == true + \return Whether a member with that name exists. + \note It is better to use FindMember() directly if you need the obtain the value as well. + \note Linear time complexity. + */ + bool HasMember(const Ch* name) const { return FindMember(name) != MemberEnd(); } + +#if RAPIDJSON_HAS_STDSTRING + //! Check whether a member exists in the object with string object. + /*! + \param name Member name to be searched. + \pre IsObject() == true + \return Whether a member with that name exists. + \note It is better to use FindMember() directly if you need the obtain the value as well. + \note Linear time complexity. + */ + bool HasMember(const std::basic_string& name) const { return FindMember(name) != MemberEnd(); } +#endif + + //! Check whether a member exists in the object with GenericValue name. + /*! + This version is faster because it does not need a StrLen(). It can also handle string with null character. + \param name Member name to be searched. + \pre IsObject() == true + \return Whether a member with that name exists. + \note It is better to use FindMember() directly if you need the obtain the value as well. + \note Linear time complexity. + */ + template + bool HasMember(const GenericValue& name) const { return FindMember(name) != MemberEnd(); } + + //! Find member by name. + /*! + \param name Member name to be searched. + \pre IsObject() == true + \return Iterator to member, if it exists. + Otherwise returns \ref MemberEnd(). + + \note Earlier versions of Rapidjson returned a \c NULL pointer, in case + the requested member doesn't exist. For consistency with e.g. + \c std::map, this has been changed to MemberEnd() now. + \note Linear time complexity. + */ + MemberIterator FindMember(const Ch* name) { + GenericValue n(StringRef(name)); + return FindMember(n); + } + + ConstMemberIterator FindMember(const Ch* name) const { return const_cast(*this).FindMember(name); } + + //! Find member by name. + /*! + This version is faster because it does not need a StrLen(). It can also handle string with null character. + \param name Member name to be searched. + \pre IsObject() == true + \return Iterator to member, if it exists. + Otherwise returns \ref MemberEnd(). + + \note Earlier versions of Rapidjson returned a \c NULL pointer, in case + the requested member doesn't exist. For consistency with e.g. + \c std::map, this has been changed to MemberEnd() now. + \note Linear time complexity. + */ + template + MemberIterator FindMember(const GenericValue& name) { + RAPIDJSON_ASSERT(IsObject()); + RAPIDJSON_ASSERT(name.IsString()); + MemberIterator member = MemberBegin(); + for ( ; member != MemberEnd(); ++member) + if (name.StringEqual(member->name)) + break; + return member; + } + template ConstMemberIterator FindMember(const GenericValue& name) const { return const_cast(*this).FindMember(name); } + +#if RAPIDJSON_HAS_STDSTRING + //! Find member by string object name. + /*! + \param name Member name to be searched. + \pre IsObject() == true + \return Iterator to member, if it exists. + Otherwise returns \ref MemberEnd(). + */ + MemberIterator FindMember(const std::basic_string& name) { return FindMember(GenericValue(StringRef(name))); } + ConstMemberIterator FindMember(const std::basic_string& name) const { return FindMember(GenericValue(StringRef(name))); } +#endif + + //! Add a member (name-value pair) to the object. + /*! \param name A string value as name of member. + \param value Value of any type. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \note The ownership of \c name and \c value will be transferred to this object on success. + \pre IsObject() && name.IsString() + \post name.IsNull() && value.IsNull() + \note Amortized Constant time complexity. + */ + GenericValue& AddMember(GenericValue& name, GenericValue& value, Allocator& allocator) { + RAPIDJSON_ASSERT(IsObject()); + RAPIDJSON_ASSERT(name.IsString()); + + ObjectData& o = data_.o; + if (o.size >= o.capacity) { + if (o.capacity == 0) { + o.capacity = kDefaultObjectCapacity; + SetMembersPointer(reinterpret_cast(allocator.Malloc(o.capacity * sizeof(Member)))); + } + else { + SizeType oldCapacity = o.capacity; + o.capacity += (oldCapacity + 1) / 2; // grow by factor 1.5 + SetMembersPointer(reinterpret_cast(allocator.Realloc(GetMembersPointer(), oldCapacity * sizeof(Member), o.capacity * sizeof(Member)))); + } + } + Member* members = GetMembersPointer(); + members[o.size].name.RawAssign(name); + members[o.size].value.RawAssign(value); + o.size++; + return *this; + } + + //! Add a constant string value as member (name-value pair) to the object. + /*! \param name A string value as name of member. + \param value constant string reference as value of member. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \pre IsObject() + \note This overload is needed to avoid clashes with the generic primitive type AddMember(GenericValue&,T,Allocator&) overload below. + \note Amortized Constant time complexity. + */ + GenericValue& AddMember(GenericValue& name, StringRefType value, Allocator& allocator) { + GenericValue v(value); + return AddMember(name, v, allocator); + } + +#if RAPIDJSON_HAS_STDSTRING + //! Add a string object as member (name-value pair) to the object. + /*! \param name A string value as name of member. + \param value constant string reference as value of member. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \pre IsObject() + \note This overload is needed to avoid clashes with the generic primitive type AddMember(GenericValue&,T,Allocator&) overload below. + \note Amortized Constant time complexity. + */ + GenericValue& AddMember(GenericValue& name, std::basic_string& value, Allocator& allocator) { + GenericValue v(value, allocator); + return AddMember(name, v, allocator); + } +#endif + + //! Add any primitive value as member (name-value pair) to the object. + /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t + \param name A string value as name of member. + \param value Value of primitive type \c T as value of member + \param allocator Allocator for reallocating memory. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \pre IsObject() + + \note The source type \c T explicitly disallows all pointer types, + especially (\c const) \ref Ch*. This helps avoiding implicitly + referencing character strings with insufficient lifetime, use + \ref AddMember(StringRefType, GenericValue&, Allocator&) or \ref + AddMember(StringRefType, StringRefType, Allocator&). + All other pointer types would implicitly convert to \c bool, + use an explicit cast instead, if needed. + \note Amortized Constant time complexity. + */ + template + RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (GenericValue&)) + AddMember(GenericValue& name, T value, Allocator& allocator) { + GenericValue v(value); + return AddMember(name, v, allocator); + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + GenericValue& AddMember(GenericValue&& name, GenericValue&& value, Allocator& allocator) { + return AddMember(name, value, allocator); + } + GenericValue& AddMember(GenericValue&& name, GenericValue& value, Allocator& allocator) { + return AddMember(name, value, allocator); + } + GenericValue& AddMember(GenericValue& name, GenericValue&& value, Allocator& allocator) { + return AddMember(name, value, allocator); + } + GenericValue& AddMember(StringRefType name, GenericValue&& value, Allocator& allocator) { + GenericValue n(name); + return AddMember(n, value, allocator); + } +#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS + + + //! Add a member (name-value pair) to the object. + /*! \param name A constant string reference as name of member. + \param value Value of any type. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \note The ownership of \c value will be transferred to this object on success. + \pre IsObject() + \post value.IsNull() + \note Amortized Constant time complexity. + */ + GenericValue& AddMember(StringRefType name, GenericValue& value, Allocator& allocator) { + GenericValue n(name); + return AddMember(n, value, allocator); + } + + //! Add a constant string value as member (name-value pair) to the object. + /*! \param name A constant string reference as name of member. + \param value constant string reference as value of member. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \pre IsObject() + \note This overload is needed to avoid clashes with the generic primitive type AddMember(StringRefType,T,Allocator&) overload below. + \note Amortized Constant time complexity. + */ + GenericValue& AddMember(StringRefType name, StringRefType value, Allocator& allocator) { + GenericValue v(value); + return AddMember(name, v, allocator); + } + + //! Add any primitive value as member (name-value pair) to the object. + /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t + \param name A constant string reference as name of member. + \param value Value of primitive type \c T as value of member + \param allocator Allocator for reallocating memory. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \pre IsObject() + + \note The source type \c T explicitly disallows all pointer types, + especially (\c const) \ref Ch*. This helps avoiding implicitly + referencing character strings with insufficient lifetime, use + \ref AddMember(StringRefType, GenericValue&, Allocator&) or \ref + AddMember(StringRefType, StringRefType, Allocator&). + All other pointer types would implicitly convert to \c bool, + use an explicit cast instead, if needed. + \note Amortized Constant time complexity. + */ + template + RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (GenericValue&)) + AddMember(StringRefType name, T value, Allocator& allocator) { + GenericValue n(name); + return AddMember(n, value, allocator); + } + + //! Remove all members in the object. + /*! This function do not deallocate memory in the object, i.e. the capacity is unchanged. + \note Linear time complexity. + */ + void RemoveAllMembers() { + RAPIDJSON_ASSERT(IsObject()); + for (MemberIterator m = MemberBegin(); m != MemberEnd(); ++m) + m->~Member(); + data_.o.size = 0; + } + + //! Remove a member in object by its name. + /*! \param name Name of member to be removed. + \return Whether the member existed. + \note This function may reorder the object members. Use \ref + EraseMember(ConstMemberIterator) if you need to preserve the + relative order of the remaining members. + \note Linear time complexity. + */ + bool RemoveMember(const Ch* name) { + GenericValue n(StringRef(name)); + return RemoveMember(n); + } + +#if RAPIDJSON_HAS_STDSTRING + bool RemoveMember(const std::basic_string& name) { return RemoveMember(GenericValue(StringRef(name))); } +#endif + + template + bool RemoveMember(const GenericValue& name) { + MemberIterator m = FindMember(name); + if (m != MemberEnd()) { + RemoveMember(m); + return true; + } + else + return false; + } + + //! Remove a member in object by iterator. + /*! \param m member iterator (obtained by FindMember() or MemberBegin()). + \return the new iterator after removal. + \note This function may reorder the object members. Use \ref + EraseMember(ConstMemberIterator) if you need to preserve the + relative order of the remaining members. + \note Constant time complexity. + */ + MemberIterator RemoveMember(MemberIterator m) { + RAPIDJSON_ASSERT(IsObject()); + RAPIDJSON_ASSERT(data_.o.size > 0); + RAPIDJSON_ASSERT(GetMembersPointer() != 0); + RAPIDJSON_ASSERT(m >= MemberBegin() && m < MemberEnd()); + + MemberIterator last(GetMembersPointer() + (data_.o.size - 1)); + if (data_.o.size > 1 && m != last) + *m = *last; // Move the last one to this place + else + m->~Member(); // Only one left, just destroy + --data_.o.size; + return m; + } + + //! Remove a member from an object by iterator. + /*! \param pos iterator to the member to remove + \pre IsObject() == true && \ref MemberBegin() <= \c pos < \ref MemberEnd() + \return Iterator following the removed element. + If the iterator \c pos refers to the last element, the \ref MemberEnd() iterator is returned. + \note This function preserves the relative order of the remaining object + members. If you do not need this, use the more efficient \ref RemoveMember(MemberIterator). + \note Linear time complexity. + */ + MemberIterator EraseMember(ConstMemberIterator pos) { + return EraseMember(pos, pos +1); + } + + //! Remove members in the range [first, last) from an object. + /*! \param first iterator to the first member to remove + \param last iterator following the last member to remove + \pre IsObject() == true && \ref MemberBegin() <= \c first <= \c last <= \ref MemberEnd() + \return Iterator following the last removed element. + \note This function preserves the relative order of the remaining object + members. + \note Linear time complexity. + */ + MemberIterator EraseMember(ConstMemberIterator first, ConstMemberIterator last) { + RAPIDJSON_ASSERT(IsObject()); + RAPIDJSON_ASSERT(data_.o.size > 0); + RAPIDJSON_ASSERT(GetMembersPointer() != 0); + RAPIDJSON_ASSERT(first >= MemberBegin()); + RAPIDJSON_ASSERT(first <= last); + RAPIDJSON_ASSERT(last <= MemberEnd()); + + MemberIterator pos = MemberBegin() + (first - MemberBegin()); + for (MemberIterator itr = pos; itr != last; ++itr) + itr->~Member(); + std::memmove(&*pos, &*last, static_cast(MemberEnd() - last) * sizeof(Member)); + data_.o.size -= static_cast(last - first); + return pos; + } + + //! Erase a member in object by its name. + /*! \param name Name of member to be removed. + \return Whether the member existed. + \note Linear time complexity. + */ + bool EraseMember(const Ch* name) { + GenericValue n(StringRef(name)); + return EraseMember(n); + } + +#if RAPIDJSON_HAS_STDSTRING + bool EraseMember(const std::basic_string& name) { return EraseMember(GenericValue(StringRef(name))); } +#endif + + template + bool EraseMember(const GenericValue& name) { + MemberIterator m = FindMember(name); + if (m != MemberEnd()) { + EraseMember(m); + return true; + } + else + return false; + } + + Object GetObject() { RAPIDJSON_ASSERT(IsObject()); return Object(*this); } + ConstObject GetObject() const { RAPIDJSON_ASSERT(IsObject()); return ConstObject(*this); } + + //@} + + //!@name Array + //@{ + + //! Set this value as an empty array. + /*! \post IsArray == true */ + GenericValue& SetArray() { this->~GenericValue(); new (this) GenericValue(kArrayType); return *this; } + + //! Get the number of elements in array. + SizeType Size() const { RAPIDJSON_ASSERT(IsArray()); return data_.a.size; } + + //! Get the capacity of array. + SizeType Capacity() const { RAPIDJSON_ASSERT(IsArray()); return data_.a.capacity; } + + //! Check whether the array is empty. + bool Empty() const { RAPIDJSON_ASSERT(IsArray()); return data_.a.size == 0; } + + //! Remove all elements in the array. + /*! This function do not deallocate memory in the array, i.e. the capacity is unchanged. + \note Linear time complexity. + */ + void Clear() { + RAPIDJSON_ASSERT(IsArray()); + GenericValue* e = GetElementsPointer(); + for (GenericValue* v = e; v != e + data_.a.size; ++v) + v->~GenericValue(); + data_.a.size = 0; + } + + //! Get an element from array by index. + /*! \pre IsArray() == true + \param index Zero-based index of element. + \see operator[](T*) + */ + GenericValue& operator[](SizeType index) { + RAPIDJSON_ASSERT(IsArray()); + RAPIDJSON_ASSERT(index < data_.a.size); + return GetElementsPointer()[index]; + } + const GenericValue& operator[](SizeType index) const { return const_cast(*this)[index]; } + + //! Element iterator + /*! \pre IsArray() == true */ + ValueIterator Begin() { RAPIDJSON_ASSERT(IsArray()); return GetElementsPointer(); } + //! \em Past-the-end element iterator + /*! \pre IsArray() == true */ + ValueIterator End() { RAPIDJSON_ASSERT(IsArray()); return GetElementsPointer() + data_.a.size; } + //! Constant element iterator + /*! \pre IsArray() == true */ + ConstValueIterator Begin() const { return const_cast(*this).Begin(); } + //! Constant \em past-the-end element iterator + /*! \pre IsArray() == true */ + ConstValueIterator End() const { return const_cast(*this).End(); } + + //! Request the array to have enough capacity to store elements. + /*! \param newCapacity The capacity that the array at least need to have. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \note Linear time complexity. + */ + GenericValue& Reserve(SizeType newCapacity, Allocator &allocator) { + RAPIDJSON_ASSERT(IsArray()); + if (newCapacity > data_.a.capacity) { + SetElementsPointer(reinterpret_cast(allocator.Realloc(GetElementsPointer(), data_.a.capacity * sizeof(GenericValue), newCapacity * sizeof(GenericValue)))); + data_.a.capacity = newCapacity; + } + return *this; + } + + //! Append a GenericValue at the end of the array. + /*! \param value Value to be appended. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \pre IsArray() == true + \post value.IsNull() == true + \return The value itself for fluent API. + \note The ownership of \c value will be transferred to this array on success. + \note If the number of elements to be appended is known, calls Reserve() once first may be more efficient. + \note Amortized constant time complexity. + */ + GenericValue& PushBack(GenericValue& value, Allocator& allocator) { + RAPIDJSON_ASSERT(IsArray()); + if (data_.a.size >= data_.a.capacity) + Reserve(data_.a.capacity == 0 ? kDefaultArrayCapacity : (data_.a.capacity + (data_.a.capacity + 1) / 2), allocator); + GetElementsPointer()[data_.a.size++].RawAssign(value); + return *this; + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + GenericValue& PushBack(GenericValue&& value, Allocator& allocator) { + return PushBack(value, allocator); + } +#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS + + //! Append a constant string reference at the end of the array. + /*! \param value Constant string reference to be appended. + \param allocator Allocator for reallocating memory. It must be the same one used previously. Commonly use GenericDocument::GetAllocator(). + \pre IsArray() == true + \return The value itself for fluent API. + \note If the number of elements to be appended is known, calls Reserve() once first may be more efficient. + \note Amortized constant time complexity. + \see GenericStringRef + */ + GenericValue& PushBack(StringRefType value, Allocator& allocator) { + return (*this).template PushBack(value, allocator); + } + + //! Append a primitive value at the end of the array. + /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t + \param value Value of primitive type T to be appended. + \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator(). + \pre IsArray() == true + \return The value itself for fluent API. + \note If the number of elements to be appended is known, calls Reserve() once first may be more efficient. + + \note The source type \c T explicitly disallows all pointer types, + especially (\c const) \ref Ch*. This helps avoiding implicitly + referencing character strings with insufficient lifetime, use + \ref PushBack(GenericValue&, Allocator&) or \ref + PushBack(StringRefType, Allocator&). + All other pointer types would implicitly convert to \c bool, + use an explicit cast instead, if needed. + \note Amortized constant time complexity. + */ + template + RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (GenericValue&)) + PushBack(T value, Allocator& allocator) { + GenericValue v(value); + return PushBack(v, allocator); + } + + //! Remove the last element in the array. + /*! + \note Constant time complexity. + */ + GenericValue& PopBack() { + RAPIDJSON_ASSERT(IsArray()); + RAPIDJSON_ASSERT(!Empty()); + GetElementsPointer()[--data_.a.size].~GenericValue(); + return *this; + } + + //! Remove an element of array by iterator. + /*! + \param pos iterator to the element to remove + \pre IsArray() == true && \ref Begin() <= \c pos < \ref End() + \return Iterator following the removed element. If the iterator pos refers to the last element, the End() iterator is returned. + \note Linear time complexity. + */ + ValueIterator Erase(ConstValueIterator pos) { + return Erase(pos, pos + 1); + } + + //! Remove elements in the range [first, last) of the array. + /*! + \param first iterator to the first element to remove + \param last iterator following the last element to remove + \pre IsArray() == true && \ref Begin() <= \c first <= \c last <= \ref End() + \return Iterator following the last removed element. + \note Linear time complexity. + */ + ValueIterator Erase(ConstValueIterator first, ConstValueIterator last) { + RAPIDJSON_ASSERT(IsArray()); + RAPIDJSON_ASSERT(data_.a.size > 0); + RAPIDJSON_ASSERT(GetElementsPointer() != 0); + RAPIDJSON_ASSERT(first >= Begin()); + RAPIDJSON_ASSERT(first <= last); + RAPIDJSON_ASSERT(last <= End()); + ValueIterator pos = Begin() + (first - Begin()); + for (ValueIterator itr = pos; itr != last; ++itr) + itr->~GenericValue(); + std::memmove(pos, last, static_cast(End() - last) * sizeof(GenericValue)); + data_.a.size -= static_cast(last - first); + return pos; + } + + Array GetArray() { RAPIDJSON_ASSERT(IsArray()); return Array(*this); } + ConstArray GetArray() const { RAPIDJSON_ASSERT(IsArray()); return ConstArray(*this); } + + //@} + + //!@name Number + //@{ + + int GetInt() const { RAPIDJSON_ASSERT(data_.f.flags & kIntFlag); return data_.n.i.i; } + unsigned GetUint() const { RAPIDJSON_ASSERT(data_.f.flags & kUintFlag); return data_.n.u.u; } + int64_t GetInt64() const { RAPIDJSON_ASSERT(data_.f.flags & kInt64Flag); return data_.n.i64; } + uint64_t GetUint64() const { RAPIDJSON_ASSERT(data_.f.flags & kUint64Flag); return data_.n.u64; } + + //! Get the value as double type. + /*! \note If the value is 64-bit integer type, it may lose precision. Use \c IsLosslessDouble() to check whether the converison is lossless. + */ + double GetDouble() const { + RAPIDJSON_ASSERT(IsNumber()); + if ((data_.f.flags & kDoubleFlag) != 0) return data_.n.d; // exact type, no conversion. + if ((data_.f.flags & kIntFlag) != 0) return data_.n.i.i; // int -> double + if ((data_.f.flags & kUintFlag) != 0) return data_.n.u.u; // unsigned -> double + if ((data_.f.flags & kInt64Flag) != 0) return static_cast(data_.n.i64); // int64_t -> double (may lose precision) + RAPIDJSON_ASSERT((data_.f.flags & kUint64Flag) != 0); return static_cast(data_.n.u64); // uint64_t -> double (may lose precision) + } + + //! Get the value as float type. + /*! \note If the value is 64-bit integer type, it may lose precision. Use \c IsLosslessFloat() to check whether the converison is lossless. + */ + float GetFloat() const { + return static_cast(GetDouble()); + } + + GenericValue& SetInt(int i) { this->~GenericValue(); new (this) GenericValue(i); return *this; } + GenericValue& SetUint(unsigned u) { this->~GenericValue(); new (this) GenericValue(u); return *this; } + GenericValue& SetInt64(int64_t i64) { this->~GenericValue(); new (this) GenericValue(i64); return *this; } + GenericValue& SetUint64(uint64_t u64) { this->~GenericValue(); new (this) GenericValue(u64); return *this; } + GenericValue& SetDouble(double d) { this->~GenericValue(); new (this) GenericValue(d); return *this; } + GenericValue& SetFloat(float f) { this->~GenericValue(); new (this) GenericValue(f); return *this; } + + //@} + + //!@name String + //@{ + + const Ch* GetString() const { RAPIDJSON_ASSERT(IsString()); return (data_.f.flags & kInlineStrFlag) ? data_.ss.str : GetStringPointer(); } + + //! Get the length of string. + /*! Since rapidjson permits "\\u0000" in the json string, strlen(v.GetString()) may not equal to v.GetStringLength(). + */ + SizeType GetStringLength() const { RAPIDJSON_ASSERT(IsString()); return ((data_.f.flags & kInlineStrFlag) ? (data_.ss.GetLength()) : data_.s.length); } + + //! Set this value as a string without copying source string. + /*! This version has better performance with supplied length, and also support string containing null character. + \param s source string pointer. + \param length The length of source string, excluding the trailing null terminator. + \return The value itself for fluent API. + \post IsString() == true && GetString() == s && GetStringLength() == length + \see SetString(StringRefType) + */ + GenericValue& SetString(const Ch* s, SizeType length) { return SetString(StringRef(s, length)); } + + //! Set this value as a string without copying source string. + /*! \param s source string reference + \return The value itself for fluent API. + \post IsString() == true && GetString() == s && GetStringLength() == s.length + */ + GenericValue& SetString(StringRefType s) { this->~GenericValue(); SetStringRaw(s); return *this; } + + //! Set this value as a string by copying from source string. + /*! This version has better performance with supplied length, and also support string containing null character. + \param s source string. + \param length The length of source string, excluding the trailing null terminator. + \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \post IsString() == true && GetString() != s && strcmp(GetString(),s) == 0 && GetStringLength() == length + */ + GenericValue& SetString(const Ch* s, SizeType length, Allocator& allocator) { this->~GenericValue(); SetStringRaw(StringRef(s, length), allocator); return *this; } + + //! Set this value as a string by copying from source string. + /*! \param s source string. + \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \post IsString() == true && GetString() != s && strcmp(GetString(),s) == 0 && GetStringLength() == length + */ + GenericValue& SetString(const Ch* s, Allocator& allocator) { return SetString(s, internal::StrLen(s), allocator); } + +#if RAPIDJSON_HAS_STDSTRING + //! Set this value as a string by copying from source string. + /*! \param s source string. + \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator(). + \return The value itself for fluent API. + \post IsString() == true && GetString() != s.data() && strcmp(GetString(),s.data() == 0 && GetStringLength() == s.size() + \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING. + */ + GenericValue& SetString(const std::basic_string& s, Allocator& allocator) { return SetString(s.data(), SizeType(s.size()), allocator); } +#endif + + //@} + + //!@name Array + //@{ + + //! Templated version for checking whether this value is type T. + /*! + \tparam T Either \c bool, \c int, \c unsigned, \c int64_t, \c uint64_t, \c double, \c float, \c const \c char*, \c std::basic_string + */ + template + bool Is() const { return internal::TypeHelper::Is(*this); } + + template + T Get() const { return internal::TypeHelper::Get(*this); } + + template + T Get() { return internal::TypeHelper::Get(*this); } + + template + ValueType& Set(const T& data) { return internal::TypeHelper::Set(*this, data); } + + template + ValueType& Set(const T& data, AllocatorType& allocator) { return internal::TypeHelper::Set(*this, data, allocator); } + + //@} + + //! Generate events of this value to a Handler. + /*! This function adopts the GoF visitor pattern. + Typical usage is to output this JSON value as JSON text via Writer, which is a Handler. + It can also be used to deep clone this value via GenericDocument, which is also a Handler. + \tparam Handler type of handler. + \param handler An object implementing concept Handler. + */ + template + bool Accept(Handler& handler) const { + switch(GetType()) { + case kNullType: return handler.Null(); + case kFalseType: return handler.Bool(false); + case kTrueType: return handler.Bool(true); + + case kObjectType: + if (RAPIDJSON_UNLIKELY(!handler.StartObject())) + return false; + for (ConstMemberIterator m = MemberBegin(); m != MemberEnd(); ++m) { + RAPIDJSON_ASSERT(m->name.IsString()); // User may change the type of name by MemberIterator. + if (RAPIDJSON_UNLIKELY(!handler.Key(m->name.GetString(), m->name.GetStringLength(), (m->name.data_.f.flags & kCopyFlag) != 0))) + return false; + if (RAPIDJSON_UNLIKELY(!m->value.Accept(handler))) + return false; + } + return handler.EndObject(data_.o.size); + + case kArrayType: + if (RAPIDJSON_UNLIKELY(!handler.StartArray())) + return false; + for (const GenericValue* v = Begin(); v != End(); ++v) + if (RAPIDJSON_UNLIKELY(!v->Accept(handler))) + return false; + return handler.EndArray(data_.a.size); + + case kStringType: + return handler.String(GetString(), GetStringLength(), (data_.f.flags & kCopyFlag) != 0); + + default: + RAPIDJSON_ASSERT(GetType() == kNumberType); + if (IsDouble()) return handler.Double(data_.n.d); + else if (IsInt()) return handler.Int(data_.n.i.i); + else if (IsUint()) return handler.Uint(data_.n.u.u); + else if (IsInt64()) return handler.Int64(data_.n.i64); + else return handler.Uint64(data_.n.u64); + } + } + +private: + template friend class GenericValue; + template friend class GenericDocument; + + enum { + kBoolFlag = 0x0008, + kNumberFlag = 0x0010, + kIntFlag = 0x0020, + kUintFlag = 0x0040, + kInt64Flag = 0x0080, + kUint64Flag = 0x0100, + kDoubleFlag = 0x0200, + kStringFlag = 0x0400, + kCopyFlag = 0x0800, + kInlineStrFlag = 0x1000, + + // Initial flags of different types. + kNullFlag = kNullType, + kTrueFlag = kTrueType | kBoolFlag, + kFalseFlag = kFalseType | kBoolFlag, + kNumberIntFlag = kNumberType | kNumberFlag | kIntFlag | kInt64Flag, + kNumberUintFlag = kNumberType | kNumberFlag | kUintFlag | kUint64Flag | kInt64Flag, + kNumberInt64Flag = kNumberType | kNumberFlag | kInt64Flag, + kNumberUint64Flag = kNumberType | kNumberFlag | kUint64Flag, + kNumberDoubleFlag = kNumberType | kNumberFlag | kDoubleFlag, + kNumberAnyFlag = kNumberType | kNumberFlag | kIntFlag | kInt64Flag | kUintFlag | kUint64Flag | kDoubleFlag, + kConstStringFlag = kStringType | kStringFlag, + kCopyStringFlag = kStringType | kStringFlag | kCopyFlag, + kShortStringFlag = kStringType | kStringFlag | kCopyFlag | kInlineStrFlag, + kObjectFlag = kObjectType, + kArrayFlag = kArrayType, + + kTypeMask = 0x07 + }; + + static const SizeType kDefaultArrayCapacity = 16; + static const SizeType kDefaultObjectCapacity = 16; + + struct Flag { +#if RAPIDJSON_48BITPOINTER_OPTIMIZATION + char payload[sizeof(SizeType) * 2 + 6]; // 2 x SizeType + lower 48-bit pointer +#elif RAPIDJSON_64BIT + char payload[sizeof(SizeType) * 2 + sizeof(void*) + 6]; // 6 padding bytes +#else + char payload[sizeof(SizeType) * 2 + sizeof(void*) + 2]; // 2 padding bytes +#endif + uint16_t flags; + }; + + struct String { + SizeType length; + SizeType hashcode; //!< reserved + const Ch* str; + }; // 12 bytes in 32-bit mode, 16 bytes in 64-bit mode + + // implementation detail: ShortString can represent zero-terminated strings up to MaxSize chars + // (excluding the terminating zero) and store a value to determine the length of the contained + // string in the last character str[LenPos] by storing "MaxSize - length" there. If the string + // to store has the maximal length of MaxSize then str[LenPos] will be 0 and therefore act as + // the string terminator as well. For getting the string length back from that value just use + // "MaxSize - str[LenPos]". + // This allows to store 13-chars strings in 32-bit mode, 21-chars strings in 64-bit mode, + // 13-chars strings for RAPIDJSON_48BITPOINTER_OPTIMIZATION=1 inline (for `UTF8`-encoded strings). + struct ShortString { + enum { MaxChars = sizeof(static_cast(0)->payload) / sizeof(Ch), MaxSize = MaxChars - 1, LenPos = MaxSize }; + Ch str[MaxChars]; + + inline static bool Usable(SizeType len) { return (MaxSize >= len); } + inline void SetLength(SizeType len) { str[LenPos] = static_cast(MaxSize - len); } + inline SizeType GetLength() const { return static_cast(MaxSize - str[LenPos]); } + }; // at most as many bytes as "String" above => 12 bytes in 32-bit mode, 16 bytes in 64-bit mode + + // By using proper binary layout, retrieval of different integer types do not need conversions. + union Number { +#if RAPIDJSON_ENDIAN == RAPIDJSON_LITTLEENDIAN + struct I { + int i; + char padding[4]; + }i; + struct U { + unsigned u; + char padding2[4]; + }u; +#else + struct I { + char padding[4]; + int i; + }i; + struct U { + char padding2[4]; + unsigned u; + }u; +#endif + int64_t i64; + uint64_t u64; + double d; + }; // 8 bytes + + struct ObjectData { + SizeType size; + SizeType capacity; + Member* members; + }; // 12 bytes in 32-bit mode, 16 bytes in 64-bit mode + + struct ArrayData { + SizeType size; + SizeType capacity; + GenericValue* elements; + }; // 12 bytes in 32-bit mode, 16 bytes in 64-bit mode + + union Data { + String s; + ShortString ss; + Number n; + ObjectData o; + ArrayData a; + Flag f; + }; // 16 bytes in 32-bit mode, 24 bytes in 64-bit mode, 16 bytes in 64-bit with RAPIDJSON_48BITPOINTER_OPTIMIZATION + + RAPIDJSON_FORCEINLINE const Ch* GetStringPointer() const { return RAPIDJSON_GETPOINTER(Ch, data_.s.str); } + RAPIDJSON_FORCEINLINE const Ch* SetStringPointer(const Ch* str) { return RAPIDJSON_SETPOINTER(Ch, data_.s.str, str); } + RAPIDJSON_FORCEINLINE GenericValue* GetElementsPointer() const { return RAPIDJSON_GETPOINTER(GenericValue, data_.a.elements); } + RAPIDJSON_FORCEINLINE GenericValue* SetElementsPointer(GenericValue* elements) { return RAPIDJSON_SETPOINTER(GenericValue, data_.a.elements, elements); } + RAPIDJSON_FORCEINLINE Member* GetMembersPointer() const { return RAPIDJSON_GETPOINTER(Member, data_.o.members); } + RAPIDJSON_FORCEINLINE Member* SetMembersPointer(Member* members) { return RAPIDJSON_SETPOINTER(Member, data_.o.members, members); } + + // Initialize this value as array with initial data, without calling destructor. + void SetArrayRaw(GenericValue* values, SizeType count, Allocator& allocator) { + data_.f.flags = kArrayFlag; + if (count) { + GenericValue* e = static_cast(allocator.Malloc(count * sizeof(GenericValue))); + SetElementsPointer(e); + std::memcpy(e, values, count * sizeof(GenericValue)); + } + else + SetElementsPointer(0); + data_.a.size = data_.a.capacity = count; + } + + //! Initialize this value as object with initial data, without calling destructor. + void SetObjectRaw(Member* members, SizeType count, Allocator& allocator) { + data_.f.flags = kObjectFlag; + if (count) { + Member* m = static_cast(allocator.Malloc(count * sizeof(Member))); + SetMembersPointer(m); + std::memcpy(m, members, count * sizeof(Member)); + } + else + SetMembersPointer(0); + data_.o.size = data_.o.capacity = count; + } + + //! Initialize this value as constant string, without calling destructor. + void SetStringRaw(StringRefType s) RAPIDJSON_NOEXCEPT { + data_.f.flags = kConstStringFlag; + SetStringPointer(s); + data_.s.length = s.length; + } + + //! Initialize this value as copy string with initial data, without calling destructor. + void SetStringRaw(StringRefType s, Allocator& allocator) { + Ch* str = 0; + if (ShortString::Usable(s.length)) { + data_.f.flags = kShortStringFlag; + data_.ss.SetLength(s.length); + str = data_.ss.str; + } else { + data_.f.flags = kCopyStringFlag; + data_.s.length = s.length; + str = static_cast(allocator.Malloc((s.length + 1) * sizeof(Ch))); + SetStringPointer(str); + } + std::memcpy(str, s, s.length * sizeof(Ch)); + str[s.length] = '\0'; + } + + //! Assignment without calling destructor + void RawAssign(GenericValue& rhs) RAPIDJSON_NOEXCEPT { + data_ = rhs.data_; + // data_.f.flags = rhs.data_.f.flags; + rhs.data_.f.flags = kNullFlag; + } + + template + bool StringEqual(const GenericValue& rhs) const { + RAPIDJSON_ASSERT(IsString()); + RAPIDJSON_ASSERT(rhs.IsString()); + + const SizeType len1 = GetStringLength(); + const SizeType len2 = rhs.GetStringLength(); + if(len1 != len2) { return false; } + + const Ch* const str1 = GetString(); + const Ch* const str2 = rhs.GetString(); + if(str1 == str2) { return true; } // fast path for constant string + + return (std::memcmp(str1, str2, sizeof(Ch) * len1) == 0); + } + + Data data_; +}; + +//! GenericValue with UTF8 encoding +typedef GenericValue > Value; + +/////////////////////////////////////////////////////////////////////////////// +// GenericDocument + +//! A document for parsing JSON text as DOM. +/*! + \note implements Handler concept + \tparam Encoding Encoding for both parsing and string storage. + \tparam Allocator Allocator for allocating memory for the DOM + \tparam StackAllocator Allocator for allocating memory for stack during parsing. + \warning Although GenericDocument inherits from GenericValue, the API does \b not provide any virtual functions, especially no virtual destructor. To avoid memory leaks, do not \c delete a GenericDocument object via a pointer to a GenericValue. +*/ +template , typename StackAllocator = CrtAllocator> +class GenericDocument : public GenericValue { +public: + typedef typename Encoding::Ch Ch; //!< Character type derived from Encoding. + typedef GenericValue ValueType; //!< Value type of the document. + typedef Allocator AllocatorType; //!< Allocator type from template parameter. + + //! Constructor + /*! Creates an empty document of specified type. + \param type Mandatory type of object to create. + \param allocator Optional allocator for allocating memory. + \param stackCapacity Optional initial capacity of stack in bytes. + \param stackAllocator Optional allocator for allocating memory for stack. + */ + explicit GenericDocument(Type type, Allocator* allocator = 0, size_t stackCapacity = kDefaultStackCapacity, StackAllocator* stackAllocator = 0) : + GenericValue(type), allocator_(allocator), ownAllocator_(0), stack_(stackAllocator, stackCapacity), parseResult_() + { + if (!allocator_) + ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator()); + } + + //! Constructor + /*! Creates an empty document which type is Null. + \param allocator Optional allocator for allocating memory. + \param stackCapacity Optional initial capacity of stack in bytes. + \param stackAllocator Optional allocator for allocating memory for stack. + */ + GenericDocument(Allocator* allocator = 0, size_t stackCapacity = kDefaultStackCapacity, StackAllocator* stackAllocator = 0) : + allocator_(allocator), ownAllocator_(0), stack_(stackAllocator, stackCapacity), parseResult_() + { + if (!allocator_) + ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator()); + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + //! Move constructor in C++11 + GenericDocument(GenericDocument&& rhs) RAPIDJSON_NOEXCEPT + : ValueType(std::forward(rhs)), // explicit cast to avoid prohibited move from Document + allocator_(rhs.allocator_), + ownAllocator_(rhs.ownAllocator_), + stack_(std::move(rhs.stack_)), + parseResult_(rhs.parseResult_) + { + rhs.allocator_ = 0; + rhs.ownAllocator_ = 0; + rhs.parseResult_ = ParseResult(); + } +#endif + + ~GenericDocument() { + Destroy(); + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + //! Move assignment in C++11 + GenericDocument& operator=(GenericDocument&& rhs) RAPIDJSON_NOEXCEPT + { + // The cast to ValueType is necessary here, because otherwise it would + // attempt to call GenericValue's templated assignment operator. + ValueType::operator=(std::forward(rhs)); + + // Calling the destructor here would prematurely call stack_'s destructor + Destroy(); + + allocator_ = rhs.allocator_; + ownAllocator_ = rhs.ownAllocator_; + stack_ = std::move(rhs.stack_); + parseResult_ = rhs.parseResult_; + + rhs.allocator_ = 0; + rhs.ownAllocator_ = 0; + rhs.parseResult_ = ParseResult(); + + return *this; + } +#endif + + //! Exchange the contents of this document with those of another. + /*! + \param rhs Another document. + \note Constant complexity. + \see GenericValue::Swap + */ + GenericDocument& Swap(GenericDocument& rhs) RAPIDJSON_NOEXCEPT { + ValueType::Swap(rhs); + stack_.Swap(rhs.stack_); + internal::Swap(allocator_, rhs.allocator_); + internal::Swap(ownAllocator_, rhs.ownAllocator_); + internal::Swap(parseResult_, rhs.parseResult_); + return *this; + } + + //! free-standing swap function helper + /*! + Helper function to enable support for common swap implementation pattern based on \c std::swap: + \code + void swap(MyClass& a, MyClass& b) { + using std::swap; + swap(a.doc, b.doc); + // ... + } + \endcode + \see Swap() + */ + friend inline void swap(GenericDocument& a, GenericDocument& b) RAPIDJSON_NOEXCEPT { a.Swap(b); } + + //! Populate this document by a generator which produces SAX events. + /*! \tparam Generator A functor with bool f(Handler) prototype. + \param g Generator functor which sends SAX events to the parameter. + \return The document itself for fluent API. + */ + template + GenericDocument& Populate(Generator& g) { + ClearStackOnExit scope(*this); + if (g(*this)) { + RAPIDJSON_ASSERT(stack_.GetSize() == sizeof(ValueType)); // Got one and only one root object + ValueType::operator=(*stack_.template Pop(1));// Move value from stack to document + } + return *this; + } + + //!@name Parse from stream + //!@{ + + //! Parse JSON text from an input stream (with Encoding conversion) + /*! \tparam parseFlags Combination of \ref ParseFlag. + \tparam SourceEncoding Encoding of input stream + \tparam InputStream Type of input stream, implementing Stream concept + \param is Input stream to be parsed. + \return The document itself for fluent API. + */ + template + GenericDocument& ParseStream(InputStream& is) { + GenericReader reader( + stack_.HasAllocator() ? &stack_.GetAllocator() : 0); + ClearStackOnExit scope(*this); + parseResult_ = reader.template Parse(is, *this); + if (parseResult_) { + RAPIDJSON_ASSERT(stack_.GetSize() == sizeof(ValueType)); // Got one and only one root object + ValueType::operator=(*stack_.template Pop(1));// Move value from stack to document + } + return *this; + } + + //! Parse JSON text from an input stream + /*! \tparam parseFlags Combination of \ref ParseFlag. + \tparam InputStream Type of input stream, implementing Stream concept + \param is Input stream to be parsed. + \return The document itself for fluent API. + */ + template + GenericDocument& ParseStream(InputStream& is) { + return ParseStream(is); + } + + //! Parse JSON text from an input stream (with \ref kParseDefaultFlags) + /*! \tparam InputStream Type of input stream, implementing Stream concept + \param is Input stream to be parsed. + \return The document itself for fluent API. + */ + template + GenericDocument& ParseStream(InputStream& is) { + return ParseStream(is); + } + //!@} + + //!@name Parse in-place from mutable string + //!@{ + + //! Parse JSON text from a mutable string + /*! \tparam parseFlags Combination of \ref ParseFlag. + \param str Mutable zero-terminated string to be parsed. + \return The document itself for fluent API. + */ + template + GenericDocument& ParseInsitu(Ch* str) { + GenericInsituStringStream s(str); + return ParseStream(s); + } + + //! Parse JSON text from a mutable string (with \ref kParseDefaultFlags) + /*! \param str Mutable zero-terminated string to be parsed. + \return The document itself for fluent API. + */ + GenericDocument& ParseInsitu(Ch* str) { + return ParseInsitu(str); + } + //!@} + + //!@name Parse from read-only string + //!@{ + + //! Parse JSON text from a read-only string (with Encoding conversion) + /*! \tparam parseFlags Combination of \ref ParseFlag (must not contain \ref kParseInsituFlag). + \tparam SourceEncoding Transcoding from input Encoding + \param str Read-only zero-terminated string to be parsed. + */ + template + GenericDocument& Parse(const typename SourceEncoding::Ch* str) { + RAPIDJSON_ASSERT(!(parseFlags & kParseInsituFlag)); + GenericStringStream s(str); + return ParseStream(s); + } + + //! Parse JSON text from a read-only string + /*! \tparam parseFlags Combination of \ref ParseFlag (must not contain \ref kParseInsituFlag). + \param str Read-only zero-terminated string to be parsed. + */ + template + GenericDocument& Parse(const Ch* str) { + return Parse(str); + } + + //! Parse JSON text from a read-only string (with \ref kParseDefaultFlags) + /*! \param str Read-only zero-terminated string to be parsed. + */ + GenericDocument& Parse(const Ch* str) { + return Parse(str); + } + + template + GenericDocument& Parse(const typename SourceEncoding::Ch* str, size_t length) { + RAPIDJSON_ASSERT(!(parseFlags & kParseInsituFlag)); + MemoryStream ms(static_cast(str), length * sizeof(typename SourceEncoding::Ch)); + EncodedInputStream is(ms); + ParseStream(is); + return *this; + } + + template + GenericDocument& Parse(const Ch* str, size_t length) { + return Parse(str, length); + } + + GenericDocument& Parse(const Ch* str, size_t length) { + return Parse(str, length); + } + +#if RAPIDJSON_HAS_STDSTRING + template + GenericDocument& Parse(const std::basic_string& str) { + // c_str() is constant complexity according to standard. Should be faster than Parse(const char*, size_t) + return Parse(str.c_str()); + } + + template + GenericDocument& Parse(const std::basic_string& str) { + return Parse(str.c_str()); + } + + GenericDocument& Parse(const std::basic_string& str) { + return Parse(str); + } +#endif // RAPIDJSON_HAS_STDSTRING + + //!@} + + //!@name Handling parse errors + //!@{ + + //! Whether a parse error has occured in the last parsing. + bool HasParseError() const { return parseResult_.IsError(); } + + //! Get the \ref ParseErrorCode of last parsing. + ParseErrorCode GetParseError() const { return parseResult_.Code(); } + + //! Get the position of last parsing error in input, 0 otherwise. + size_t GetErrorOffset() const { return parseResult_.Offset(); } + + //! Implicit conversion to get the last parse result +#ifndef __clang // -Wdocumentation + /*! \return \ref ParseResult of the last parse operation + + \code + Document doc; + ParseResult ok = doc.Parse(json); + if (!ok) + printf( "JSON parse error: %s (%u)\n", GetParseError_En(ok.Code()), ok.Offset()); + \endcode + */ +#endif + operator ParseResult() const { return parseResult_; } + //!@} + + //! Get the allocator of this document. + Allocator& GetAllocator() { + RAPIDJSON_ASSERT(allocator_); + return *allocator_; + } + + //! Get the capacity of stack in bytes. + size_t GetStackCapacity() const { return stack_.GetCapacity(); } + +private: + // clear stack on any exit from ParseStream, e.g. due to exception + struct ClearStackOnExit { + explicit ClearStackOnExit(GenericDocument& d) : d_(d) {} + ~ClearStackOnExit() { d_.ClearStack(); } + private: + ClearStackOnExit(const ClearStackOnExit&); + ClearStackOnExit& operator=(const ClearStackOnExit&); + GenericDocument& d_; + }; + + // callers of the following private Handler functions + // template friend class GenericReader; // for parsing + template friend class GenericValue; // for deep copying + +public: + // Implementation of Handler + bool Null() { new (stack_.template Push()) ValueType(); return true; } + bool Bool(bool b) { new (stack_.template Push()) ValueType(b); return true; } + bool Int(int i) { new (stack_.template Push()) ValueType(i); return true; } + bool Uint(unsigned i) { new (stack_.template Push()) ValueType(i); return true; } + bool Int64(int64_t i) { new (stack_.template Push()) ValueType(i); return true; } + bool Uint64(uint64_t i) { new (stack_.template Push()) ValueType(i); return true; } + bool Double(double d) { new (stack_.template Push()) ValueType(d); return true; } + + bool RawNumber(const Ch* str, SizeType length, bool copy) { + if (copy) + new (stack_.template Push()) ValueType(str, length, GetAllocator()); + else + new (stack_.template Push()) ValueType(str, length); + return true; + } + + bool String(const Ch* str, SizeType length, bool copy) { + if (copy) + new (stack_.template Push()) ValueType(str, length, GetAllocator()); + else + new (stack_.template Push()) ValueType(str, length); + return true; + } + + bool StartObject() { new (stack_.template Push()) ValueType(kObjectType); return true; } + + bool Key(const Ch* str, SizeType length, bool copy) { return String(str, length, copy); } + + bool EndObject(SizeType memberCount) { + typename ValueType::Member* members = stack_.template Pop(memberCount); + stack_.template Top()->SetObjectRaw(members, memberCount, GetAllocator()); + return true; + } + + bool StartArray() { new (stack_.template Push()) ValueType(kArrayType); return true; } + + bool EndArray(SizeType elementCount) { + ValueType* elements = stack_.template Pop(elementCount); + stack_.template Top()->SetArrayRaw(elements, elementCount, GetAllocator()); + return true; + } + +private: + //! Prohibit copying + GenericDocument(const GenericDocument&); + //! Prohibit assignment + GenericDocument& operator=(const GenericDocument&); + + void ClearStack() { + if (Allocator::kNeedFree) + while (stack_.GetSize() > 0) // Here assumes all elements in stack array are GenericValue (Member is actually 2 GenericValue objects) + (stack_.template Pop(1))->~ValueType(); + else + stack_.Clear(); + stack_.ShrinkToFit(); + } + + void Destroy() { + RAPIDJSON_DELETE(ownAllocator_); + } + + static const size_t kDefaultStackCapacity = 1024; + Allocator* allocator_; + Allocator* ownAllocator_; + internal::Stack stack_; + ParseResult parseResult_; +}; + +//! GenericDocument with UTF8 encoding +typedef GenericDocument > Document; + +// defined here due to the dependency on GenericDocument +template +template +inline +GenericValue::GenericValue(const GenericValue& rhs, Allocator& allocator) +{ + switch (rhs.GetType()) { + case kObjectType: + case kArrayType: { // perform deep copy via SAX Handler + GenericDocument d(&allocator); + rhs.Accept(d); + RawAssign(*d.stack_.template Pop(1)); + } + break; + case kStringType: + if (rhs.data_.f.flags == kConstStringFlag) { + data_.f.flags = rhs.data_.f.flags; + data_ = *reinterpret_cast(&rhs.data_); + } else { + SetStringRaw(StringRef(rhs.GetString(), rhs.GetStringLength()), allocator); + } + break; + default: + data_.f.flags = rhs.data_.f.flags; + data_ = *reinterpret_cast(&rhs.data_); + break; + } +} + +//! Helper class for accessing Value of array type. +/*! + Instance of this helper class is obtained by \c GenericValue::GetArray(). + In addition to all APIs for array type, it provides range-based for loop if \c RAPIDJSON_HAS_CXX11_RANGE_FOR=1. +*/ +template +class GenericArray { +public: + typedef GenericArray ConstArray; + typedef GenericArray Array; + typedef ValueT PlainType; + typedef typename internal::MaybeAddConst::Type ValueType; + typedef ValueType* ValueIterator; // This may be const or non-const iterator + typedef const ValueT* ConstValueIterator; + typedef typename ValueType::AllocatorType AllocatorType; + typedef typename ValueType::StringRefType StringRefType; + + template + friend class GenericValue; + + GenericArray(const GenericArray& rhs) : value_(rhs.value_) {} + GenericArray& operator=(const GenericArray& rhs) { value_ = rhs.value_; return *this; } + ~GenericArray() {} + + SizeType Size() const { return value_.Size(); } + SizeType Capacity() const { return value_.Capacity(); } + bool Empty() const { return value_.Empty(); } + void Clear() const { value_.Clear(); } + ValueType& operator[](SizeType index) const { return value_[index]; } + ValueIterator Begin() const { return value_.Begin(); } + ValueIterator End() const { return value_.End(); } + GenericArray Reserve(SizeType newCapacity, AllocatorType &allocator) const { value_.Reserve(newCapacity, allocator); return *this; } + GenericArray PushBack(ValueType& value, AllocatorType& allocator) const { value_.PushBack(value, allocator); return *this; } +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + GenericArray PushBack(ValueType&& value, AllocatorType& allocator) const { value_.PushBack(value, allocator); return *this; } +#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS + GenericArray PushBack(StringRefType value, AllocatorType& allocator) const { value_.PushBack(value, allocator); return *this; } + template RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (const GenericArray&)) PushBack(T value, AllocatorType& allocator) const { value_.PushBack(value, allocator); return *this; } + GenericArray PopBack() const { value_.PopBack(); return *this; } + ValueIterator Erase(ConstValueIterator pos) const { return value_.Erase(pos); } + ValueIterator Erase(ConstValueIterator first, ConstValueIterator last) const { return value_.Erase(first, last); } + +#if RAPIDJSON_HAS_CXX11_RANGE_FOR + ValueIterator begin() const { return value_.Begin(); } + ValueIterator end() const { return value_.End(); } +#endif + +private: + GenericArray(); + GenericArray(ValueType& value) : value_(value) {} + ValueType& value_; +}; + +//! Helper class for accessing Value of object type. +/*! + Instance of this helper class is obtained by \c GenericValue::GetObject(). + In addition to all APIs for array type, it provides range-based for loop if \c RAPIDJSON_HAS_CXX11_RANGE_FOR=1. +*/ +template +class GenericObject { +public: + typedef GenericObject ConstObject; + typedef GenericObject Object; + typedef ValueT PlainType; + typedef typename internal::MaybeAddConst::Type ValueType; + typedef GenericMemberIterator MemberIterator; // This may be const or non-const iterator + typedef GenericMemberIterator ConstMemberIterator; + typedef typename ValueType::AllocatorType AllocatorType; + typedef typename ValueType::StringRefType StringRefType; + typedef typename ValueType::EncodingType EncodingType; + typedef typename ValueType::Ch Ch; + + template + friend class GenericValue; + + GenericObject(const GenericObject& rhs) : value_(rhs.value_) {} + GenericObject& operator=(const GenericObject& rhs) { value_ = rhs.value_; return *this; } + ~GenericObject() {} + + SizeType MemberCount() const { return value_.MemberCount(); } + bool ObjectEmpty() const { return value_.ObjectEmpty(); } + template ValueType& operator[](T* name) const { return value_[name]; } + template ValueType& operator[](const GenericValue& name) const { return value_[name]; } +#if RAPIDJSON_HAS_STDSTRING + ValueType& operator[](const std::basic_string& name) const { return value_[name]; } +#endif + MemberIterator MemberBegin() const { return value_.MemberBegin(); } + MemberIterator MemberEnd() const { return value_.MemberEnd(); } + bool HasMember(const Ch* name) const { return value_.HasMember(name); } +#if RAPIDJSON_HAS_STDSTRING + bool HasMember(const std::basic_string& name) const { return value_.HasMember(name); } +#endif + template bool HasMember(const GenericValue& name) const { return value_.HasMember(name); } + MemberIterator FindMember(const Ch* name) const { return value_.FindMember(name); } + template MemberIterator FindMember(const GenericValue& name) const { return value_.FindMember(name); } +#if RAPIDJSON_HAS_STDSTRING + MemberIterator FindMember(const std::basic_string& name) const { return value_.FindMember(name); } +#endif + GenericObject AddMember(ValueType& name, ValueType& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } + GenericObject AddMember(ValueType& name, StringRefType value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } +#if RAPIDJSON_HAS_STDSTRING + GenericObject AddMember(ValueType& name, std::basic_string& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } +#endif + template RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (ValueType&)) AddMember(ValueType& name, T value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + GenericObject AddMember(ValueType&& name, ValueType&& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } + GenericObject AddMember(ValueType&& name, ValueType& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } + GenericObject AddMember(ValueType& name, ValueType&& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } + GenericObject AddMember(StringRefType name, ValueType&& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } +#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS + GenericObject AddMember(StringRefType name, ValueType& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } + GenericObject AddMember(StringRefType name, StringRefType value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } + template RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (GenericObject)) AddMember(StringRefType name, T value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; } + void RemoveAllMembers() { return value_.RemoveAllMembers(); } + bool RemoveMember(const Ch* name) const { return value_.RemoveMember(name); } +#if RAPIDJSON_HAS_STDSTRING + bool RemoveMember(const std::basic_string& name) const { return value_.RemoveMember(name); } +#endif + template bool RemoveMember(const GenericValue& name) const { return value_.RemoveMember(name); } + MemberIterator RemoveMember(MemberIterator m) const { return value_.RemoveMember(m); } + MemberIterator EraseMember(ConstMemberIterator pos) const { return value_.EraseMember(pos); } + MemberIterator EraseMember(ConstMemberIterator first, ConstMemberIterator last) const { return value_.EraseMember(first, last); } + bool EraseMember(const Ch* name) const { return value_.EraseMember(name); } +#if RAPIDJSON_HAS_STDSTRING + bool EraseMember(const std::basic_string& name) const { return EraseMember(ValueType(StringRef(name))); } +#endif + template bool EraseMember(const GenericValue& name) const { return value_.EraseMember(name); } + +#if RAPIDJSON_HAS_CXX11_RANGE_FOR + MemberIterator begin() const { return value_.MemberBegin(); } + MemberIterator end() const { return value_.MemberEnd(); } +#endif + +private: + GenericObject(); + GenericObject(ValueType& value) : value_(value) {} + ValueType& value_; +}; + +RAPIDJSON_NAMESPACE_END +RAPIDJSON_DIAG_POP + +#endif // RAPIDJSON_DOCUMENT_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/encodedstream.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/encodedstream.h new file mode 100644 index 0000000..1450683 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/encodedstream.h @@ -0,0 +1,299 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_ENCODEDSTREAM_H_ +#define RAPIDJSON_ENCODEDSTREAM_H_ + +#include "stream.h" +#include "memorystream.h" + +#ifdef __GNUC__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! Input byte stream wrapper with a statically bound encoding. +/*! + \tparam Encoding The interpretation of encoding of the stream. Either UTF8, UTF16LE, UTF16BE, UTF32LE, UTF32BE. + \tparam InputByteStream Type of input byte stream. For example, FileReadStream. +*/ +template +class EncodedInputStream { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); +public: + typedef typename Encoding::Ch Ch; + + EncodedInputStream(InputByteStream& is) : is_(is) { + current_ = Encoding::TakeBOM(is_); + } + + Ch Peek() const { return current_; } + Ch Take() { Ch c = current_; current_ = Encoding::Take(is_); return c; } + size_t Tell() const { return is_.Tell(); } + + // Not implemented + void Put(Ch) { RAPIDJSON_ASSERT(false); } + void Flush() { RAPIDJSON_ASSERT(false); } + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + +private: + EncodedInputStream(const EncodedInputStream&); + EncodedInputStream& operator=(const EncodedInputStream&); + + InputByteStream& is_; + Ch current_; +}; + +//! Specialized for UTF8 MemoryStream. +template <> +class EncodedInputStream, MemoryStream> { +public: + typedef UTF8<>::Ch Ch; + + EncodedInputStream(MemoryStream& is) : is_(is) { + if (static_cast(is_.Peek()) == 0xEFu) is_.Take(); + if (static_cast(is_.Peek()) == 0xBBu) is_.Take(); + if (static_cast(is_.Peek()) == 0xBFu) is_.Take(); + } + Ch Peek() const { return is_.Peek(); } + Ch Take() { return is_.Take(); } + size_t Tell() const { return is_.Tell(); } + + // Not implemented + void Put(Ch) {} + void Flush() {} + Ch* PutBegin() { return 0; } + size_t PutEnd(Ch*) { return 0; } + + MemoryStream& is_; + +private: + EncodedInputStream(const EncodedInputStream&); + EncodedInputStream& operator=(const EncodedInputStream&); +}; + +//! Output byte stream wrapper with statically bound encoding. +/*! + \tparam Encoding The interpretation of encoding of the stream. Either UTF8, UTF16LE, UTF16BE, UTF32LE, UTF32BE. + \tparam OutputByteStream Type of input byte stream. For example, FileWriteStream. +*/ +template +class EncodedOutputStream { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); +public: + typedef typename Encoding::Ch Ch; + + EncodedOutputStream(OutputByteStream& os, bool putBOM = true) : os_(os) { + if (putBOM) + Encoding::PutBOM(os_); + } + + void Put(Ch c) { Encoding::Put(os_, c); } + void Flush() { os_.Flush(); } + + // Not implemented + Ch Peek() const { RAPIDJSON_ASSERT(false); return 0;} + Ch Take() { RAPIDJSON_ASSERT(false); return 0;} + size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; } + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + +private: + EncodedOutputStream(const EncodedOutputStream&); + EncodedOutputStream& operator=(const EncodedOutputStream&); + + OutputByteStream& os_; +}; + +#define RAPIDJSON_ENCODINGS_FUNC(x) UTF8::x, UTF16LE::x, UTF16BE::x, UTF32LE::x, UTF32BE::x + +//! Input stream wrapper with dynamically bound encoding and automatic encoding detection. +/*! + \tparam CharType Type of character for reading. + \tparam InputByteStream type of input byte stream to be wrapped. +*/ +template +class AutoUTFInputStream { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); +public: + typedef CharType Ch; + + //! Constructor. + /*! + \param is input stream to be wrapped. + \param type UTF encoding type if it is not detected from the stream. + */ + AutoUTFInputStream(InputByteStream& is, UTFType type = kUTF8) : is_(&is), type_(type), hasBOM_(false) { + RAPIDJSON_ASSERT(type >= kUTF8 && type <= kUTF32BE); + DetectType(); + static const TakeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Take) }; + takeFunc_ = f[type_]; + current_ = takeFunc_(*is_); + } + + UTFType GetType() const { return type_; } + bool HasBOM() const { return hasBOM_; } + + Ch Peek() const { return current_; } + Ch Take() { Ch c = current_; current_ = takeFunc_(*is_); return c; } + size_t Tell() const { return is_->Tell(); } + + // Not implemented + void Put(Ch) { RAPIDJSON_ASSERT(false); } + void Flush() { RAPIDJSON_ASSERT(false); } + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + +private: + AutoUTFInputStream(const AutoUTFInputStream&); + AutoUTFInputStream& operator=(const AutoUTFInputStream&); + + // Detect encoding type with BOM or RFC 4627 + void DetectType() { + // BOM (Byte Order Mark): + // 00 00 FE FF UTF-32BE + // FF FE 00 00 UTF-32LE + // FE FF UTF-16BE + // FF FE UTF-16LE + // EF BB BF UTF-8 + + const unsigned char* c = reinterpret_cast(is_->Peek4()); + if (!c) + return; + + unsigned bom = static_cast(c[0] | (c[1] << 8) | (c[2] << 16) | (c[3] << 24)); + hasBOM_ = false; + if (bom == 0xFFFE0000) { type_ = kUTF32BE; hasBOM_ = true; is_->Take(); is_->Take(); is_->Take(); is_->Take(); } + else if (bom == 0x0000FEFF) { type_ = kUTF32LE; hasBOM_ = true; is_->Take(); is_->Take(); is_->Take(); is_->Take(); } + else if ((bom & 0xFFFF) == 0xFFFE) { type_ = kUTF16BE; hasBOM_ = true; is_->Take(); is_->Take(); } + else if ((bom & 0xFFFF) == 0xFEFF) { type_ = kUTF16LE; hasBOM_ = true; is_->Take(); is_->Take(); } + else if ((bom & 0xFFFFFF) == 0xBFBBEF) { type_ = kUTF8; hasBOM_ = true; is_->Take(); is_->Take(); is_->Take(); } + + // RFC 4627: Section 3 + // "Since the first two characters of a JSON text will always be ASCII + // characters [RFC0020], it is possible to determine whether an octet + // stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking + // at the pattern of nulls in the first four octets." + // 00 00 00 xx UTF-32BE + // 00 xx 00 xx UTF-16BE + // xx 00 00 00 UTF-32LE + // xx 00 xx 00 UTF-16LE + // xx xx xx xx UTF-8 + + if (!hasBOM_) { + unsigned pattern = (c[0] ? 1 : 0) | (c[1] ? 2 : 0) | (c[2] ? 4 : 0) | (c[3] ? 8 : 0); + switch (pattern) { + case 0x08: type_ = kUTF32BE; break; + case 0x0A: type_ = kUTF16BE; break; + case 0x01: type_ = kUTF32LE; break; + case 0x05: type_ = kUTF16LE; break; + case 0x0F: type_ = kUTF8; break; + default: break; // Use type defined by user. + } + } + + // Runtime check whether the size of character type is sufficient. It only perform checks with assertion. + if (type_ == kUTF16LE || type_ == kUTF16BE) RAPIDJSON_ASSERT(sizeof(Ch) >= 2); + if (type_ == kUTF32LE || type_ == kUTF32BE) RAPIDJSON_ASSERT(sizeof(Ch) >= 4); + } + + typedef Ch (*TakeFunc)(InputByteStream& is); + InputByteStream* is_; + UTFType type_; + Ch current_; + TakeFunc takeFunc_; + bool hasBOM_; +}; + +//! Output stream wrapper with dynamically bound encoding and automatic encoding detection. +/*! + \tparam CharType Type of character for writing. + \tparam OutputByteStream type of output byte stream to be wrapped. +*/ +template +class AutoUTFOutputStream { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); +public: + typedef CharType Ch; + + //! Constructor. + /*! + \param os output stream to be wrapped. + \param type UTF encoding type. + \param putBOM Whether to write BOM at the beginning of the stream. + */ + AutoUTFOutputStream(OutputByteStream& os, UTFType type, bool putBOM) : os_(&os), type_(type) { + RAPIDJSON_ASSERT(type >= kUTF8 && type <= kUTF32BE); + + // Runtime check whether the size of character type is sufficient. It only perform checks with assertion. + if (type_ == kUTF16LE || type_ == kUTF16BE) RAPIDJSON_ASSERT(sizeof(Ch) >= 2); + if (type_ == kUTF32LE || type_ == kUTF32BE) RAPIDJSON_ASSERT(sizeof(Ch) >= 4); + + static const PutFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Put) }; + putFunc_ = f[type_]; + + if (putBOM) + PutBOM(); + } + + UTFType GetType() const { return type_; } + + void Put(Ch c) { putFunc_(*os_, c); } + void Flush() { os_->Flush(); } + + // Not implemented + Ch Peek() const { RAPIDJSON_ASSERT(false); return 0;} + Ch Take() { RAPIDJSON_ASSERT(false); return 0;} + size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; } + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + +private: + AutoUTFOutputStream(const AutoUTFOutputStream&); + AutoUTFOutputStream& operator=(const AutoUTFOutputStream&); + + void PutBOM() { + typedef void (*PutBOMFunc)(OutputByteStream&); + static const PutBOMFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(PutBOM) }; + f[type_](*os_); + } + + typedef void (*PutFunc)(OutputByteStream&, Ch); + + OutputByteStream* os_; + UTFType type_; + PutFunc putFunc_; +}; + +#undef RAPIDJSON_ENCODINGS_FUNC + +RAPIDJSON_NAMESPACE_END + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +#ifdef __GNUC__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_FILESTREAM_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/encodings.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/encodings.h new file mode 100644 index 0000000..baa7c2b --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/encodings.h @@ -0,0 +1,716 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_ENCODINGS_H_ +#define RAPIDJSON_ENCODINGS_H_ + +#include "rapidjson.h" + +#ifdef _MSC_VER +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(4244) // conversion from 'type1' to 'type2', possible loss of data +RAPIDJSON_DIAG_OFF(4702) // unreachable code +#elif defined(__GNUC__) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +RAPIDJSON_DIAG_OFF(overflow) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +/////////////////////////////////////////////////////////////////////////////// +// Encoding + +/*! \class rapidjson::Encoding + \brief Concept for encoding of Unicode characters. + +\code +concept Encoding { + typename Ch; //! Type of character. A "character" is actually a code unit in unicode's definition. + + enum { supportUnicode = 1 }; // or 0 if not supporting unicode + + //! \brief Encode a Unicode codepoint to an output stream. + //! \param os Output stream. + //! \param codepoint An unicode codepoint, ranging from 0x0 to 0x10FFFF inclusively. + template + static void Encode(OutputStream& os, unsigned codepoint); + + //! \brief Decode a Unicode codepoint from an input stream. + //! \param is Input stream. + //! \param codepoint Output of the unicode codepoint. + //! \return true if a valid codepoint can be decoded from the stream. + template + static bool Decode(InputStream& is, unsigned* codepoint); + + //! \brief Validate one Unicode codepoint from an encoded stream. + //! \param is Input stream to obtain codepoint. + //! \param os Output for copying one codepoint. + //! \return true if it is valid. + //! \note This function just validating and copying the codepoint without actually decode it. + template + static bool Validate(InputStream& is, OutputStream& os); + + // The following functions are deal with byte streams. + + //! Take a character from input byte stream, skip BOM if exist. + template + static CharType TakeBOM(InputByteStream& is); + + //! Take a character from input byte stream. + template + static Ch Take(InputByteStream& is); + + //! Put BOM to output byte stream. + template + static void PutBOM(OutputByteStream& os); + + //! Put a character to output byte stream. + template + static void Put(OutputByteStream& os, Ch c); +}; +\endcode +*/ + +/////////////////////////////////////////////////////////////////////////////// +// UTF8 + +//! UTF-8 encoding. +/*! http://en.wikipedia.org/wiki/UTF-8 + http://tools.ietf.org/html/rfc3629 + \tparam CharType Code unit for storing 8-bit UTF-8 data. Default is char. + \note implements Encoding concept +*/ +template +struct UTF8 { + typedef CharType Ch; + + enum { supportUnicode = 1 }; + + template + static void Encode(OutputStream& os, unsigned codepoint) { + if (codepoint <= 0x7F) + os.Put(static_cast(codepoint & 0xFF)); + else if (codepoint <= 0x7FF) { + os.Put(static_cast(0xC0 | ((codepoint >> 6) & 0xFF))); + os.Put(static_cast(0x80 | ((codepoint & 0x3F)))); + } + else if (codepoint <= 0xFFFF) { + os.Put(static_cast(0xE0 | ((codepoint >> 12) & 0xFF))); + os.Put(static_cast(0x80 | ((codepoint >> 6) & 0x3F))); + os.Put(static_cast(0x80 | (codepoint & 0x3F))); + } + else { + RAPIDJSON_ASSERT(codepoint <= 0x10FFFF); + os.Put(static_cast(0xF0 | ((codepoint >> 18) & 0xFF))); + os.Put(static_cast(0x80 | ((codepoint >> 12) & 0x3F))); + os.Put(static_cast(0x80 | ((codepoint >> 6) & 0x3F))); + os.Put(static_cast(0x80 | (codepoint & 0x3F))); + } + } + + template + static void EncodeUnsafe(OutputStream& os, unsigned codepoint) { + if (codepoint <= 0x7F) + PutUnsafe(os, static_cast(codepoint & 0xFF)); + else if (codepoint <= 0x7FF) { + PutUnsafe(os, static_cast(0xC0 | ((codepoint >> 6) & 0xFF))); + PutUnsafe(os, static_cast(0x80 | ((codepoint & 0x3F)))); + } + else if (codepoint <= 0xFFFF) { + PutUnsafe(os, static_cast(0xE0 | ((codepoint >> 12) & 0xFF))); + PutUnsafe(os, static_cast(0x80 | ((codepoint >> 6) & 0x3F))); + PutUnsafe(os, static_cast(0x80 | (codepoint & 0x3F))); + } + else { + RAPIDJSON_ASSERT(codepoint <= 0x10FFFF); + PutUnsafe(os, static_cast(0xF0 | ((codepoint >> 18) & 0xFF))); + PutUnsafe(os, static_cast(0x80 | ((codepoint >> 12) & 0x3F))); + PutUnsafe(os, static_cast(0x80 | ((codepoint >> 6) & 0x3F))); + PutUnsafe(os, static_cast(0x80 | (codepoint & 0x3F))); + } + } + + template + static bool Decode(InputStream& is, unsigned* codepoint) { +#define COPY() c = is.Take(); *codepoint = (*codepoint << 6) | (static_cast(c) & 0x3Fu) +#define TRANS(mask) result &= ((GetRange(static_cast(c)) & mask) != 0) +#define TAIL() COPY(); TRANS(0x70) + typename InputStream::Ch c = is.Take(); + if (!(c & 0x80)) { + *codepoint = static_cast(c); + return true; + } + + unsigned char type = GetRange(static_cast(c)); + if (type >= 32) { + *codepoint = 0; + } else { + *codepoint = (0xFF >> type) & static_cast(c); + } + bool result = true; + switch (type) { + case 2: TAIL(); return result; + case 3: TAIL(); TAIL(); return result; + case 4: COPY(); TRANS(0x50); TAIL(); return result; + case 5: COPY(); TRANS(0x10); TAIL(); TAIL(); return result; + case 6: TAIL(); TAIL(); TAIL(); return result; + case 10: COPY(); TRANS(0x20); TAIL(); return result; + case 11: COPY(); TRANS(0x60); TAIL(); TAIL(); return result; + default: return false; + } +#undef COPY +#undef TRANS +#undef TAIL + } + + template + static bool Validate(InputStream& is, OutputStream& os) { +#define COPY() os.Put(c = is.Take()) +#define TRANS(mask) result &= ((GetRange(static_cast(c)) & mask) != 0) +#define TAIL() COPY(); TRANS(0x70) + Ch c; + COPY(); + if (!(c & 0x80)) + return true; + + bool result = true; + switch (GetRange(static_cast(c))) { + case 2: TAIL(); return result; + case 3: TAIL(); TAIL(); return result; + case 4: COPY(); TRANS(0x50); TAIL(); return result; + case 5: COPY(); TRANS(0x10); TAIL(); TAIL(); return result; + case 6: TAIL(); TAIL(); TAIL(); return result; + case 10: COPY(); TRANS(0x20); TAIL(); return result; + case 11: COPY(); TRANS(0x60); TAIL(); TAIL(); return result; + default: return false; + } +#undef COPY +#undef TRANS +#undef TAIL + } + + static unsigned char GetRange(unsigned char c) { + // Referring to DFA of http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ + // With new mapping 1 -> 0x10, 7 -> 0x20, 9 -> 0x40, such that AND operation can test multiple types. + static const unsigned char type[] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3, 11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8, + }; + return type[c]; + } + + template + static CharType TakeBOM(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + typename InputByteStream::Ch c = Take(is); + if (static_cast(c) != 0xEFu) return c; + c = is.Take(); + if (static_cast(c) != 0xBBu) return c; + c = is.Take(); + if (static_cast(c) != 0xBFu) return c; + c = is.Take(); + return c; + } + + template + static Ch Take(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + return static_cast(is.Take()); + } + + template + static void PutBOM(OutputByteStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast(0xEFu)); + os.Put(static_cast(0xBBu)); + os.Put(static_cast(0xBFu)); + } + + template + static void Put(OutputByteStream& os, Ch c) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast(c)); + } +}; + +/////////////////////////////////////////////////////////////////////////////// +// UTF16 + +//! UTF-16 encoding. +/*! http://en.wikipedia.org/wiki/UTF-16 + http://tools.ietf.org/html/rfc2781 + \tparam CharType Type for storing 16-bit UTF-16 data. Default is wchar_t. C++11 may use char16_t instead. + \note implements Encoding concept + + \note For in-memory access, no need to concern endianness. The code units and code points are represented by CPU's endianness. + For streaming, use UTF16LE and UTF16BE, which handle endianness. +*/ +template +struct UTF16 { + typedef CharType Ch; + RAPIDJSON_STATIC_ASSERT(sizeof(Ch) >= 2); + + enum { supportUnicode = 1 }; + + template + static void Encode(OutputStream& os, unsigned codepoint) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 2); + if (codepoint <= 0xFFFF) { + RAPIDJSON_ASSERT(codepoint < 0xD800 || codepoint > 0xDFFF); // Code point itself cannot be surrogate pair + os.Put(static_cast(codepoint)); + } + else { + RAPIDJSON_ASSERT(codepoint <= 0x10FFFF); + unsigned v = codepoint - 0x10000; + os.Put(static_cast((v >> 10) | 0xD800)); + os.Put((v & 0x3FF) | 0xDC00); + } + } + + + template + static void EncodeUnsafe(OutputStream& os, unsigned codepoint) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 2); + if (codepoint <= 0xFFFF) { + RAPIDJSON_ASSERT(codepoint < 0xD800 || codepoint > 0xDFFF); // Code point itself cannot be surrogate pair + PutUnsafe(os, static_cast(codepoint)); + } + else { + RAPIDJSON_ASSERT(codepoint <= 0x10FFFF); + unsigned v = codepoint - 0x10000; + PutUnsafe(os, static_cast((v >> 10) | 0xD800)); + PutUnsafe(os, (v & 0x3FF) | 0xDC00); + } + } + + template + static bool Decode(InputStream& is, unsigned* codepoint) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputStream::Ch) >= 2); + typename InputStream::Ch c = is.Take(); + if (c < 0xD800 || c > 0xDFFF) { + *codepoint = static_cast(c); + return true; + } + else if (c <= 0xDBFF) { + *codepoint = (static_cast(c) & 0x3FF) << 10; + c = is.Take(); + *codepoint |= (static_cast(c) & 0x3FF); + *codepoint += 0x10000; + return c >= 0xDC00 && c <= 0xDFFF; + } + return false; + } + + template + static bool Validate(InputStream& is, OutputStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputStream::Ch) >= 2); + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 2); + typename InputStream::Ch c; + os.Put(static_cast(c = is.Take())); + if (c < 0xD800 || c > 0xDFFF) + return true; + else if (c <= 0xDBFF) { + os.Put(c = is.Take()); + return c >= 0xDC00 && c <= 0xDFFF; + } + return false; + } +}; + +//! UTF-16 little endian encoding. +template +struct UTF16LE : UTF16 { + template + static CharType TakeBOM(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + CharType c = Take(is); + return static_cast(c) == 0xFEFFu ? Take(is) : c; + } + + template + static CharType Take(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + unsigned c = static_cast(is.Take()); + c |= static_cast(static_cast(is.Take())) << 8; + return static_cast(c); + } + + template + static void PutBOM(OutputByteStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast(0xFFu)); + os.Put(static_cast(0xFEu)); + } + + template + static void Put(OutputByteStream& os, CharType c) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast(static_cast(c) & 0xFFu)); + os.Put(static_cast((static_cast(c) >> 8) & 0xFFu)); + } +}; + +//! UTF-16 big endian encoding. +template +struct UTF16BE : UTF16 { + template + static CharType TakeBOM(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + CharType c = Take(is); + return static_cast(c) == 0xFEFFu ? Take(is) : c; + } + + template + static CharType Take(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + unsigned c = static_cast(static_cast(is.Take())) << 8; + c |= static_cast(is.Take()); + return static_cast(c); + } + + template + static void PutBOM(OutputByteStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast(0xFEu)); + os.Put(static_cast(0xFFu)); + } + + template + static void Put(OutputByteStream& os, CharType c) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast((static_cast(c) >> 8) & 0xFFu)); + os.Put(static_cast(static_cast(c) & 0xFFu)); + } +}; + +/////////////////////////////////////////////////////////////////////////////// +// UTF32 + +//! UTF-32 encoding. +/*! http://en.wikipedia.org/wiki/UTF-32 + \tparam CharType Type for storing 32-bit UTF-32 data. Default is unsigned. C++11 may use char32_t instead. + \note implements Encoding concept + + \note For in-memory access, no need to concern endianness. The code units and code points are represented by CPU's endianness. + For streaming, use UTF32LE and UTF32BE, which handle endianness. +*/ +template +struct UTF32 { + typedef CharType Ch; + RAPIDJSON_STATIC_ASSERT(sizeof(Ch) >= 4); + + enum { supportUnicode = 1 }; + + template + static void Encode(OutputStream& os, unsigned codepoint) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 4); + RAPIDJSON_ASSERT(codepoint <= 0x10FFFF); + os.Put(codepoint); + } + + template + static void EncodeUnsafe(OutputStream& os, unsigned codepoint) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 4); + RAPIDJSON_ASSERT(codepoint <= 0x10FFFF); + PutUnsafe(os, codepoint); + } + + template + static bool Decode(InputStream& is, unsigned* codepoint) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputStream::Ch) >= 4); + Ch c = is.Take(); + *codepoint = c; + return c <= 0x10FFFF; + } + + template + static bool Validate(InputStream& is, OutputStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputStream::Ch) >= 4); + Ch c; + os.Put(c = is.Take()); + return c <= 0x10FFFF; + } +}; + +//! UTF-32 little endian enocoding. +template +struct UTF32LE : UTF32 { + template + static CharType TakeBOM(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + CharType c = Take(is); + return static_cast(c) == 0x0000FEFFu ? Take(is) : c; + } + + template + static CharType Take(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + unsigned c = static_cast(is.Take()); + c |= static_cast(static_cast(is.Take())) << 8; + c |= static_cast(static_cast(is.Take())) << 16; + c |= static_cast(static_cast(is.Take())) << 24; + return static_cast(c); + } + + template + static void PutBOM(OutputByteStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast(0xFFu)); + os.Put(static_cast(0xFEu)); + os.Put(static_cast(0x00u)); + os.Put(static_cast(0x00u)); + } + + template + static void Put(OutputByteStream& os, CharType c) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast(c & 0xFFu)); + os.Put(static_cast((c >> 8) & 0xFFu)); + os.Put(static_cast((c >> 16) & 0xFFu)); + os.Put(static_cast((c >> 24) & 0xFFu)); + } +}; + +//! UTF-32 big endian encoding. +template +struct UTF32BE : UTF32 { + template + static CharType TakeBOM(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + CharType c = Take(is); + return static_cast(c) == 0x0000FEFFu ? Take(is) : c; + } + + template + static CharType Take(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + unsigned c = static_cast(static_cast(is.Take())) << 24; + c |= static_cast(static_cast(is.Take())) << 16; + c |= static_cast(static_cast(is.Take())) << 8; + c |= static_cast(static_cast(is.Take())); + return static_cast(c); + } + + template + static void PutBOM(OutputByteStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast(0x00u)); + os.Put(static_cast(0x00u)); + os.Put(static_cast(0xFEu)); + os.Put(static_cast(0xFFu)); + } + + template + static void Put(OutputByteStream& os, CharType c) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast((c >> 24) & 0xFFu)); + os.Put(static_cast((c >> 16) & 0xFFu)); + os.Put(static_cast((c >> 8) & 0xFFu)); + os.Put(static_cast(c & 0xFFu)); + } +}; + +/////////////////////////////////////////////////////////////////////////////// +// ASCII + +//! ASCII encoding. +/*! http://en.wikipedia.org/wiki/ASCII + \tparam CharType Code unit for storing 7-bit ASCII data. Default is char. + \note implements Encoding concept +*/ +template +struct ASCII { + typedef CharType Ch; + + enum { supportUnicode = 0 }; + + template + static void Encode(OutputStream& os, unsigned codepoint) { + RAPIDJSON_ASSERT(codepoint <= 0x7F); + os.Put(static_cast(codepoint & 0xFF)); + } + + template + static void EncodeUnsafe(OutputStream& os, unsigned codepoint) { + RAPIDJSON_ASSERT(codepoint <= 0x7F); + PutUnsafe(os, static_cast(codepoint & 0xFF)); + } + + template + static bool Decode(InputStream& is, unsigned* codepoint) { + uint8_t c = static_cast(is.Take()); + *codepoint = c; + return c <= 0X7F; + } + + template + static bool Validate(InputStream& is, OutputStream& os) { + uint8_t c = static_cast(is.Take()); + os.Put(static_cast(c)); + return c <= 0x7F; + } + + template + static CharType TakeBOM(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + uint8_t c = static_cast(Take(is)); + return static_cast(c); + } + + template + static Ch Take(InputByteStream& is) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1); + return static_cast(is.Take()); + } + + template + static void PutBOM(OutputByteStream& os) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + (void)os; + } + + template + static void Put(OutputByteStream& os, Ch c) { + RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1); + os.Put(static_cast(c)); + } +}; + +/////////////////////////////////////////////////////////////////////////////// +// AutoUTF + +//! Runtime-specified UTF encoding type of a stream. +enum UTFType { + kUTF8 = 0, //!< UTF-8. + kUTF16LE = 1, //!< UTF-16 little endian. + kUTF16BE = 2, //!< UTF-16 big endian. + kUTF32LE = 3, //!< UTF-32 little endian. + kUTF32BE = 4 //!< UTF-32 big endian. +}; + +//! Dynamically select encoding according to stream's runtime-specified UTF encoding type. +/*! \note This class can be used with AutoUTFInputtStream and AutoUTFOutputStream, which provides GetType(). +*/ +template +struct AutoUTF { + typedef CharType Ch; + + enum { supportUnicode = 1 }; + +#define RAPIDJSON_ENCODINGS_FUNC(x) UTF8::x, UTF16LE::x, UTF16BE::x, UTF32LE::x, UTF32BE::x + + template + RAPIDJSON_FORCEINLINE static void Encode(OutputStream& os, unsigned codepoint) { + typedef void (*EncodeFunc)(OutputStream&, unsigned); + static const EncodeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Encode) }; + (*f[os.GetType()])(os, codepoint); + } + + template + RAPIDJSON_FORCEINLINE static void EncodeUnsafe(OutputStream& os, unsigned codepoint) { + typedef void (*EncodeFunc)(OutputStream&, unsigned); + static const EncodeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(EncodeUnsafe) }; + (*f[os.GetType()])(os, codepoint); + } + + template + RAPIDJSON_FORCEINLINE static bool Decode(InputStream& is, unsigned* codepoint) { + typedef bool (*DecodeFunc)(InputStream&, unsigned*); + static const DecodeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Decode) }; + return (*f[is.GetType()])(is, codepoint); + } + + template + RAPIDJSON_FORCEINLINE static bool Validate(InputStream& is, OutputStream& os) { + typedef bool (*ValidateFunc)(InputStream&, OutputStream&); + static const ValidateFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Validate) }; + return (*f[is.GetType()])(is, os); + } + +#undef RAPIDJSON_ENCODINGS_FUNC +}; + +/////////////////////////////////////////////////////////////////////////////// +// Transcoder + +//! Encoding conversion. +template +struct Transcoder { + //! Take one Unicode codepoint from source encoding, convert it to target encoding and put it to the output stream. + template + RAPIDJSON_FORCEINLINE static bool Transcode(InputStream& is, OutputStream& os) { + unsigned codepoint; + if (!SourceEncoding::Decode(is, &codepoint)) + return false; + TargetEncoding::Encode(os, codepoint); + return true; + } + + template + RAPIDJSON_FORCEINLINE static bool TranscodeUnsafe(InputStream& is, OutputStream& os) { + unsigned codepoint; + if (!SourceEncoding::Decode(is, &codepoint)) + return false; + TargetEncoding::EncodeUnsafe(os, codepoint); + return true; + } + + //! Validate one Unicode codepoint from an encoded stream. + template + RAPIDJSON_FORCEINLINE static bool Validate(InputStream& is, OutputStream& os) { + return Transcode(is, os); // Since source/target encoding is different, must transcode. + } +}; + +// Forward declaration. +template +inline void PutUnsafe(Stream& stream, typename Stream::Ch c); + +//! Specialization of Transcoder with same source and target encoding. +template +struct Transcoder { + template + RAPIDJSON_FORCEINLINE static bool Transcode(InputStream& is, OutputStream& os) { + os.Put(is.Take()); // Just copy one code unit. This semantic is different from primary template class. + return true; + } + + template + RAPIDJSON_FORCEINLINE static bool TranscodeUnsafe(InputStream& is, OutputStream& os) { + PutUnsafe(os, is.Take()); // Just copy one code unit. This semantic is different from primary template class. + return true; + } + + template + RAPIDJSON_FORCEINLINE static bool Validate(InputStream& is, OutputStream& os) { + return Encoding::Validate(is, os); // source/target encoding are the same + } +}; + +RAPIDJSON_NAMESPACE_END + +#if defined(__GNUC__) || defined(_MSC_VER) +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_ENCODINGS_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/error/en.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/error/en.h new file mode 100644 index 0000000..2db838b --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/error/en.h @@ -0,0 +1,74 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_ERROR_EN_H_ +#define RAPIDJSON_ERROR_EN_H_ + +#include "error.h" + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(switch-enum) +RAPIDJSON_DIAG_OFF(covered-switch-default) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! Maps error code of parsing into error message. +/*! + \ingroup RAPIDJSON_ERRORS + \param parseErrorCode Error code obtained in parsing. + \return the error message. + \note User can make a copy of this function for localization. + Using switch-case is safer for future modification of error codes. +*/ +inline const RAPIDJSON_ERROR_CHARTYPE* GetParseError_En(ParseErrorCode parseErrorCode) { + switch (parseErrorCode) { + case kParseErrorNone: return RAPIDJSON_ERROR_STRING("No error."); + + case kParseErrorDocumentEmpty: return RAPIDJSON_ERROR_STRING("The document is empty."); + case kParseErrorDocumentRootNotSingular: return RAPIDJSON_ERROR_STRING("The document root must not be followed by other values."); + + case kParseErrorValueInvalid: return RAPIDJSON_ERROR_STRING("Invalid value."); + + case kParseErrorObjectMissName: return RAPIDJSON_ERROR_STRING("Missing a name for object member."); + case kParseErrorObjectMissColon: return RAPIDJSON_ERROR_STRING("Missing a colon after a name of object member."); + case kParseErrorObjectMissCommaOrCurlyBracket: return RAPIDJSON_ERROR_STRING("Missing a comma or '}' after an object member."); + + case kParseErrorArrayMissCommaOrSquareBracket: return RAPIDJSON_ERROR_STRING("Missing a comma or ']' after an array element."); + + case kParseErrorStringUnicodeEscapeInvalidHex: return RAPIDJSON_ERROR_STRING("Incorrect hex digit after \\u escape in string."); + case kParseErrorStringUnicodeSurrogateInvalid: return RAPIDJSON_ERROR_STRING("The surrogate pair in string is invalid."); + case kParseErrorStringEscapeInvalid: return RAPIDJSON_ERROR_STRING("Invalid escape character in string."); + case kParseErrorStringMissQuotationMark: return RAPIDJSON_ERROR_STRING("Missing a closing quotation mark in string."); + case kParseErrorStringInvalidEncoding: return RAPIDJSON_ERROR_STRING("Invalid encoding in string."); + + case kParseErrorNumberTooBig: return RAPIDJSON_ERROR_STRING("Number too big to be stored in double."); + case kParseErrorNumberMissFraction: return RAPIDJSON_ERROR_STRING("Miss fraction part in number."); + case kParseErrorNumberMissExponent: return RAPIDJSON_ERROR_STRING("Miss exponent in number."); + + case kParseErrorTermination: return RAPIDJSON_ERROR_STRING("Terminate parsing due to Handler error."); + case kParseErrorUnspecificSyntaxError: return RAPIDJSON_ERROR_STRING("Unspecific syntax error."); + + default: return RAPIDJSON_ERROR_STRING("Unknown error."); + } +} + +RAPIDJSON_NAMESPACE_END + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_ERROR_EN_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/error/error.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/error/error.h new file mode 100644 index 0000000..95cb31a --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/error/error.h @@ -0,0 +1,155 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_ERROR_ERROR_H_ +#define RAPIDJSON_ERROR_ERROR_H_ + +#include "../rapidjson.h" + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +#endif + +/*! \file error.h */ + +/*! \defgroup RAPIDJSON_ERRORS RapidJSON error handling */ + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_ERROR_CHARTYPE + +//! Character type of error messages. +/*! \ingroup RAPIDJSON_ERRORS + The default character type is \c char. + On Windows, user can define this macro as \c TCHAR for supporting both + unicode/non-unicode settings. +*/ +#ifndef RAPIDJSON_ERROR_CHARTYPE +#define RAPIDJSON_ERROR_CHARTYPE char +#endif + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_ERROR_STRING + +//! Macro for converting string literial to \ref RAPIDJSON_ERROR_CHARTYPE[]. +/*! \ingroup RAPIDJSON_ERRORS + By default this conversion macro does nothing. + On Windows, user can define this macro as \c _T(x) for supporting both + unicode/non-unicode settings. +*/ +#ifndef RAPIDJSON_ERROR_STRING +#define RAPIDJSON_ERROR_STRING(x) x +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +/////////////////////////////////////////////////////////////////////////////// +// ParseErrorCode + +//! Error code of parsing. +/*! \ingroup RAPIDJSON_ERRORS + \see GenericReader::Parse, GenericReader::GetParseErrorCode +*/ +enum ParseErrorCode { + kParseErrorNone = 0, //!< No error. + + kParseErrorDocumentEmpty, //!< The document is empty. + kParseErrorDocumentRootNotSingular, //!< The document root must not follow by other values. + + kParseErrorValueInvalid, //!< Invalid value. + + kParseErrorObjectMissName, //!< Missing a name for object member. + kParseErrorObjectMissColon, //!< Missing a colon after a name of object member. + kParseErrorObjectMissCommaOrCurlyBracket, //!< Missing a comma or '}' after an object member. + + kParseErrorArrayMissCommaOrSquareBracket, //!< Missing a comma or ']' after an array element. + + kParseErrorStringUnicodeEscapeInvalidHex, //!< Incorrect hex digit after \\u escape in string. + kParseErrorStringUnicodeSurrogateInvalid, //!< The surrogate pair in string is invalid. + kParseErrorStringEscapeInvalid, //!< Invalid escape character in string. + kParseErrorStringMissQuotationMark, //!< Missing a closing quotation mark in string. + kParseErrorStringInvalidEncoding, //!< Invalid encoding in string. + + kParseErrorNumberTooBig, //!< Number too big to be stored in double. + kParseErrorNumberMissFraction, //!< Miss fraction part in number. + kParseErrorNumberMissExponent, //!< Miss exponent in number. + + kParseErrorTermination, //!< Parsing was terminated. + kParseErrorUnspecificSyntaxError //!< Unspecific syntax error. +}; + +//! Result of parsing (wraps ParseErrorCode) +/*! + \ingroup RAPIDJSON_ERRORS + \code + Document doc; + ParseResult ok = doc.Parse("[42]"); + if (!ok) { + fprintf(stderr, "JSON parse error: %s (%u)", + GetParseError_En(ok.Code()), ok.Offset()); + exit(EXIT_FAILURE); + } + \endcode + \see GenericReader::Parse, GenericDocument::Parse +*/ +struct ParseResult { +public: + //! Default constructor, no error. + ParseResult() : code_(kParseErrorNone), offset_(0) {} + //! Constructor to set an error. + ParseResult(ParseErrorCode code, size_t offset) : code_(code), offset_(offset) {} + + //! Get the error code. + ParseErrorCode Code() const { return code_; } + //! Get the error offset, if \ref IsError(), 0 otherwise. + size_t Offset() const { return offset_; } + + //! Conversion to \c bool, returns \c true, iff !\ref IsError(). + operator bool() const { return !IsError(); } + //! Whether the result is an error. + bool IsError() const { return code_ != kParseErrorNone; } + + bool operator==(const ParseResult& that) const { return code_ == that.code_; } + bool operator==(ParseErrorCode code) const { return code_ == code; } + friend bool operator==(ParseErrorCode code, const ParseResult & err) { return code == err.code_; } + + //! Reset error code. + void Clear() { Set(kParseErrorNone); } + //! Update error code and offset. + void Set(ParseErrorCode code, size_t offset = 0) { code_ = code; offset_ = offset; } + +private: + ParseErrorCode code_; + size_t offset_; +}; + +//! Function pointer type of GetParseError(). +/*! \ingroup RAPIDJSON_ERRORS + + This is the prototype for \c GetParseError_X(), where \c X is a locale. + User can dynamically change locale in runtime, e.g.: +\code + GetParseErrorFunc GetParseError = GetParseError_En; // or whatever + const RAPIDJSON_ERROR_CHARTYPE* s = GetParseError(document.GetParseErrorCode()); +\endcode +*/ +typedef const RAPIDJSON_ERROR_CHARTYPE* (*GetParseErrorFunc)(ParseErrorCode); + +RAPIDJSON_NAMESPACE_END + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_ERROR_ERROR_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/filereadstream.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/filereadstream.h new file mode 100644 index 0000000..b56ea13 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/filereadstream.h @@ -0,0 +1,99 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_FILEREADSTREAM_H_ +#define RAPIDJSON_FILEREADSTREAM_H_ + +#include "stream.h" +#include + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +RAPIDJSON_DIAG_OFF(unreachable-code) +RAPIDJSON_DIAG_OFF(missing-noreturn) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! File byte stream for input using fread(). +/*! + \note implements Stream concept +*/ +class FileReadStream { +public: + typedef char Ch; //!< Character type (byte). + + //! Constructor. + /*! + \param fp File pointer opened for read. + \param buffer user-supplied buffer. + \param bufferSize size of buffer in bytes. Must >=4 bytes. + */ + FileReadStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferSize_(bufferSize), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) { + RAPIDJSON_ASSERT(fp_ != 0); + RAPIDJSON_ASSERT(bufferSize >= 4); + Read(); + } + + Ch Peek() const { return *current_; } + Ch Take() { Ch c = *current_; Read(); return c; } + size_t Tell() const { return count_ + static_cast(current_ - buffer_); } + + // Not implemented + void Put(Ch) { RAPIDJSON_ASSERT(false); } + void Flush() { RAPIDJSON_ASSERT(false); } + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + + // For encoding detection only. + const Ch* Peek4() const { + return (current_ + 4 <= bufferLast_) ? current_ : 0; + } + +private: + void Read() { + if (current_ < bufferLast_) + ++current_; + else if (!eof_) { + count_ += readCount_; + readCount_ = fread(buffer_, 1, bufferSize_, fp_); + bufferLast_ = buffer_ + readCount_ - 1; + current_ = buffer_; + + if (readCount_ < bufferSize_) { + buffer_[readCount_] = '\0'; + ++bufferLast_; + eof_ = true; + } + } + } + + std::FILE* fp_; + Ch *buffer_; + size_t bufferSize_; + Ch *bufferLast_; + Ch *current_; + size_t readCount_; + size_t count_; //!< Number of characters read + bool eof_; +}; + +RAPIDJSON_NAMESPACE_END + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_FILESTREAM_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/filewritestream.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/filewritestream.h new file mode 100644 index 0000000..6378dd6 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/filewritestream.h @@ -0,0 +1,104 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_FILEWRITESTREAM_H_ +#define RAPIDJSON_FILEWRITESTREAM_H_ + +#include "stream.h" +#include + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(unreachable-code) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! Wrapper of C file stream for input using fread(). +/*! + \note implements Stream concept +*/ +class FileWriteStream { +public: + typedef char Ch; //!< Character type. Only support char. + + FileWriteStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferEnd_(buffer + bufferSize), current_(buffer_) { + RAPIDJSON_ASSERT(fp_ != 0); + } + + void Put(char c) { + if (current_ >= bufferEnd_) + Flush(); + + *current_++ = c; + } + + void PutN(char c, size_t n) { + size_t avail = static_cast(bufferEnd_ - current_); + while (n > avail) { + std::memset(current_, c, avail); + current_ += avail; + Flush(); + n -= avail; + avail = static_cast(bufferEnd_ - current_); + } + + if (n > 0) { + std::memset(current_, c, n); + current_ += n; + } + } + + void Flush() { + if (current_ != buffer_) { + size_t result = fwrite(buffer_, 1, static_cast(current_ - buffer_), fp_); + if (result < static_cast(current_ - buffer_)) { + // failure deliberately ignored at this time + // added to avoid warn_unused_result build errors + } + current_ = buffer_; + } + } + + // Not implemented + char Peek() const { RAPIDJSON_ASSERT(false); return 0; } + char Take() { RAPIDJSON_ASSERT(false); return 0; } + size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; } + char* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + size_t PutEnd(char*) { RAPIDJSON_ASSERT(false); return 0; } + +private: + // Prohibit copy constructor & assignment operator. + FileWriteStream(const FileWriteStream&); + FileWriteStream& operator=(const FileWriteStream&); + + std::FILE* fp_; + char *buffer_; + char *bufferEnd_; + char *current_; +}; + +//! Implement specialized version of PutN() with memset() for better performance. +template<> +inline void PutN(FileWriteStream& stream, char c, size_t n) { + stream.PutN(c, n); +} + +RAPIDJSON_NAMESPACE_END + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_FILESTREAM_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/fwd.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/fwd.h new file mode 100644 index 0000000..e8104e8 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/fwd.h @@ -0,0 +1,151 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_FWD_H_ +#define RAPIDJSON_FWD_H_ + +#include "rapidjson.h" + +RAPIDJSON_NAMESPACE_BEGIN + +// encodings.h + +template struct UTF8; +template struct UTF16; +template struct UTF16BE; +template struct UTF16LE; +template struct UTF32; +template struct UTF32BE; +template struct UTF32LE; +template struct ASCII; +template struct AutoUTF; + +template +struct Transcoder; + +// allocators.h + +class CrtAllocator; + +template +class MemoryPoolAllocator; + +// stream.h + +template +struct GenericStringStream; + +typedef GenericStringStream > StringStream; + +template +struct GenericInsituStringStream; + +typedef GenericInsituStringStream > InsituStringStream; + +// stringbuffer.h + +template +class GenericStringBuffer; + +typedef GenericStringBuffer, CrtAllocator> StringBuffer; + +// filereadstream.h + +class FileReadStream; + +// filewritestream.h + +class FileWriteStream; + +// memorybuffer.h + +template +struct GenericMemoryBuffer; + +typedef GenericMemoryBuffer MemoryBuffer; + +// memorystream.h + +struct MemoryStream; + +// reader.h + +template +struct BaseReaderHandler; + +template +class GenericReader; + +typedef GenericReader, UTF8, CrtAllocator> Reader; + +// writer.h + +template +class Writer; + +// prettywriter.h + +template +class PrettyWriter; + +// document.h + +template +struct GenericMember; + +template +class GenericMemberIterator; + +template +struct GenericStringRef; + +template +class GenericValue; + +typedef GenericValue, MemoryPoolAllocator > Value; + +template +class GenericDocument; + +typedef GenericDocument, MemoryPoolAllocator, CrtAllocator> Document; + +// pointer.h + +template +class GenericPointer; + +typedef GenericPointer Pointer; + +// schema.h + +template +class IGenericRemoteSchemaDocumentProvider; + +template +class GenericSchemaDocument; + +typedef GenericSchemaDocument SchemaDocument; +typedef IGenericRemoteSchemaDocumentProvider IRemoteSchemaDocumentProvider; + +template < + typename SchemaDocumentType, + typename OutputHandler, + typename StateAllocator> +class GenericSchemaValidator; + +typedef GenericSchemaValidator, void>, CrtAllocator> SchemaValidator; + +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_RAPIDJSONFWD_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/biginteger.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/biginteger.h new file mode 100644 index 0000000..9d3e88c --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/biginteger.h @@ -0,0 +1,290 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_BIGINTEGER_H_ +#define RAPIDJSON_BIGINTEGER_H_ + +#include "../rapidjson.h" + +#if defined(_MSC_VER) && defined(_M_AMD64) +#include // for _umul128 +#pragma intrinsic(_umul128) +#endif + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +class BigInteger { +public: + typedef uint64_t Type; + + BigInteger(const BigInteger& rhs) : count_(rhs.count_) { + std::memcpy(digits_, rhs.digits_, count_ * sizeof(Type)); + } + + explicit BigInteger(uint64_t u) : count_(1) { + digits_[0] = u; + } + + BigInteger(const char* decimals, size_t length) : count_(1) { + RAPIDJSON_ASSERT(length > 0); + digits_[0] = 0; + size_t i = 0; + const size_t kMaxDigitPerIteration = 19; // 2^64 = 18446744073709551616 > 10^19 + while (length >= kMaxDigitPerIteration) { + AppendDecimal64(decimals + i, decimals + i + kMaxDigitPerIteration); + length -= kMaxDigitPerIteration; + i += kMaxDigitPerIteration; + } + + if (length > 0) + AppendDecimal64(decimals + i, decimals + i + length); + } + + BigInteger& operator=(const BigInteger &rhs) + { + if (this != &rhs) { + count_ = rhs.count_; + std::memcpy(digits_, rhs.digits_, count_ * sizeof(Type)); + } + return *this; + } + + BigInteger& operator=(uint64_t u) { + digits_[0] = u; + count_ = 1; + return *this; + } + + BigInteger& operator+=(uint64_t u) { + Type backup = digits_[0]; + digits_[0] += u; + for (size_t i = 0; i < count_ - 1; i++) { + if (digits_[i] >= backup) + return *this; // no carry + backup = digits_[i + 1]; + digits_[i + 1] += 1; + } + + // Last carry + if (digits_[count_ - 1] < backup) + PushBack(1); + + return *this; + } + + BigInteger& operator*=(uint64_t u) { + if (u == 0) return *this = 0; + if (u == 1) return *this; + if (*this == 1) return *this = u; + + uint64_t k = 0; + for (size_t i = 0; i < count_; i++) { + uint64_t hi; + digits_[i] = MulAdd64(digits_[i], u, k, &hi); + k = hi; + } + + if (k > 0) + PushBack(k); + + return *this; + } + + BigInteger& operator*=(uint32_t u) { + if (u == 0) return *this = 0; + if (u == 1) return *this; + if (*this == 1) return *this = u; + + uint64_t k = 0; + for (size_t i = 0; i < count_; i++) { + const uint64_t c = digits_[i] >> 32; + const uint64_t d = digits_[i] & 0xFFFFFFFF; + const uint64_t uc = u * c; + const uint64_t ud = u * d; + const uint64_t p0 = ud + k; + const uint64_t p1 = uc + (p0 >> 32); + digits_[i] = (p0 & 0xFFFFFFFF) | (p1 << 32); + k = p1 >> 32; + } + + if (k > 0) + PushBack(k); + + return *this; + } + + BigInteger& operator<<=(size_t shift) { + if (IsZero() || shift == 0) return *this; + + size_t offset = shift / kTypeBit; + size_t interShift = shift % kTypeBit; + RAPIDJSON_ASSERT(count_ + offset <= kCapacity); + + if (interShift == 0) { + std::memmove(&digits_[count_ - 1 + offset], &digits_[count_ - 1], count_ * sizeof(Type)); + count_ += offset; + } + else { + digits_[count_] = 0; + for (size_t i = count_; i > 0; i--) + digits_[i + offset] = (digits_[i] << interShift) | (digits_[i - 1] >> (kTypeBit - interShift)); + digits_[offset] = digits_[0] << interShift; + count_ += offset; + if (digits_[count_]) + count_++; + } + + std::memset(digits_, 0, offset * sizeof(Type)); + + return *this; + } + + bool operator==(const BigInteger& rhs) const { + return count_ == rhs.count_ && std::memcmp(digits_, rhs.digits_, count_ * sizeof(Type)) == 0; + } + + bool operator==(const Type rhs) const { + return count_ == 1 && digits_[0] == rhs; + } + + BigInteger& MultiplyPow5(unsigned exp) { + static const uint32_t kPow5[12] = { + 5, + 5 * 5, + 5 * 5 * 5, + 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5, + 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 + }; + if (exp == 0) return *this; + for (; exp >= 27; exp -= 27) *this *= RAPIDJSON_UINT64_C2(0X6765C793, 0XFA10079D); // 5^27 + for (; exp >= 13; exp -= 13) *this *= static_cast(1220703125u); // 5^13 + if (exp > 0) *this *= kPow5[exp - 1]; + return *this; + } + + // Compute absolute difference of this and rhs. + // Assume this != rhs + bool Difference(const BigInteger& rhs, BigInteger* out) const { + int cmp = Compare(rhs); + RAPIDJSON_ASSERT(cmp != 0); + const BigInteger *a, *b; // Makes a > b + bool ret; + if (cmp < 0) { a = &rhs; b = this; ret = true; } + else { a = this; b = &rhs; ret = false; } + + Type borrow = 0; + for (size_t i = 0; i < a->count_; i++) { + Type d = a->digits_[i] - borrow; + if (i < b->count_) + d -= b->digits_[i]; + borrow = (d > a->digits_[i]) ? 1 : 0; + out->digits_[i] = d; + if (d != 0) + out->count_ = i + 1; + } + + return ret; + } + + int Compare(const BigInteger& rhs) const { + if (count_ != rhs.count_) + return count_ < rhs.count_ ? -1 : 1; + + for (size_t i = count_; i-- > 0;) + if (digits_[i] != rhs.digits_[i]) + return digits_[i] < rhs.digits_[i] ? -1 : 1; + + return 0; + } + + size_t GetCount() const { return count_; } + Type GetDigit(size_t index) const { RAPIDJSON_ASSERT(index < count_); return digits_[index]; } + bool IsZero() const { return count_ == 1 && digits_[0] == 0; } + +private: + void AppendDecimal64(const char* begin, const char* end) { + uint64_t u = ParseUint64(begin, end); + if (IsZero()) + *this = u; + else { + unsigned exp = static_cast(end - begin); + (MultiplyPow5(exp) <<= exp) += u; // *this = *this * 10^exp + u + } + } + + void PushBack(Type digit) { + RAPIDJSON_ASSERT(count_ < kCapacity); + digits_[count_++] = digit; + } + + static uint64_t ParseUint64(const char* begin, const char* end) { + uint64_t r = 0; + for (const char* p = begin; p != end; ++p) { + RAPIDJSON_ASSERT(*p >= '0' && *p <= '9'); + r = r * 10u + static_cast(*p - '0'); + } + return r; + } + + // Assume a * b + k < 2^128 + static uint64_t MulAdd64(uint64_t a, uint64_t b, uint64_t k, uint64_t* outHigh) { +#if defined(_MSC_VER) && defined(_M_AMD64) + uint64_t low = _umul128(a, b, outHigh) + k; + if (low < k) + (*outHigh)++; + return low; +#elif (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__x86_64__) + __extension__ typedef unsigned __int128 uint128; + uint128 p = static_cast(a) * static_cast(b); + p += k; + *outHigh = static_cast(p >> 64); + return static_cast(p); +#else + const uint64_t a0 = a & 0xFFFFFFFF, a1 = a >> 32, b0 = b & 0xFFFFFFFF, b1 = b >> 32; + uint64_t x0 = a0 * b0, x1 = a0 * b1, x2 = a1 * b0, x3 = a1 * b1; + x1 += (x0 >> 32); // can't give carry + x1 += x2; + if (x1 < x2) + x3 += (static_cast(1) << 32); + uint64_t lo = (x1 << 32) + (x0 & 0xFFFFFFFF); + uint64_t hi = x3 + (x1 >> 32); + + lo += k; + if (lo < k) + hi++; + *outHigh = hi; + return lo; +#endif + } + + static const size_t kBitCount = 3328; // 64bit * 54 > 10^1000 + static const size_t kCapacity = kBitCount / sizeof(Type); + static const size_t kTypeBit = sizeof(Type) * 8; + + Type digits_[kCapacity]; + size_t count_; +}; + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_BIGINTEGER_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/diyfp.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/diyfp.h new file mode 100644 index 0000000..c9fefdc --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/diyfp.h @@ -0,0 +1,258 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +// This is a C++ header-only implementation of Grisu2 algorithm from the publication: +// Loitsch, Florian. "Printing floating-point numbers quickly and accurately with +// integers." ACM Sigplan Notices 45.6 (2010): 233-243. + +#ifndef RAPIDJSON_DIYFP_H_ +#define RAPIDJSON_DIYFP_H_ + +#include "../rapidjson.h" + +#if defined(_MSC_VER) && defined(_M_AMD64) +#include +#pragma intrinsic(_BitScanReverse64) +#pragma intrinsic(_umul128) +#endif + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +#ifdef __GNUC__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +#endif + +struct DiyFp { + DiyFp() : f(), e() {} + + DiyFp(uint64_t fp, int exp) : f(fp), e(exp) {} + + explicit DiyFp(double d) { + union { + double d; + uint64_t u64; + } u = { d }; + + int biased_e = static_cast((u.u64 & kDpExponentMask) >> kDpSignificandSize); + uint64_t significand = (u.u64 & kDpSignificandMask); + if (biased_e != 0) { + f = significand + kDpHiddenBit; + e = biased_e - kDpExponentBias; + } + else { + f = significand; + e = kDpMinExponent + 1; + } + } + + DiyFp operator-(const DiyFp& rhs) const { + return DiyFp(f - rhs.f, e); + } + + DiyFp operator*(const DiyFp& rhs) const { +#if defined(_MSC_VER) && defined(_M_AMD64) + uint64_t h; + uint64_t l = _umul128(f, rhs.f, &h); + if (l & (uint64_t(1) << 63)) // rounding + h++; + return DiyFp(h, e + rhs.e + 64); +#elif (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__x86_64__) + __extension__ typedef unsigned __int128 uint128; + uint128 p = static_cast(f) * static_cast(rhs.f); + uint64_t h = static_cast(p >> 64); + uint64_t l = static_cast(p); + if (l & (uint64_t(1) << 63)) // rounding + h++; + return DiyFp(h, e + rhs.e + 64); +#else + const uint64_t M32 = 0xFFFFFFFF; + const uint64_t a = f >> 32; + const uint64_t b = f & M32; + const uint64_t c = rhs.f >> 32; + const uint64_t d = rhs.f & M32; + const uint64_t ac = a * c; + const uint64_t bc = b * c; + const uint64_t ad = a * d; + const uint64_t bd = b * d; + uint64_t tmp = (bd >> 32) + (ad & M32) + (bc & M32); + tmp += 1U << 31; /// mult_round + return DiyFp(ac + (ad >> 32) + (bc >> 32) + (tmp >> 32), e + rhs.e + 64); +#endif + } + + DiyFp Normalize() const { +#if defined(_MSC_VER) && defined(_M_AMD64) + unsigned long index; + _BitScanReverse64(&index, f); + return DiyFp(f << (63 - index), e - (63 - index)); +#elif defined(__GNUC__) && __GNUC__ >= 4 + int s = __builtin_clzll(f); + return DiyFp(f << s, e - s); +#else + DiyFp res = *this; + while (!(res.f & (static_cast(1) << 63))) { + res.f <<= 1; + res.e--; + } + return res; +#endif + } + + DiyFp NormalizeBoundary() const { + DiyFp res = *this; + while (!(res.f & (kDpHiddenBit << 1))) { + res.f <<= 1; + res.e--; + } + res.f <<= (kDiySignificandSize - kDpSignificandSize - 2); + res.e = res.e - (kDiySignificandSize - kDpSignificandSize - 2); + return res; + } + + void NormalizedBoundaries(DiyFp* minus, DiyFp* plus) const { + DiyFp pl = DiyFp((f << 1) + 1, e - 1).NormalizeBoundary(); + DiyFp mi = (f == kDpHiddenBit) ? DiyFp((f << 2) - 1, e - 2) : DiyFp((f << 1) - 1, e - 1); + mi.f <<= mi.e - pl.e; + mi.e = pl.e; + *plus = pl; + *minus = mi; + } + + double ToDouble() const { + union { + double d; + uint64_t u64; + }u; + const uint64_t be = (e == kDpDenormalExponent && (f & kDpHiddenBit) == 0) ? 0 : + static_cast(e + kDpExponentBias); + u.u64 = (f & kDpSignificandMask) | (be << kDpSignificandSize); + return u.d; + } + + static const int kDiySignificandSize = 64; + static const int kDpSignificandSize = 52; + static const int kDpExponentBias = 0x3FF + kDpSignificandSize; + static const int kDpMaxExponent = 0x7FF - kDpExponentBias; + static const int kDpMinExponent = -kDpExponentBias; + static const int kDpDenormalExponent = -kDpExponentBias + 1; + static const uint64_t kDpExponentMask = RAPIDJSON_UINT64_C2(0x7FF00000, 0x00000000); + static const uint64_t kDpSignificandMask = RAPIDJSON_UINT64_C2(0x000FFFFF, 0xFFFFFFFF); + static const uint64_t kDpHiddenBit = RAPIDJSON_UINT64_C2(0x00100000, 0x00000000); + + uint64_t f; + int e; +}; + +inline DiyFp GetCachedPowerByIndex(size_t index) { + // 10^-348, 10^-340, ..., 10^340 + static const uint64_t kCachedPowers_F[] = { + RAPIDJSON_UINT64_C2(0xfa8fd5a0, 0x081c0288), RAPIDJSON_UINT64_C2(0xbaaee17f, 0xa23ebf76), + RAPIDJSON_UINT64_C2(0x8b16fb20, 0x3055ac76), RAPIDJSON_UINT64_C2(0xcf42894a, 0x5dce35ea), + RAPIDJSON_UINT64_C2(0x9a6bb0aa, 0x55653b2d), RAPIDJSON_UINT64_C2(0xe61acf03, 0x3d1a45df), + RAPIDJSON_UINT64_C2(0xab70fe17, 0xc79ac6ca), RAPIDJSON_UINT64_C2(0xff77b1fc, 0xbebcdc4f), + RAPIDJSON_UINT64_C2(0xbe5691ef, 0x416bd60c), RAPIDJSON_UINT64_C2(0x8dd01fad, 0x907ffc3c), + RAPIDJSON_UINT64_C2(0xd3515c28, 0x31559a83), RAPIDJSON_UINT64_C2(0x9d71ac8f, 0xada6c9b5), + RAPIDJSON_UINT64_C2(0xea9c2277, 0x23ee8bcb), RAPIDJSON_UINT64_C2(0xaecc4991, 0x4078536d), + RAPIDJSON_UINT64_C2(0x823c1279, 0x5db6ce57), RAPIDJSON_UINT64_C2(0xc2109436, 0x4dfb5637), + RAPIDJSON_UINT64_C2(0x9096ea6f, 0x3848984f), RAPIDJSON_UINT64_C2(0xd77485cb, 0x25823ac7), + RAPIDJSON_UINT64_C2(0xa086cfcd, 0x97bf97f4), RAPIDJSON_UINT64_C2(0xef340a98, 0x172aace5), + RAPIDJSON_UINT64_C2(0xb23867fb, 0x2a35b28e), RAPIDJSON_UINT64_C2(0x84c8d4df, 0xd2c63f3b), + RAPIDJSON_UINT64_C2(0xc5dd4427, 0x1ad3cdba), RAPIDJSON_UINT64_C2(0x936b9fce, 0xbb25c996), + RAPIDJSON_UINT64_C2(0xdbac6c24, 0x7d62a584), RAPIDJSON_UINT64_C2(0xa3ab6658, 0x0d5fdaf6), + RAPIDJSON_UINT64_C2(0xf3e2f893, 0xdec3f126), RAPIDJSON_UINT64_C2(0xb5b5ada8, 0xaaff80b8), + RAPIDJSON_UINT64_C2(0x87625f05, 0x6c7c4a8b), RAPIDJSON_UINT64_C2(0xc9bcff60, 0x34c13053), + RAPIDJSON_UINT64_C2(0x964e858c, 0x91ba2655), RAPIDJSON_UINT64_C2(0xdff97724, 0x70297ebd), + RAPIDJSON_UINT64_C2(0xa6dfbd9f, 0xb8e5b88f), RAPIDJSON_UINT64_C2(0xf8a95fcf, 0x88747d94), + RAPIDJSON_UINT64_C2(0xb9447093, 0x8fa89bcf), RAPIDJSON_UINT64_C2(0x8a08f0f8, 0xbf0f156b), + RAPIDJSON_UINT64_C2(0xcdb02555, 0x653131b6), RAPIDJSON_UINT64_C2(0x993fe2c6, 0xd07b7fac), + RAPIDJSON_UINT64_C2(0xe45c10c4, 0x2a2b3b06), RAPIDJSON_UINT64_C2(0xaa242499, 0x697392d3), + RAPIDJSON_UINT64_C2(0xfd87b5f2, 0x8300ca0e), RAPIDJSON_UINT64_C2(0xbce50864, 0x92111aeb), + RAPIDJSON_UINT64_C2(0x8cbccc09, 0x6f5088cc), RAPIDJSON_UINT64_C2(0xd1b71758, 0xe219652c), + RAPIDJSON_UINT64_C2(0x9c400000, 0x00000000), RAPIDJSON_UINT64_C2(0xe8d4a510, 0x00000000), + RAPIDJSON_UINT64_C2(0xad78ebc5, 0xac620000), RAPIDJSON_UINT64_C2(0x813f3978, 0xf8940984), + RAPIDJSON_UINT64_C2(0xc097ce7b, 0xc90715b3), RAPIDJSON_UINT64_C2(0x8f7e32ce, 0x7bea5c70), + RAPIDJSON_UINT64_C2(0xd5d238a4, 0xabe98068), RAPIDJSON_UINT64_C2(0x9f4f2726, 0x179a2245), + RAPIDJSON_UINT64_C2(0xed63a231, 0xd4c4fb27), RAPIDJSON_UINT64_C2(0xb0de6538, 0x8cc8ada8), + RAPIDJSON_UINT64_C2(0x83c7088e, 0x1aab65db), RAPIDJSON_UINT64_C2(0xc45d1df9, 0x42711d9a), + RAPIDJSON_UINT64_C2(0x924d692c, 0xa61be758), RAPIDJSON_UINT64_C2(0xda01ee64, 0x1a708dea), + RAPIDJSON_UINT64_C2(0xa26da399, 0x9aef774a), RAPIDJSON_UINT64_C2(0xf209787b, 0xb47d6b85), + RAPIDJSON_UINT64_C2(0xb454e4a1, 0x79dd1877), RAPIDJSON_UINT64_C2(0x865b8692, 0x5b9bc5c2), + RAPIDJSON_UINT64_C2(0xc83553c5, 0xc8965d3d), RAPIDJSON_UINT64_C2(0x952ab45c, 0xfa97a0b3), + RAPIDJSON_UINT64_C2(0xde469fbd, 0x99a05fe3), RAPIDJSON_UINT64_C2(0xa59bc234, 0xdb398c25), + RAPIDJSON_UINT64_C2(0xf6c69a72, 0xa3989f5c), RAPIDJSON_UINT64_C2(0xb7dcbf53, 0x54e9bece), + RAPIDJSON_UINT64_C2(0x88fcf317, 0xf22241e2), RAPIDJSON_UINT64_C2(0xcc20ce9b, 0xd35c78a5), + RAPIDJSON_UINT64_C2(0x98165af3, 0x7b2153df), RAPIDJSON_UINT64_C2(0xe2a0b5dc, 0x971f303a), + RAPIDJSON_UINT64_C2(0xa8d9d153, 0x5ce3b396), RAPIDJSON_UINT64_C2(0xfb9b7cd9, 0xa4a7443c), + RAPIDJSON_UINT64_C2(0xbb764c4c, 0xa7a44410), RAPIDJSON_UINT64_C2(0x8bab8eef, 0xb6409c1a), + RAPIDJSON_UINT64_C2(0xd01fef10, 0xa657842c), RAPIDJSON_UINT64_C2(0x9b10a4e5, 0xe9913129), + RAPIDJSON_UINT64_C2(0xe7109bfb, 0xa19c0c9d), RAPIDJSON_UINT64_C2(0xac2820d9, 0x623bf429), + RAPIDJSON_UINT64_C2(0x80444b5e, 0x7aa7cf85), RAPIDJSON_UINT64_C2(0xbf21e440, 0x03acdd2d), + RAPIDJSON_UINT64_C2(0x8e679c2f, 0x5e44ff8f), RAPIDJSON_UINT64_C2(0xd433179d, 0x9c8cb841), + RAPIDJSON_UINT64_C2(0x9e19db92, 0xb4e31ba9), RAPIDJSON_UINT64_C2(0xeb96bf6e, 0xbadf77d9), + RAPIDJSON_UINT64_C2(0xaf87023b, 0x9bf0ee6b) + }; + static const int16_t kCachedPowers_E[] = { + -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980, + -954, -927, -901, -874, -847, -821, -794, -768, -741, -715, + -688, -661, -635, -608, -582, -555, -529, -502, -475, -449, + -422, -396, -369, -343, -316, -289, -263, -236, -210, -183, + -157, -130, -103, -77, -50, -24, 3, 30, 56, 83, + 109, 136, 162, 189, 216, 242, 269, 295, 322, 348, + 375, 402, 428, 455, 481, 508, 534, 561, 588, 614, + 641, 667, 694, 720, 747, 774, 800, 827, 853, 880, + 907, 933, 960, 986, 1013, 1039, 1066 + }; + return DiyFp(kCachedPowers_F[index], kCachedPowers_E[index]); +} + +inline DiyFp GetCachedPower(int e, int* K) { + + //int k = static_cast(ceil((-61 - e) * 0.30102999566398114)) + 374; + double dk = (-61 - e) * 0.30102999566398114 + 347; // dk must be positive, so can do ceiling in positive + int k = static_cast(dk); + if (dk - k > 0.0) + k++; + + unsigned index = static_cast((k >> 3) + 1); + *K = -(-348 + static_cast(index << 3)); // decimal exponent no need lookup table + + return GetCachedPowerByIndex(index); +} + +inline DiyFp GetCachedPower10(int exp, int *outExp) { + unsigned index = (static_cast(exp) + 348u) / 8u; + *outExp = -348 + static_cast(index) * 8; + return GetCachedPowerByIndex(index); + } + +#ifdef __GNUC__ +RAPIDJSON_DIAG_POP +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +RAPIDJSON_DIAG_OFF(padded) +#endif + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_DIYFP_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/dtoa.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/dtoa.h new file mode 100644 index 0000000..8d6350e --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/dtoa.h @@ -0,0 +1,245 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +// This is a C++ header-only implementation of Grisu2 algorithm from the publication: +// Loitsch, Florian. "Printing floating-point numbers quickly and accurately with +// integers." ACM Sigplan Notices 45.6 (2010): 233-243. + +#ifndef RAPIDJSON_DTOA_ +#define RAPIDJSON_DTOA_ + +#include "itoa.h" // GetDigitsLut() +#include "diyfp.h" +#include "ieee754.h" + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +#ifdef __GNUC__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +RAPIDJSON_DIAG_OFF(array-bounds) // some gcc versions generate wrong warnings https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59124 +#endif + +inline void GrisuRound(char* buffer, int len, uint64_t delta, uint64_t rest, uint64_t ten_kappa, uint64_t wp_w) { + while (rest < wp_w && delta - rest >= ten_kappa && + (rest + ten_kappa < wp_w || /// closer + wp_w - rest > rest + ten_kappa - wp_w)) { + buffer[len - 1]--; + rest += ten_kappa; + } +} + +inline unsigned CountDecimalDigit32(uint32_t n) { + // Simple pure C++ implementation was faster than __builtin_clz version in this situation. + if (n < 10) return 1; + if (n < 100) return 2; + if (n < 1000) return 3; + if (n < 10000) return 4; + if (n < 100000) return 5; + if (n < 1000000) return 6; + if (n < 10000000) return 7; + if (n < 100000000) return 8; + // Will not reach 10 digits in DigitGen() + //if (n < 1000000000) return 9; + //return 10; + return 9; +} + +inline void DigitGen(const DiyFp& W, const DiyFp& Mp, uint64_t delta, char* buffer, int* len, int* K) { + static const uint32_t kPow10[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 }; + const DiyFp one(uint64_t(1) << -Mp.e, Mp.e); + const DiyFp wp_w = Mp - W; + uint32_t p1 = static_cast(Mp.f >> -one.e); + uint64_t p2 = Mp.f & (one.f - 1); + unsigned kappa = CountDecimalDigit32(p1); // kappa in [0, 9] + *len = 0; + + while (kappa > 0) { + uint32_t d = 0; + switch (kappa) { + case 9: d = p1 / 100000000; p1 %= 100000000; break; + case 8: d = p1 / 10000000; p1 %= 10000000; break; + case 7: d = p1 / 1000000; p1 %= 1000000; break; + case 6: d = p1 / 100000; p1 %= 100000; break; + case 5: d = p1 / 10000; p1 %= 10000; break; + case 4: d = p1 / 1000; p1 %= 1000; break; + case 3: d = p1 / 100; p1 %= 100; break; + case 2: d = p1 / 10; p1 %= 10; break; + case 1: d = p1; p1 = 0; break; + default:; + } + if (d || *len) + buffer[(*len)++] = static_cast('0' + static_cast(d)); + kappa--; + uint64_t tmp = (static_cast(p1) << -one.e) + p2; + if (tmp <= delta) { + *K += kappa; + GrisuRound(buffer, *len, delta, tmp, static_cast(kPow10[kappa]) << -one.e, wp_w.f); + return; + } + } + + // kappa = 0 + for (;;) { + p2 *= 10; + delta *= 10; + char d = static_cast(p2 >> -one.e); + if (d || *len) + buffer[(*len)++] = static_cast('0' + d); + p2 &= one.f - 1; + kappa--; + if (p2 < delta) { + *K += kappa; + int index = -static_cast(kappa); + GrisuRound(buffer, *len, delta, p2, one.f, wp_w.f * (index < 9 ? kPow10[-static_cast(kappa)] : 0)); + return; + } + } +} + +inline void Grisu2(double value, char* buffer, int* length, int* K) { + const DiyFp v(value); + DiyFp w_m, w_p; + v.NormalizedBoundaries(&w_m, &w_p); + + const DiyFp c_mk = GetCachedPower(w_p.e, K); + const DiyFp W = v.Normalize() * c_mk; + DiyFp Wp = w_p * c_mk; + DiyFp Wm = w_m * c_mk; + Wm.f++; + Wp.f--; + DigitGen(W, Wp, Wp.f - Wm.f, buffer, length, K); +} + +inline char* WriteExponent(int K, char* buffer) { + if (K < 0) { + *buffer++ = '-'; + K = -K; + } + + if (K >= 100) { + *buffer++ = static_cast('0' + static_cast(K / 100)); + K %= 100; + const char* d = GetDigitsLut() + K * 2; + *buffer++ = d[0]; + *buffer++ = d[1]; + } + else if (K >= 10) { + const char* d = GetDigitsLut() + K * 2; + *buffer++ = d[0]; + *buffer++ = d[1]; + } + else + *buffer++ = static_cast('0' + static_cast(K)); + + return buffer; +} + +inline char* Prettify(char* buffer, int length, int k, int maxDecimalPlaces) { + const int kk = length + k; // 10^(kk-1) <= v < 10^kk + + if (0 <= k && kk <= 21) { + // 1234e7 -> 12340000000 + for (int i = length; i < kk; i++) + buffer[i] = '0'; + buffer[kk] = '.'; + buffer[kk + 1] = '0'; + return &buffer[kk + 2]; + } + else if (0 < kk && kk <= 21) { + // 1234e-2 -> 12.34 + std::memmove(&buffer[kk + 1], &buffer[kk], static_cast(length - kk)); + buffer[kk] = '.'; + if (0 > k + maxDecimalPlaces) { + // When maxDecimalPlaces = 2, 1.2345 -> 1.23, 1.102 -> 1.1 + // Remove extra trailing zeros (at least one) after truncation. + for (int i = kk + maxDecimalPlaces; i > kk + 1; i--) + if (buffer[i] != '0') + return &buffer[i + 1]; + return &buffer[kk + 2]; // Reserve one zero + } + else + return &buffer[length + 1]; + } + else if (-6 < kk && kk <= 0) { + // 1234e-6 -> 0.001234 + const int offset = 2 - kk; + std::memmove(&buffer[offset], &buffer[0], static_cast(length)); + buffer[0] = '0'; + buffer[1] = '.'; + for (int i = 2; i < offset; i++) + buffer[i] = '0'; + if (length - kk > maxDecimalPlaces) { + // When maxDecimalPlaces = 2, 0.123 -> 0.12, 0.102 -> 0.1 + // Remove extra trailing zeros (at least one) after truncation. + for (int i = maxDecimalPlaces + 1; i > 2; i--) + if (buffer[i] != '0') + return &buffer[i + 1]; + return &buffer[3]; // Reserve one zero + } + else + return &buffer[length + offset]; + } + else if (kk < -maxDecimalPlaces) { + // Truncate to zero + buffer[0] = '0'; + buffer[1] = '.'; + buffer[2] = '0'; + return &buffer[3]; + } + else if (length == 1) { + // 1e30 + buffer[1] = 'e'; + return WriteExponent(kk - 1, &buffer[2]); + } + else { + // 1234e30 -> 1.234e33 + std::memmove(&buffer[2], &buffer[1], static_cast(length - 1)); + buffer[1] = '.'; + buffer[length + 1] = 'e'; + return WriteExponent(kk - 1, &buffer[0 + length + 2]); + } +} + +inline char* dtoa(double value, char* buffer, int maxDecimalPlaces = 324) { + RAPIDJSON_ASSERT(maxDecimalPlaces >= 1); + Double d(value); + if (d.IsZero()) { + if (d.Sign()) + *buffer++ = '-'; // -0.0, Issue #289 + buffer[0] = '0'; + buffer[1] = '.'; + buffer[2] = '0'; + return &buffer[3]; + } + else { + if (value < 0) { + *buffer++ = '-'; + value = -value; + } + int length, K; + Grisu2(value, buffer, &length, &K); + return Prettify(buffer, length, K, maxDecimalPlaces); + } +} + +#ifdef __GNUC__ +RAPIDJSON_DIAG_POP +#endif + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_DTOA_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/ieee754.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/ieee754.h new file mode 100644 index 0000000..82bb0b9 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/ieee754.h @@ -0,0 +1,78 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_IEEE754_ +#define RAPIDJSON_IEEE754_ + +#include "../rapidjson.h" + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +class Double { +public: + Double() {} + Double(double d) : d_(d) {} + Double(uint64_t u) : u_(u) {} + + double Value() const { return d_; } + uint64_t Uint64Value() const { return u_; } + + double NextPositiveDouble() const { + RAPIDJSON_ASSERT(!Sign()); + return Double(u_ + 1).Value(); + } + + bool Sign() const { return (u_ & kSignMask) != 0; } + uint64_t Significand() const { return u_ & kSignificandMask; } + int Exponent() const { return static_cast(((u_ & kExponentMask) >> kSignificandSize) - kExponentBias); } + + bool IsNan() const { return (u_ & kExponentMask) == kExponentMask && Significand() != 0; } + bool IsInf() const { return (u_ & kExponentMask) == kExponentMask && Significand() == 0; } + bool IsNanOrInf() const { return (u_ & kExponentMask) == kExponentMask; } + bool IsNormal() const { return (u_ & kExponentMask) != 0 || Significand() == 0; } + bool IsZero() const { return (u_ & (kExponentMask | kSignificandMask)) == 0; } + + uint64_t IntegerSignificand() const { return IsNormal() ? Significand() | kHiddenBit : Significand(); } + int IntegerExponent() const { return (IsNormal() ? Exponent() : kDenormalExponent) - kSignificandSize; } + uint64_t ToBias() const { return (u_ & kSignMask) ? ~u_ + 1 : u_ | kSignMask; } + + static unsigned EffectiveSignificandSize(int order) { + if (order >= -1021) + return 53; + else if (order <= -1074) + return 0; + else + return static_cast(order) + 1074; + } + +private: + static const int kSignificandSize = 52; + static const int kExponentBias = 0x3FF; + static const int kDenormalExponent = 1 - kExponentBias; + static const uint64_t kSignMask = RAPIDJSON_UINT64_C2(0x80000000, 0x00000000); + static const uint64_t kExponentMask = RAPIDJSON_UINT64_C2(0x7FF00000, 0x00000000); + static const uint64_t kSignificandMask = RAPIDJSON_UINT64_C2(0x000FFFFF, 0xFFFFFFFF); + static const uint64_t kHiddenBit = RAPIDJSON_UINT64_C2(0x00100000, 0x00000000); + + union { + double d_; + uint64_t u_; + }; +}; + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_IEEE754_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/itoa.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/itoa.h new file mode 100644 index 0000000..01a4e7e --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/itoa.h @@ -0,0 +1,304 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_ITOA_ +#define RAPIDJSON_ITOA_ + +#include "../rapidjson.h" + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +inline const char* GetDigitsLut() { + static const char cDigitsLut[200] = { + '0','0','0','1','0','2','0','3','0','4','0','5','0','6','0','7','0','8','0','9', + '1','0','1','1','1','2','1','3','1','4','1','5','1','6','1','7','1','8','1','9', + '2','0','2','1','2','2','2','3','2','4','2','5','2','6','2','7','2','8','2','9', + '3','0','3','1','3','2','3','3','3','4','3','5','3','6','3','7','3','8','3','9', + '4','0','4','1','4','2','4','3','4','4','4','5','4','6','4','7','4','8','4','9', + '5','0','5','1','5','2','5','3','5','4','5','5','5','6','5','7','5','8','5','9', + '6','0','6','1','6','2','6','3','6','4','6','5','6','6','6','7','6','8','6','9', + '7','0','7','1','7','2','7','3','7','4','7','5','7','6','7','7','7','8','7','9', + '8','0','8','1','8','2','8','3','8','4','8','5','8','6','8','7','8','8','8','9', + '9','0','9','1','9','2','9','3','9','4','9','5','9','6','9','7','9','8','9','9' + }; + return cDigitsLut; +} + +inline char* u32toa(uint32_t value, char* buffer) { + const char* cDigitsLut = GetDigitsLut(); + + if (value < 10000) { + const uint32_t d1 = (value / 100) << 1; + const uint32_t d2 = (value % 100) << 1; + + if (value >= 1000) + *buffer++ = cDigitsLut[d1]; + if (value >= 100) + *buffer++ = cDigitsLut[d1 + 1]; + if (value >= 10) + *buffer++ = cDigitsLut[d2]; + *buffer++ = cDigitsLut[d2 + 1]; + } + else if (value < 100000000) { + // value = bbbbcccc + const uint32_t b = value / 10000; + const uint32_t c = value % 10000; + + const uint32_t d1 = (b / 100) << 1; + const uint32_t d2 = (b % 100) << 1; + + const uint32_t d3 = (c / 100) << 1; + const uint32_t d4 = (c % 100) << 1; + + if (value >= 10000000) + *buffer++ = cDigitsLut[d1]; + if (value >= 1000000) + *buffer++ = cDigitsLut[d1 + 1]; + if (value >= 100000) + *buffer++ = cDigitsLut[d2]; + *buffer++ = cDigitsLut[d2 + 1]; + + *buffer++ = cDigitsLut[d3]; + *buffer++ = cDigitsLut[d3 + 1]; + *buffer++ = cDigitsLut[d4]; + *buffer++ = cDigitsLut[d4 + 1]; + } + else { + // value = aabbbbcccc in decimal + + const uint32_t a = value / 100000000; // 1 to 42 + value %= 100000000; + + if (a >= 10) { + const unsigned i = a << 1; + *buffer++ = cDigitsLut[i]; + *buffer++ = cDigitsLut[i + 1]; + } + else + *buffer++ = static_cast('0' + static_cast(a)); + + const uint32_t b = value / 10000; // 0 to 9999 + const uint32_t c = value % 10000; // 0 to 9999 + + const uint32_t d1 = (b / 100) << 1; + const uint32_t d2 = (b % 100) << 1; + + const uint32_t d3 = (c / 100) << 1; + const uint32_t d4 = (c % 100) << 1; + + *buffer++ = cDigitsLut[d1]; + *buffer++ = cDigitsLut[d1 + 1]; + *buffer++ = cDigitsLut[d2]; + *buffer++ = cDigitsLut[d2 + 1]; + *buffer++ = cDigitsLut[d3]; + *buffer++ = cDigitsLut[d3 + 1]; + *buffer++ = cDigitsLut[d4]; + *buffer++ = cDigitsLut[d4 + 1]; + } + return buffer; +} + +inline char* i32toa(int32_t value, char* buffer) { + uint32_t u = static_cast(value); + if (value < 0) { + *buffer++ = '-'; + u = ~u + 1; + } + + return u32toa(u, buffer); +} + +inline char* u64toa(uint64_t value, char* buffer) { + const char* cDigitsLut = GetDigitsLut(); + const uint64_t kTen8 = 100000000; + const uint64_t kTen9 = kTen8 * 10; + const uint64_t kTen10 = kTen8 * 100; + const uint64_t kTen11 = kTen8 * 1000; + const uint64_t kTen12 = kTen8 * 10000; + const uint64_t kTen13 = kTen8 * 100000; + const uint64_t kTen14 = kTen8 * 1000000; + const uint64_t kTen15 = kTen8 * 10000000; + const uint64_t kTen16 = kTen8 * kTen8; + + if (value < kTen8) { + uint32_t v = static_cast(value); + if (v < 10000) { + const uint32_t d1 = (v / 100) << 1; + const uint32_t d2 = (v % 100) << 1; + + if (v >= 1000) + *buffer++ = cDigitsLut[d1]; + if (v >= 100) + *buffer++ = cDigitsLut[d1 + 1]; + if (v >= 10) + *buffer++ = cDigitsLut[d2]; + *buffer++ = cDigitsLut[d2 + 1]; + } + else { + // value = bbbbcccc + const uint32_t b = v / 10000; + const uint32_t c = v % 10000; + + const uint32_t d1 = (b / 100) << 1; + const uint32_t d2 = (b % 100) << 1; + + const uint32_t d3 = (c / 100) << 1; + const uint32_t d4 = (c % 100) << 1; + + if (value >= 10000000) + *buffer++ = cDigitsLut[d1]; + if (value >= 1000000) + *buffer++ = cDigitsLut[d1 + 1]; + if (value >= 100000) + *buffer++ = cDigitsLut[d2]; + *buffer++ = cDigitsLut[d2 + 1]; + + *buffer++ = cDigitsLut[d3]; + *buffer++ = cDigitsLut[d3 + 1]; + *buffer++ = cDigitsLut[d4]; + *buffer++ = cDigitsLut[d4 + 1]; + } + } + else if (value < kTen16) { + const uint32_t v0 = static_cast(value / kTen8); + const uint32_t v1 = static_cast(value % kTen8); + + const uint32_t b0 = v0 / 10000; + const uint32_t c0 = v0 % 10000; + + const uint32_t d1 = (b0 / 100) << 1; + const uint32_t d2 = (b0 % 100) << 1; + + const uint32_t d3 = (c0 / 100) << 1; + const uint32_t d4 = (c0 % 100) << 1; + + const uint32_t b1 = v1 / 10000; + const uint32_t c1 = v1 % 10000; + + const uint32_t d5 = (b1 / 100) << 1; + const uint32_t d6 = (b1 % 100) << 1; + + const uint32_t d7 = (c1 / 100) << 1; + const uint32_t d8 = (c1 % 100) << 1; + + if (value >= kTen15) + *buffer++ = cDigitsLut[d1]; + if (value >= kTen14) + *buffer++ = cDigitsLut[d1 + 1]; + if (value >= kTen13) + *buffer++ = cDigitsLut[d2]; + if (value >= kTen12) + *buffer++ = cDigitsLut[d2 + 1]; + if (value >= kTen11) + *buffer++ = cDigitsLut[d3]; + if (value >= kTen10) + *buffer++ = cDigitsLut[d3 + 1]; + if (value >= kTen9) + *buffer++ = cDigitsLut[d4]; + if (value >= kTen8) + *buffer++ = cDigitsLut[d4 + 1]; + + *buffer++ = cDigitsLut[d5]; + *buffer++ = cDigitsLut[d5 + 1]; + *buffer++ = cDigitsLut[d6]; + *buffer++ = cDigitsLut[d6 + 1]; + *buffer++ = cDigitsLut[d7]; + *buffer++ = cDigitsLut[d7 + 1]; + *buffer++ = cDigitsLut[d8]; + *buffer++ = cDigitsLut[d8 + 1]; + } + else { + const uint32_t a = static_cast(value / kTen16); // 1 to 1844 + value %= kTen16; + + if (a < 10) + *buffer++ = static_cast('0' + static_cast(a)); + else if (a < 100) { + const uint32_t i = a << 1; + *buffer++ = cDigitsLut[i]; + *buffer++ = cDigitsLut[i + 1]; + } + else if (a < 1000) { + *buffer++ = static_cast('0' + static_cast(a / 100)); + + const uint32_t i = (a % 100) << 1; + *buffer++ = cDigitsLut[i]; + *buffer++ = cDigitsLut[i + 1]; + } + else { + const uint32_t i = (a / 100) << 1; + const uint32_t j = (a % 100) << 1; + *buffer++ = cDigitsLut[i]; + *buffer++ = cDigitsLut[i + 1]; + *buffer++ = cDigitsLut[j]; + *buffer++ = cDigitsLut[j + 1]; + } + + const uint32_t v0 = static_cast(value / kTen8); + const uint32_t v1 = static_cast(value % kTen8); + + const uint32_t b0 = v0 / 10000; + const uint32_t c0 = v0 % 10000; + + const uint32_t d1 = (b0 / 100) << 1; + const uint32_t d2 = (b0 % 100) << 1; + + const uint32_t d3 = (c0 / 100) << 1; + const uint32_t d4 = (c0 % 100) << 1; + + const uint32_t b1 = v1 / 10000; + const uint32_t c1 = v1 % 10000; + + const uint32_t d5 = (b1 / 100) << 1; + const uint32_t d6 = (b1 % 100) << 1; + + const uint32_t d7 = (c1 / 100) << 1; + const uint32_t d8 = (c1 % 100) << 1; + + *buffer++ = cDigitsLut[d1]; + *buffer++ = cDigitsLut[d1 + 1]; + *buffer++ = cDigitsLut[d2]; + *buffer++ = cDigitsLut[d2 + 1]; + *buffer++ = cDigitsLut[d3]; + *buffer++ = cDigitsLut[d3 + 1]; + *buffer++ = cDigitsLut[d4]; + *buffer++ = cDigitsLut[d4 + 1]; + *buffer++ = cDigitsLut[d5]; + *buffer++ = cDigitsLut[d5 + 1]; + *buffer++ = cDigitsLut[d6]; + *buffer++ = cDigitsLut[d6 + 1]; + *buffer++ = cDigitsLut[d7]; + *buffer++ = cDigitsLut[d7 + 1]; + *buffer++ = cDigitsLut[d8]; + *buffer++ = cDigitsLut[d8 + 1]; + } + + return buffer; +} + +inline char* i64toa(int64_t value, char* buffer) { + uint64_t u = static_cast(value); + if (value < 0) { + *buffer++ = '-'; + u = ~u + 1; + } + + return u64toa(u, buffer); +} + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_ITOA_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/meta.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/meta.h new file mode 100644 index 0000000..5a9aaa4 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/meta.h @@ -0,0 +1,181 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_INTERNAL_META_H_ +#define RAPIDJSON_INTERNAL_META_H_ + +#include "../rapidjson.h" + +#ifdef __GNUC__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +#endif +#if defined(_MSC_VER) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(6334) +#endif + +#if RAPIDJSON_HAS_CXX11_TYPETRAITS +#include +#endif + +//@cond RAPIDJSON_INTERNAL +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +// Helper to wrap/convert arbitrary types to void, useful for arbitrary type matching +template struct Void { typedef void Type; }; + +/////////////////////////////////////////////////////////////////////////////// +// BoolType, TrueType, FalseType +// +template struct BoolType { + static const bool Value = Cond; + typedef BoolType Type; +}; +typedef BoolType TrueType; +typedef BoolType FalseType; + + +/////////////////////////////////////////////////////////////////////////////// +// SelectIf, BoolExpr, NotExpr, AndExpr, OrExpr +// + +template struct SelectIfImpl { template struct Apply { typedef T1 Type; }; }; +template <> struct SelectIfImpl { template struct Apply { typedef T2 Type; }; }; +template struct SelectIfCond : SelectIfImpl::template Apply {}; +template struct SelectIf : SelectIfCond {}; + +template struct AndExprCond : FalseType {}; +template <> struct AndExprCond : TrueType {}; +template struct OrExprCond : TrueType {}; +template <> struct OrExprCond : FalseType {}; + +template struct BoolExpr : SelectIf::Type {}; +template struct NotExpr : SelectIf::Type {}; +template struct AndExpr : AndExprCond::Type {}; +template struct OrExpr : OrExprCond::Type {}; + + +/////////////////////////////////////////////////////////////////////////////// +// AddConst, MaybeAddConst, RemoveConst +template struct AddConst { typedef const T Type; }; +template struct MaybeAddConst : SelectIfCond {}; +template struct RemoveConst { typedef T Type; }; +template struct RemoveConst { typedef T Type; }; + + +/////////////////////////////////////////////////////////////////////////////// +// IsSame, IsConst, IsMoreConst, IsPointer +// +template struct IsSame : FalseType {}; +template struct IsSame : TrueType {}; + +template struct IsConst : FalseType {}; +template struct IsConst : TrueType {}; + +template +struct IsMoreConst + : AndExpr::Type, typename RemoveConst::Type>, + BoolType::Value >= IsConst::Value> >::Type {}; + +template struct IsPointer : FalseType {}; +template struct IsPointer : TrueType {}; + +/////////////////////////////////////////////////////////////////////////////// +// IsBaseOf +// +#if RAPIDJSON_HAS_CXX11_TYPETRAITS + +template struct IsBaseOf + : BoolType< ::std::is_base_of::value> {}; + +#else // simplified version adopted from Boost + +template struct IsBaseOfImpl { + RAPIDJSON_STATIC_ASSERT(sizeof(B) != 0); + RAPIDJSON_STATIC_ASSERT(sizeof(D) != 0); + + typedef char (&Yes)[1]; + typedef char (&No) [2]; + + template + static Yes Check(const D*, T); + static No Check(const B*, int); + + struct Host { + operator const B*() const; + operator const D*(); + }; + + enum { Value = (sizeof(Check(Host(), 0)) == sizeof(Yes)) }; +}; + +template struct IsBaseOf + : OrExpr, BoolExpr > >::Type {}; + +#endif // RAPIDJSON_HAS_CXX11_TYPETRAITS + + +////////////////////////////////////////////////////////////////////////// +// EnableIf / DisableIf +// +template struct EnableIfCond { typedef T Type; }; +template struct EnableIfCond { /* empty */ }; + +template struct DisableIfCond { typedef T Type; }; +template struct DisableIfCond { /* empty */ }; + +template +struct EnableIf : EnableIfCond {}; + +template +struct DisableIf : DisableIfCond {}; + +// SFINAE helpers +struct SfinaeTag {}; +template struct RemoveSfinaeTag; +template struct RemoveSfinaeTag { typedef T Type; }; + +#define RAPIDJSON_REMOVEFPTR_(type) \ + typename ::RAPIDJSON_NAMESPACE::internal::RemoveSfinaeTag \ + < ::RAPIDJSON_NAMESPACE::internal::SfinaeTag&(*) type>::Type + +#define RAPIDJSON_ENABLEIF(cond) \ + typename ::RAPIDJSON_NAMESPACE::internal::EnableIf \ + ::Type * = NULL + +#define RAPIDJSON_DISABLEIF(cond) \ + typename ::RAPIDJSON_NAMESPACE::internal::DisableIf \ + ::Type * = NULL + +#define RAPIDJSON_ENABLEIF_RETURN(cond,returntype) \ + typename ::RAPIDJSON_NAMESPACE::internal::EnableIf \ + ::Type + +#define RAPIDJSON_DISABLEIF_RETURN(cond,returntype) \ + typename ::RAPIDJSON_NAMESPACE::internal::DisableIf \ + ::Type + +} // namespace internal +RAPIDJSON_NAMESPACE_END +//@endcond + +#if defined(__GNUC__) || defined(_MSC_VER) +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_INTERNAL_META_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/pow10.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/pow10.h new file mode 100644 index 0000000..02f475d --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/pow10.h @@ -0,0 +1,55 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_POW10_ +#define RAPIDJSON_POW10_ + +#include "../rapidjson.h" + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +//! Computes integer powers of 10 in double (10.0^n). +/*! This function uses lookup table for fast and accurate results. + \param n non-negative exponent. Must <= 308. + \return 10.0^n +*/ +inline double Pow10(int n) { + static const double e[] = { // 1e-0...1e308: 309 * 8 bytes = 2472 bytes + 1e+0, + 1e+1, 1e+2, 1e+3, 1e+4, 1e+5, 1e+6, 1e+7, 1e+8, 1e+9, 1e+10, 1e+11, 1e+12, 1e+13, 1e+14, 1e+15, 1e+16, 1e+17, 1e+18, 1e+19, 1e+20, + 1e+21, 1e+22, 1e+23, 1e+24, 1e+25, 1e+26, 1e+27, 1e+28, 1e+29, 1e+30, 1e+31, 1e+32, 1e+33, 1e+34, 1e+35, 1e+36, 1e+37, 1e+38, 1e+39, 1e+40, + 1e+41, 1e+42, 1e+43, 1e+44, 1e+45, 1e+46, 1e+47, 1e+48, 1e+49, 1e+50, 1e+51, 1e+52, 1e+53, 1e+54, 1e+55, 1e+56, 1e+57, 1e+58, 1e+59, 1e+60, + 1e+61, 1e+62, 1e+63, 1e+64, 1e+65, 1e+66, 1e+67, 1e+68, 1e+69, 1e+70, 1e+71, 1e+72, 1e+73, 1e+74, 1e+75, 1e+76, 1e+77, 1e+78, 1e+79, 1e+80, + 1e+81, 1e+82, 1e+83, 1e+84, 1e+85, 1e+86, 1e+87, 1e+88, 1e+89, 1e+90, 1e+91, 1e+92, 1e+93, 1e+94, 1e+95, 1e+96, 1e+97, 1e+98, 1e+99, 1e+100, + 1e+101,1e+102,1e+103,1e+104,1e+105,1e+106,1e+107,1e+108,1e+109,1e+110,1e+111,1e+112,1e+113,1e+114,1e+115,1e+116,1e+117,1e+118,1e+119,1e+120, + 1e+121,1e+122,1e+123,1e+124,1e+125,1e+126,1e+127,1e+128,1e+129,1e+130,1e+131,1e+132,1e+133,1e+134,1e+135,1e+136,1e+137,1e+138,1e+139,1e+140, + 1e+141,1e+142,1e+143,1e+144,1e+145,1e+146,1e+147,1e+148,1e+149,1e+150,1e+151,1e+152,1e+153,1e+154,1e+155,1e+156,1e+157,1e+158,1e+159,1e+160, + 1e+161,1e+162,1e+163,1e+164,1e+165,1e+166,1e+167,1e+168,1e+169,1e+170,1e+171,1e+172,1e+173,1e+174,1e+175,1e+176,1e+177,1e+178,1e+179,1e+180, + 1e+181,1e+182,1e+183,1e+184,1e+185,1e+186,1e+187,1e+188,1e+189,1e+190,1e+191,1e+192,1e+193,1e+194,1e+195,1e+196,1e+197,1e+198,1e+199,1e+200, + 1e+201,1e+202,1e+203,1e+204,1e+205,1e+206,1e+207,1e+208,1e+209,1e+210,1e+211,1e+212,1e+213,1e+214,1e+215,1e+216,1e+217,1e+218,1e+219,1e+220, + 1e+221,1e+222,1e+223,1e+224,1e+225,1e+226,1e+227,1e+228,1e+229,1e+230,1e+231,1e+232,1e+233,1e+234,1e+235,1e+236,1e+237,1e+238,1e+239,1e+240, + 1e+241,1e+242,1e+243,1e+244,1e+245,1e+246,1e+247,1e+248,1e+249,1e+250,1e+251,1e+252,1e+253,1e+254,1e+255,1e+256,1e+257,1e+258,1e+259,1e+260, + 1e+261,1e+262,1e+263,1e+264,1e+265,1e+266,1e+267,1e+268,1e+269,1e+270,1e+271,1e+272,1e+273,1e+274,1e+275,1e+276,1e+277,1e+278,1e+279,1e+280, + 1e+281,1e+282,1e+283,1e+284,1e+285,1e+286,1e+287,1e+288,1e+289,1e+290,1e+291,1e+292,1e+293,1e+294,1e+295,1e+296,1e+297,1e+298,1e+299,1e+300, + 1e+301,1e+302,1e+303,1e+304,1e+305,1e+306,1e+307,1e+308 + }; + RAPIDJSON_ASSERT(n >= 0 && n <= 308); + return e[n]; +} + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_POW10_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/regex.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/regex.h new file mode 100644 index 0000000..422a524 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/regex.h @@ -0,0 +1,701 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_INTERNAL_REGEX_H_ +#define RAPIDJSON_INTERNAL_REGEX_H_ + +#include "../allocators.h" +#include "../stream.h" +#include "stack.h" + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +RAPIDJSON_DIAG_OFF(switch-enum) +RAPIDJSON_DIAG_OFF(implicit-fallthrough) +#endif + +#ifdef __GNUC__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +#endif + +#ifdef _MSC_VER +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(4512) // assignment operator could not be generated +#endif + +#ifndef RAPIDJSON_REGEX_VERBOSE +#define RAPIDJSON_REGEX_VERBOSE 0 +#endif + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +/////////////////////////////////////////////////////////////////////////////// +// GenericRegex + +static const SizeType kRegexInvalidState = ~SizeType(0); //!< Represents an invalid index in GenericRegex::State::out, out1 +static const SizeType kRegexInvalidRange = ~SizeType(0); + +//! Regular expression engine with subset of ECMAscript grammar. +/*! + Supported regular expression syntax: + - \c ab Concatenation + - \c a|b Alternation + - \c a? Zero or one + - \c a* Zero or more + - \c a+ One or more + - \c a{3} Exactly 3 times + - \c a{3,} At least 3 times + - \c a{3,5} 3 to 5 times + - \c (ab) Grouping + - \c ^a At the beginning + - \c a$ At the end + - \c . Any character + - \c [abc] Character classes + - \c [a-c] Character class range + - \c [a-z0-9_] Character class combination + - \c [^abc] Negated character classes + - \c [^a-c] Negated character class range + - \c [\b] Backspace (U+0008) + - \c \\| \\\\ ... Escape characters + - \c \\f Form feed (U+000C) + - \c \\n Line feed (U+000A) + - \c \\r Carriage return (U+000D) + - \c \\t Tab (U+0009) + - \c \\v Vertical tab (U+000B) + + \note This is a Thompson NFA engine, implemented with reference to + Cox, Russ. "Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby,...).", + https://swtch.com/~rsc/regexp/regexp1.html +*/ +template +class GenericRegex { +public: + typedef typename Encoding::Ch Ch; + + GenericRegex(const Ch* source, Allocator* allocator = 0) : + states_(allocator, 256), ranges_(allocator, 256), root_(kRegexInvalidState), stateCount_(), rangeCount_(), + stateSet_(), state0_(allocator, 0), state1_(allocator, 0), anchorBegin_(), anchorEnd_() + { + GenericStringStream ss(source); + DecodedStream > ds(ss); + Parse(ds); + } + + ~GenericRegex() { + Allocator::Free(stateSet_); + } + + bool IsValid() const { + return root_ != kRegexInvalidState; + } + + template + bool Match(InputStream& is) const { + return SearchWithAnchoring(is, true, true); + } + + bool Match(const Ch* s) const { + GenericStringStream is(s); + return Match(is); + } + + template + bool Search(InputStream& is) const { + return SearchWithAnchoring(is, anchorBegin_, anchorEnd_); + } + + bool Search(const Ch* s) const { + GenericStringStream is(s); + return Search(is); + } + +private: + enum Operator { + kZeroOrOne, + kZeroOrMore, + kOneOrMore, + kConcatenation, + kAlternation, + kLeftParenthesis + }; + + static const unsigned kAnyCharacterClass = 0xFFFFFFFF; //!< For '.' + static const unsigned kRangeCharacterClass = 0xFFFFFFFE; + static const unsigned kRangeNegationFlag = 0x80000000; + + struct Range { + unsigned start; // + unsigned end; + SizeType next; + }; + + struct State { + SizeType out; //!< Equals to kInvalid for matching state + SizeType out1; //!< Equals to non-kInvalid for split + SizeType rangeStart; + unsigned codepoint; + }; + + struct Frag { + Frag(SizeType s, SizeType o, SizeType m) : start(s), out(o), minIndex(m) {} + SizeType start; + SizeType out; //!< link-list of all output states + SizeType minIndex; + }; + + template + class DecodedStream { + public: + DecodedStream(SourceStream& ss) : ss_(ss), codepoint_() { Decode(); } + unsigned Peek() { return codepoint_; } + unsigned Take() { + unsigned c = codepoint_; + if (c) // No further decoding when '\0' + Decode(); + return c; + } + + private: + void Decode() { + if (!Encoding::Decode(ss_, &codepoint_)) + codepoint_ = 0; + } + + SourceStream& ss_; + unsigned codepoint_; + }; + + State& GetState(SizeType index) { + RAPIDJSON_ASSERT(index < stateCount_); + return states_.template Bottom()[index]; + } + + const State& GetState(SizeType index) const { + RAPIDJSON_ASSERT(index < stateCount_); + return states_.template Bottom()[index]; + } + + Range& GetRange(SizeType index) { + RAPIDJSON_ASSERT(index < rangeCount_); + return ranges_.template Bottom()[index]; + } + + const Range& GetRange(SizeType index) const { + RAPIDJSON_ASSERT(index < rangeCount_); + return ranges_.template Bottom()[index]; + } + + template + void Parse(DecodedStream& ds) { + Allocator allocator; + Stack operandStack(&allocator, 256); // Frag + Stack operatorStack(&allocator, 256); // Operator + Stack atomCountStack(&allocator, 256); // unsigned (Atom per parenthesis) + + *atomCountStack.template Push() = 0; + + unsigned codepoint; + while (ds.Peek() != 0) { + switch (codepoint = ds.Take()) { + case '^': + anchorBegin_ = true; + break; + + case '$': + anchorEnd_ = true; + break; + + case '|': + while (!operatorStack.Empty() && *operatorStack.template Top() < kAlternation) + if (!Eval(operandStack, *operatorStack.template Pop(1))) + return; + *operatorStack.template Push() = kAlternation; + *atomCountStack.template Top() = 0; + break; + + case '(': + *operatorStack.template Push() = kLeftParenthesis; + *atomCountStack.template Push() = 0; + break; + + case ')': + while (!operatorStack.Empty() && *operatorStack.template Top() != kLeftParenthesis) + if (!Eval(operandStack, *operatorStack.template Pop(1))) + return; + if (operatorStack.Empty()) + return; + operatorStack.template Pop(1); + atomCountStack.template Pop(1); + ImplicitConcatenation(atomCountStack, operatorStack); + break; + + case '?': + if (!Eval(operandStack, kZeroOrOne)) + return; + break; + + case '*': + if (!Eval(operandStack, kZeroOrMore)) + return; + break; + + case '+': + if (!Eval(operandStack, kOneOrMore)) + return; + break; + + case '{': + { + unsigned n, m; + if (!ParseUnsigned(ds, &n)) + return; + + if (ds.Peek() == ',') { + ds.Take(); + if (ds.Peek() == '}') + m = kInfinityQuantifier; + else if (!ParseUnsigned(ds, &m) || m < n) + return; + } + else + m = n; + + if (!EvalQuantifier(operandStack, n, m) || ds.Peek() != '}') + return; + ds.Take(); + } + break; + + case '.': + PushOperand(operandStack, kAnyCharacterClass); + ImplicitConcatenation(atomCountStack, operatorStack); + break; + + case '[': + { + SizeType range; + if (!ParseRange(ds, &range)) + return; + SizeType s = NewState(kRegexInvalidState, kRegexInvalidState, kRangeCharacterClass); + GetState(s).rangeStart = range; + *operandStack.template Push() = Frag(s, s, s); + } + ImplicitConcatenation(atomCountStack, operatorStack); + break; + + case '\\': // Escape character + if (!CharacterEscape(ds, &codepoint)) + return; // Unsupported escape character + // fall through to default + + default: // Pattern character + PushOperand(operandStack, codepoint); + ImplicitConcatenation(atomCountStack, operatorStack); + } + } + + while (!operatorStack.Empty()) + if (!Eval(operandStack, *operatorStack.template Pop(1))) + return; + + // Link the operand to matching state. + if (operandStack.GetSize() == sizeof(Frag)) { + Frag* e = operandStack.template Pop(1); + Patch(e->out, NewState(kRegexInvalidState, kRegexInvalidState, 0)); + root_ = e->start; + +#if RAPIDJSON_REGEX_VERBOSE + printf("root: %d\n", root_); + for (SizeType i = 0; i < stateCount_ ; i++) { + State& s = GetState(i); + printf("[%2d] out: %2d out1: %2d c: '%c'\n", i, s.out, s.out1, (char)s.codepoint); + } + printf("\n"); +#endif + } + + // Preallocate buffer for SearchWithAnchoring() + RAPIDJSON_ASSERT(stateSet_ == 0); + if (stateCount_ > 0) { + stateSet_ = static_cast(states_.GetAllocator().Malloc(GetStateSetSize())); + state0_.template Reserve(stateCount_); + state1_.template Reserve(stateCount_); + } + } + + SizeType NewState(SizeType out, SizeType out1, unsigned codepoint) { + State* s = states_.template Push(); + s->out = out; + s->out1 = out1; + s->codepoint = codepoint; + s->rangeStart = kRegexInvalidRange; + return stateCount_++; + } + + void PushOperand(Stack& operandStack, unsigned codepoint) { + SizeType s = NewState(kRegexInvalidState, kRegexInvalidState, codepoint); + *operandStack.template Push() = Frag(s, s, s); + } + + void ImplicitConcatenation(Stack& atomCountStack, Stack& operatorStack) { + if (*atomCountStack.template Top()) + *operatorStack.template Push() = kConcatenation; + (*atomCountStack.template Top())++; + } + + SizeType Append(SizeType l1, SizeType l2) { + SizeType old = l1; + while (GetState(l1).out != kRegexInvalidState) + l1 = GetState(l1).out; + GetState(l1).out = l2; + return old; + } + + void Patch(SizeType l, SizeType s) { + for (SizeType next; l != kRegexInvalidState; l = next) { + next = GetState(l).out; + GetState(l).out = s; + } + } + + bool Eval(Stack& operandStack, Operator op) { + switch (op) { + case kConcatenation: + RAPIDJSON_ASSERT(operandStack.GetSize() >= sizeof(Frag) * 2); + { + Frag e2 = *operandStack.template Pop(1); + Frag e1 = *operandStack.template Pop(1); + Patch(e1.out, e2.start); + *operandStack.template Push() = Frag(e1.start, e2.out, Min(e1.minIndex, e2.minIndex)); + } + return true; + + case kAlternation: + if (operandStack.GetSize() >= sizeof(Frag) * 2) { + Frag e2 = *operandStack.template Pop(1); + Frag e1 = *operandStack.template Pop(1); + SizeType s = NewState(e1.start, e2.start, 0); + *operandStack.template Push() = Frag(s, Append(e1.out, e2.out), Min(e1.minIndex, e2.minIndex)); + return true; + } + return false; + + case kZeroOrOne: + if (operandStack.GetSize() >= sizeof(Frag)) { + Frag e = *operandStack.template Pop(1); + SizeType s = NewState(kRegexInvalidState, e.start, 0); + *operandStack.template Push() = Frag(s, Append(e.out, s), e.minIndex); + return true; + } + return false; + + case kZeroOrMore: + if (operandStack.GetSize() >= sizeof(Frag)) { + Frag e = *operandStack.template Pop(1); + SizeType s = NewState(kRegexInvalidState, e.start, 0); + Patch(e.out, s); + *operandStack.template Push() = Frag(s, s, e.minIndex); + return true; + } + return false; + + default: + RAPIDJSON_ASSERT(op == kOneOrMore); + if (operandStack.GetSize() >= sizeof(Frag)) { + Frag e = *operandStack.template Pop(1); + SizeType s = NewState(kRegexInvalidState, e.start, 0); + Patch(e.out, s); + *operandStack.template Push() = Frag(e.start, s, e.minIndex); + return true; + } + return false; + } + } + + bool EvalQuantifier(Stack& operandStack, unsigned n, unsigned m) { + RAPIDJSON_ASSERT(n <= m); + RAPIDJSON_ASSERT(operandStack.GetSize() >= sizeof(Frag)); + + if (n == 0) { + if (m == 0) // a{0} not support + return false; + else if (m == kInfinityQuantifier) + Eval(operandStack, kZeroOrMore); // a{0,} -> a* + else { + Eval(operandStack, kZeroOrOne); // a{0,5} -> a? + for (unsigned i = 0; i < m - 1; i++) + CloneTopOperand(operandStack); // a{0,5} -> a? a? a? a? a? + for (unsigned i = 0; i < m - 1; i++) + Eval(operandStack, kConcatenation); // a{0,5} -> a?a?a?a?a? + } + return true; + } + + for (unsigned i = 0; i < n - 1; i++) // a{3} -> a a a + CloneTopOperand(operandStack); + + if (m == kInfinityQuantifier) + Eval(operandStack, kOneOrMore); // a{3,} -> a a a+ + else if (m > n) { + CloneTopOperand(operandStack); // a{3,5} -> a a a a + Eval(operandStack, kZeroOrOne); // a{3,5} -> a a a a? + for (unsigned i = n; i < m - 1; i++) + CloneTopOperand(operandStack); // a{3,5} -> a a a a? a? + for (unsigned i = n; i < m; i++) + Eval(operandStack, kConcatenation); // a{3,5} -> a a aa?a? + } + + for (unsigned i = 0; i < n - 1; i++) + Eval(operandStack, kConcatenation); // a{3} -> aaa, a{3,} -> aaa+, a{3.5} -> aaaa?a? + + return true; + } + + static SizeType Min(SizeType a, SizeType b) { return a < b ? a : b; } + + void CloneTopOperand(Stack& operandStack) { + const Frag src = *operandStack.template Top(); // Copy constructor to prevent invalidation + SizeType count = stateCount_ - src.minIndex; // Assumes top operand contains states in [src->minIndex, stateCount_) + State* s = states_.template Push(count); + memcpy(s, &GetState(src.minIndex), count * sizeof(State)); + for (SizeType j = 0; j < count; j++) { + if (s[j].out != kRegexInvalidState) + s[j].out += count; + if (s[j].out1 != kRegexInvalidState) + s[j].out1 += count; + } + *operandStack.template Push() = Frag(src.start + count, src.out + count, src.minIndex + count); + stateCount_ += count; + } + + template + bool ParseUnsigned(DecodedStream& ds, unsigned* u) { + unsigned r = 0; + if (ds.Peek() < '0' || ds.Peek() > '9') + return false; + while (ds.Peek() >= '0' && ds.Peek() <= '9') { + if (r >= 429496729 && ds.Peek() > '5') // 2^32 - 1 = 4294967295 + return false; // overflow + r = r * 10 + (ds.Take() - '0'); + } + *u = r; + return true; + } + + template + bool ParseRange(DecodedStream& ds, SizeType* range) { + bool isBegin = true; + bool negate = false; + int step = 0; + SizeType start = kRegexInvalidRange; + SizeType current = kRegexInvalidRange; + unsigned codepoint; + while ((codepoint = ds.Take()) != 0) { + if (isBegin) { + isBegin = false; + if (codepoint == '^') { + negate = true; + continue; + } + } + + switch (codepoint) { + case ']': + if (start == kRegexInvalidRange) + return false; // Error: nothing inside [] + if (step == 2) { // Add trailing '-' + SizeType r = NewRange('-'); + RAPIDJSON_ASSERT(current != kRegexInvalidRange); + GetRange(current).next = r; + } + if (negate) + GetRange(start).start |= kRangeNegationFlag; + *range = start; + return true; + + case '\\': + if (ds.Peek() == 'b') { + ds.Take(); + codepoint = 0x0008; // Escape backspace character + } + else if (!CharacterEscape(ds, &codepoint)) + return false; + // fall through to default + + default: + switch (step) { + case 1: + if (codepoint == '-') { + step++; + break; + } + // fall through to step 0 for other characters + + case 0: + { + SizeType r = NewRange(codepoint); + if (current != kRegexInvalidRange) + GetRange(current).next = r; + if (start == kRegexInvalidRange) + start = r; + current = r; + } + step = 1; + break; + + default: + RAPIDJSON_ASSERT(step == 2); + GetRange(current).end = codepoint; + step = 0; + } + } + } + return false; + } + + SizeType NewRange(unsigned codepoint) { + Range* r = ranges_.template Push(); + r->start = r->end = codepoint; + r->next = kRegexInvalidRange; + return rangeCount_++; + } + + template + bool CharacterEscape(DecodedStream& ds, unsigned* escapedCodepoint) { + unsigned codepoint; + switch (codepoint = ds.Take()) { + case '^': + case '$': + case '|': + case '(': + case ')': + case '?': + case '*': + case '+': + case '.': + case '[': + case ']': + case '{': + case '}': + case '\\': + *escapedCodepoint = codepoint; return true; + case 'f': *escapedCodepoint = 0x000C; return true; + case 'n': *escapedCodepoint = 0x000A; return true; + case 'r': *escapedCodepoint = 0x000D; return true; + case 't': *escapedCodepoint = 0x0009; return true; + case 'v': *escapedCodepoint = 0x000B; return true; + default: + return false; // Unsupported escape character + } + } + + template + bool SearchWithAnchoring(InputStream& is, bool anchorBegin, bool anchorEnd) const { + RAPIDJSON_ASSERT(IsValid()); + DecodedStream ds(is); + + state0_.Clear(); + Stack *current = &state0_, *next = &state1_; + const size_t stateSetSize = GetStateSetSize(); + std::memset(stateSet_, 0, stateSetSize); + + bool matched = AddState(*current, root_); + unsigned codepoint; + while (!current->Empty() && (codepoint = ds.Take()) != 0) { + std::memset(stateSet_, 0, stateSetSize); + next->Clear(); + matched = false; + for (const SizeType* s = current->template Bottom(); s != current->template End(); ++s) { + const State& sr = GetState(*s); + if (sr.codepoint == codepoint || + sr.codepoint == kAnyCharacterClass || + (sr.codepoint == kRangeCharacterClass && MatchRange(sr.rangeStart, codepoint))) + { + matched = AddState(*next, sr.out) || matched; + if (!anchorEnd && matched) + return true; + } + if (!anchorBegin) + AddState(*next, root_); + } + internal::Swap(current, next); + } + + return matched; + } + + size_t GetStateSetSize() const { + return (stateCount_ + 31) / 32 * 4; + } + + // Return whether the added states is a match state + bool AddState(Stack& l, SizeType index) const { + RAPIDJSON_ASSERT(index != kRegexInvalidState); + + const State& s = GetState(index); + if (s.out1 != kRegexInvalidState) { // Split + bool matched = AddState(l, s.out); + return AddState(l, s.out1) || matched; + } + else if (!(stateSet_[index >> 5] & (1 << (index & 31)))) { + stateSet_[index >> 5] |= (1 << (index & 31)); + *l.template PushUnsafe() = index; + } + return s.out == kRegexInvalidState; // by using PushUnsafe() above, we can ensure s is not validated due to reallocation. + } + + bool MatchRange(SizeType rangeIndex, unsigned codepoint) const { + bool yes = (GetRange(rangeIndex).start & kRangeNegationFlag) == 0; + while (rangeIndex != kRegexInvalidRange) { + const Range& r = GetRange(rangeIndex); + if (codepoint >= (r.start & ~kRangeNegationFlag) && codepoint <= r.end) + return yes; + rangeIndex = r.next; + } + return !yes; + } + + Stack states_; + Stack ranges_; + SizeType root_; + SizeType stateCount_; + SizeType rangeCount_; + + static const unsigned kInfinityQuantifier = ~0u; + + // For SearchWithAnchoring() + uint32_t* stateSet_; // allocated by states_.GetAllocator() + mutable Stack state0_; + mutable Stack state1_; + bool anchorBegin_; + bool anchorEnd_; +}; + +typedef GenericRegex > Regex; + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +#ifdef _MSC_VER +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_INTERNAL_REGEX_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/stack.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/stack.h new file mode 100644 index 0000000..022c9aa --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/stack.h @@ -0,0 +1,230 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_INTERNAL_STACK_H_ +#define RAPIDJSON_INTERNAL_STACK_H_ + +#include "../allocators.h" +#include "swap.h" + +#if defined(__clang__) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(c++98-compat) +#endif + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +/////////////////////////////////////////////////////////////////////////////// +// Stack + +//! A type-unsafe stack for storing different types of data. +/*! \tparam Allocator Allocator for allocating stack memory. +*/ +template +class Stack { +public: + // Optimization note: Do not allocate memory for stack_ in constructor. + // Do it lazily when first Push() -> Expand() -> Resize(). + Stack(Allocator* allocator, size_t stackCapacity) : allocator_(allocator), ownAllocator_(0), stack_(0), stackTop_(0), stackEnd_(0), initialCapacity_(stackCapacity) { + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + Stack(Stack&& rhs) + : allocator_(rhs.allocator_), + ownAllocator_(rhs.ownAllocator_), + stack_(rhs.stack_), + stackTop_(rhs.stackTop_), + stackEnd_(rhs.stackEnd_), + initialCapacity_(rhs.initialCapacity_) + { + rhs.allocator_ = 0; + rhs.ownAllocator_ = 0; + rhs.stack_ = 0; + rhs.stackTop_ = 0; + rhs.stackEnd_ = 0; + rhs.initialCapacity_ = 0; + } +#endif + + ~Stack() { + Destroy(); + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + Stack& operator=(Stack&& rhs) { + if (&rhs != this) + { + Destroy(); + + allocator_ = rhs.allocator_; + ownAllocator_ = rhs.ownAllocator_; + stack_ = rhs.stack_; + stackTop_ = rhs.stackTop_; + stackEnd_ = rhs.stackEnd_; + initialCapacity_ = rhs.initialCapacity_; + + rhs.allocator_ = 0; + rhs.ownAllocator_ = 0; + rhs.stack_ = 0; + rhs.stackTop_ = 0; + rhs.stackEnd_ = 0; + rhs.initialCapacity_ = 0; + } + return *this; + } +#endif + + void Swap(Stack& rhs) RAPIDJSON_NOEXCEPT { + internal::Swap(allocator_, rhs.allocator_); + internal::Swap(ownAllocator_, rhs.ownAllocator_); + internal::Swap(stack_, rhs.stack_); + internal::Swap(stackTop_, rhs.stackTop_); + internal::Swap(stackEnd_, rhs.stackEnd_); + internal::Swap(initialCapacity_, rhs.initialCapacity_); + } + + void Clear() { stackTop_ = stack_; } + + void ShrinkToFit() { + if (Empty()) { + // If the stack is empty, completely deallocate the memory. + Allocator::Free(stack_); + stack_ = 0; + stackTop_ = 0; + stackEnd_ = 0; + } + else + Resize(GetSize()); + } + + // Optimization note: try to minimize the size of this function for force inline. + // Expansion is run very infrequently, so it is moved to another (probably non-inline) function. + template + RAPIDJSON_FORCEINLINE void Reserve(size_t count = 1) { + // Expand the stack if needed + if (RAPIDJSON_UNLIKELY(stackTop_ + sizeof(T) * count > stackEnd_)) + Expand(count); + } + + template + RAPIDJSON_FORCEINLINE T* Push(size_t count = 1) { + Reserve(count); + return PushUnsafe(count); + } + + template + RAPIDJSON_FORCEINLINE T* PushUnsafe(size_t count = 1) { + RAPIDJSON_ASSERT(stackTop_ + sizeof(T) * count <= stackEnd_); + T* ret = reinterpret_cast(stackTop_); + stackTop_ += sizeof(T) * count; + return ret; + } + + template + T* Pop(size_t count) { + RAPIDJSON_ASSERT(GetSize() >= count * sizeof(T)); + stackTop_ -= count * sizeof(T); + return reinterpret_cast(stackTop_); + } + + template + T* Top() { + RAPIDJSON_ASSERT(GetSize() >= sizeof(T)); + return reinterpret_cast(stackTop_ - sizeof(T)); + } + + template + const T* Top() const { + RAPIDJSON_ASSERT(GetSize() >= sizeof(T)); + return reinterpret_cast(stackTop_ - sizeof(T)); + } + + template + T* End() { return reinterpret_cast(stackTop_); } + + template + const T* End() const { return reinterpret_cast(stackTop_); } + + template + T* Bottom() { return reinterpret_cast(stack_); } + + template + const T* Bottom() const { return reinterpret_cast(stack_); } + + bool HasAllocator() const { + return allocator_ != 0; + } + + Allocator& GetAllocator() { + RAPIDJSON_ASSERT(allocator_); + return *allocator_; + } + + bool Empty() const { return stackTop_ == stack_; } + size_t GetSize() const { return static_cast(stackTop_ - stack_); } + size_t GetCapacity() const { return static_cast(stackEnd_ - stack_); } + +private: + template + void Expand(size_t count) { + // Only expand the capacity if the current stack exists. Otherwise just create a stack with initial capacity. + size_t newCapacity; + if (stack_ == 0) { + if (!allocator_) + ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator()); + newCapacity = initialCapacity_; + } else { + newCapacity = GetCapacity(); + newCapacity += (newCapacity + 1) / 2; + } + size_t newSize = GetSize() + sizeof(T) * count; + if (newCapacity < newSize) + newCapacity = newSize; + + Resize(newCapacity); + } + + void Resize(size_t newCapacity) { + const size_t size = GetSize(); // Backup the current size + stack_ = static_cast(allocator_->Realloc(stack_, GetCapacity(), newCapacity)); + stackTop_ = stack_ + size; + stackEnd_ = stack_ + newCapacity; + } + + void Destroy() { + Allocator::Free(stack_); + RAPIDJSON_DELETE(ownAllocator_); // Only delete if it is owned by the stack + } + + // Prohibit copy constructor & assignment operator. + Stack(const Stack&); + Stack& operator=(const Stack&); + + Allocator* allocator_; + Allocator* ownAllocator_; + char *stack_; + char *stackTop_; + char *stackEnd_; + size_t initialCapacity_; +}; + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#if defined(__clang__) +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_STACK_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/strfunc.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/strfunc.h new file mode 100644 index 0000000..2edfae5 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/strfunc.h @@ -0,0 +1,55 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_INTERNAL_STRFUNC_H_ +#define RAPIDJSON_INTERNAL_STRFUNC_H_ + +#include "../stream.h" + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +//! Custom strlen() which works on different character types. +/*! \tparam Ch Character type (e.g. char, wchar_t, short) + \param s Null-terminated input string. + \return Number of characters in the string. + \note This has the same semantics as strlen(), the return value is not number of Unicode codepoints. +*/ +template +inline SizeType StrLen(const Ch* s) { + const Ch* p = s; + while (*p) ++p; + return SizeType(p - s); +} + +//! Returns number of code points in a encoded string. +template +bool CountStringCodePoint(const typename Encoding::Ch* s, SizeType length, SizeType* outCount) { + GenericStringStream is(s); + const typename Encoding::Ch* end = s + length; + SizeType count = 0; + while (is.src_ < end) { + unsigned codepoint; + if (!Encoding::Decode(is, &codepoint)) + return false; + count++; + } + *outCount = count; + return true; +} + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_INTERNAL_STRFUNC_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/strtod.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/strtod.h new file mode 100644 index 0000000..289c413 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/strtod.h @@ -0,0 +1,269 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_STRTOD_ +#define RAPIDJSON_STRTOD_ + +#include "ieee754.h" +#include "biginteger.h" +#include "diyfp.h" +#include "pow10.h" + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +inline double FastPath(double significand, int exp) { + if (exp < -308) + return 0.0; + else if (exp >= 0) + return significand * internal::Pow10(exp); + else + return significand / internal::Pow10(-exp); +} + +inline double StrtodNormalPrecision(double d, int p) { + if (p < -308) { + // Prevent expSum < -308, making Pow10(p) = 0 + d = FastPath(d, -308); + d = FastPath(d, p + 308); + } + else + d = FastPath(d, p); + return d; +} + +template +inline T Min3(T a, T b, T c) { + T m = a; + if (m > b) m = b; + if (m > c) m = c; + return m; +} + +inline int CheckWithinHalfULP(double b, const BigInteger& d, int dExp) { + const Double db(b); + const uint64_t bInt = db.IntegerSignificand(); + const int bExp = db.IntegerExponent(); + const int hExp = bExp - 1; + + int dS_Exp2 = 0, dS_Exp5 = 0, bS_Exp2 = 0, bS_Exp5 = 0, hS_Exp2 = 0, hS_Exp5 = 0; + + // Adjust for decimal exponent + if (dExp >= 0) { + dS_Exp2 += dExp; + dS_Exp5 += dExp; + } + else { + bS_Exp2 -= dExp; + bS_Exp5 -= dExp; + hS_Exp2 -= dExp; + hS_Exp5 -= dExp; + } + + // Adjust for binary exponent + if (bExp >= 0) + bS_Exp2 += bExp; + else { + dS_Exp2 -= bExp; + hS_Exp2 -= bExp; + } + + // Adjust for half ulp exponent + if (hExp >= 0) + hS_Exp2 += hExp; + else { + dS_Exp2 -= hExp; + bS_Exp2 -= hExp; + } + + // Remove common power of two factor from all three scaled values + int common_Exp2 = Min3(dS_Exp2, bS_Exp2, hS_Exp2); + dS_Exp2 -= common_Exp2; + bS_Exp2 -= common_Exp2; + hS_Exp2 -= common_Exp2; + + BigInteger dS = d; + dS.MultiplyPow5(static_cast(dS_Exp5)) <<= static_cast(dS_Exp2); + + BigInteger bS(bInt); + bS.MultiplyPow5(static_cast(bS_Exp5)) <<= static_cast(bS_Exp2); + + BigInteger hS(1); + hS.MultiplyPow5(static_cast(hS_Exp5)) <<= static_cast(hS_Exp2); + + BigInteger delta(0); + dS.Difference(bS, &delta); + + return delta.Compare(hS); +} + +inline bool StrtodFast(double d, int p, double* result) { + // Use fast path for string-to-double conversion if possible + // see http://www.exploringbinary.com/fast-path-decimal-to-floating-point-conversion/ + if (p > 22 && p < 22 + 16) { + // Fast Path Cases In Disguise + d *= internal::Pow10(p - 22); + p = 22; + } + + if (p >= -22 && p <= 22 && d <= 9007199254740991.0) { // 2^53 - 1 + *result = FastPath(d, p); + return true; + } + else + return false; +} + +// Compute an approximation and see if it is within 1/2 ULP +inline bool StrtodDiyFp(const char* decimals, size_t length, size_t decimalPosition, int exp, double* result) { + uint64_t significand = 0; + size_t i = 0; // 2^64 - 1 = 18446744073709551615, 1844674407370955161 = 0x1999999999999999 + for (; i < length; i++) { + if (significand > RAPIDJSON_UINT64_C2(0x19999999, 0x99999999) || + (significand == RAPIDJSON_UINT64_C2(0x19999999, 0x99999999) && decimals[i] > '5')) + break; + significand = significand * 10u + static_cast(decimals[i] - '0'); + } + + if (i < length && decimals[i] >= '5') // Rounding + significand++; + + size_t remaining = length - i; + const unsigned kUlpShift = 3; + const unsigned kUlp = 1 << kUlpShift; + int64_t error = (remaining == 0) ? 0 : kUlp / 2; + + DiyFp v(significand, 0); + v = v.Normalize(); + error <<= -v.e; + + const int dExp = static_cast(decimalPosition) - static_cast(i) + exp; + + int actualExp; + DiyFp cachedPower = GetCachedPower10(dExp, &actualExp); + if (actualExp != dExp) { + static const DiyFp kPow10[] = { + DiyFp(RAPIDJSON_UINT64_C2(0xa0000000, 00000000), -60), // 10^1 + DiyFp(RAPIDJSON_UINT64_C2(0xc8000000, 00000000), -57), // 10^2 + DiyFp(RAPIDJSON_UINT64_C2(0xfa000000, 00000000), -54), // 10^3 + DiyFp(RAPIDJSON_UINT64_C2(0x9c400000, 00000000), -50), // 10^4 + DiyFp(RAPIDJSON_UINT64_C2(0xc3500000, 00000000), -47), // 10^5 + DiyFp(RAPIDJSON_UINT64_C2(0xf4240000, 00000000), -44), // 10^6 + DiyFp(RAPIDJSON_UINT64_C2(0x98968000, 00000000), -40) // 10^7 + }; + int adjustment = dExp - actualExp - 1; + RAPIDJSON_ASSERT(adjustment >= 0 && adjustment < 7); + v = v * kPow10[adjustment]; + if (length + static_cast(adjustment)> 19u) // has more digits than decimal digits in 64-bit + error += kUlp / 2; + } + + v = v * cachedPower; + + error += kUlp + (error == 0 ? 0 : 1); + + const int oldExp = v.e; + v = v.Normalize(); + error <<= oldExp - v.e; + + const unsigned effectiveSignificandSize = Double::EffectiveSignificandSize(64 + v.e); + unsigned precisionSize = 64 - effectiveSignificandSize; + if (precisionSize + kUlpShift >= 64) { + unsigned scaleExp = (precisionSize + kUlpShift) - 63; + v.f >>= scaleExp; + v.e += scaleExp; + error = (error >> scaleExp) + 1 + static_cast(kUlp); + precisionSize -= scaleExp; + } + + DiyFp rounded(v.f >> precisionSize, v.e + static_cast(precisionSize)); + const uint64_t precisionBits = (v.f & ((uint64_t(1) << precisionSize) - 1)) * kUlp; + const uint64_t halfWay = (uint64_t(1) << (precisionSize - 1)) * kUlp; + if (precisionBits >= halfWay + static_cast(error)) { + rounded.f++; + if (rounded.f & (DiyFp::kDpHiddenBit << 1)) { // rounding overflows mantissa (issue #340) + rounded.f >>= 1; + rounded.e++; + } + } + + *result = rounded.ToDouble(); + + return halfWay - static_cast(error) >= precisionBits || precisionBits >= halfWay + static_cast(error); +} + +inline double StrtodBigInteger(double approx, const char* decimals, size_t length, size_t decimalPosition, int exp) { + const BigInteger dInt(decimals, length); + const int dExp = static_cast(decimalPosition) - static_cast(length) + exp; + Double a(approx); + int cmp = CheckWithinHalfULP(a.Value(), dInt, dExp); + if (cmp < 0) + return a.Value(); // within half ULP + else if (cmp == 0) { + // Round towards even + if (a.Significand() & 1) + return a.NextPositiveDouble(); + else + return a.Value(); + } + else // adjustment + return a.NextPositiveDouble(); +} + +inline double StrtodFullPrecision(double d, int p, const char* decimals, size_t length, size_t decimalPosition, int exp) { + RAPIDJSON_ASSERT(d >= 0.0); + RAPIDJSON_ASSERT(length >= 1); + + double result; + if (StrtodFast(d, p, &result)) + return result; + + // Trim leading zeros + while (*decimals == '0' && length > 1) { + length--; + decimals++; + decimalPosition--; + } + + // Trim trailing zeros + while (decimals[length - 1] == '0' && length > 1) { + length--; + decimalPosition--; + exp++; + } + + // Trim right-most digits + const int kMaxDecimalDigit = 780; + if (static_cast(length) > kMaxDecimalDigit) { + int delta = (static_cast(length) - kMaxDecimalDigit); + exp += delta; + decimalPosition -= static_cast(delta); + length = kMaxDecimalDigit; + } + + // If too small, underflow to zero + if (int(length) + exp < -324) + return 0.0; + + if (StrtodDiyFp(decimals, length, decimalPosition, exp, &result)) + return result; + + // Use approximation from StrtodDiyFp and make adjustment with BigInteger comparison + return StrtodBigInteger(result, decimals, length, decimalPosition, exp); +} + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_STRTOD_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/swap.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/swap.h new file mode 100644 index 0000000..666e49f --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/swap.h @@ -0,0 +1,46 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_INTERNAL_SWAP_H_ +#define RAPIDJSON_INTERNAL_SWAP_H_ + +#include "../rapidjson.h" + +#if defined(__clang__) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(c++98-compat) +#endif + +RAPIDJSON_NAMESPACE_BEGIN +namespace internal { + +//! Custom swap() to avoid dependency on C++ header +/*! \tparam T Type of the arguments to swap, should be instantiated with primitive C++ types only. + \note This has the same semantics as std::swap(). +*/ +template +inline void Swap(T& a, T& b) RAPIDJSON_NOEXCEPT { + T tmp = a; + a = b; + b = tmp; +} + +} // namespace internal +RAPIDJSON_NAMESPACE_END + +#if defined(__clang__) +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_INTERNAL_SWAP_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/istreamwrapper.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/istreamwrapper.h new file mode 100644 index 0000000..f5fe289 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/istreamwrapper.h @@ -0,0 +1,115 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_ISTREAMWRAPPER_H_ +#define RAPIDJSON_ISTREAMWRAPPER_H_ + +#include "stream.h" +#include + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +#endif + +#ifdef _MSC_VER +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(4351) // new behavior: elements of array 'array' will be default initialized +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! Wrapper of \c std::basic_istream into RapidJSON's Stream concept. +/*! + The classes can be wrapped including but not limited to: + + - \c std::istringstream + - \c std::stringstream + - \c std::wistringstream + - \c std::wstringstream + - \c std::ifstream + - \c std::fstream + - \c std::wifstream + - \c std::wfstream + + \tparam StreamType Class derived from \c std::basic_istream. +*/ + +template +class BasicIStreamWrapper { +public: + typedef typename StreamType::char_type Ch; + BasicIStreamWrapper(StreamType& stream) : stream_(stream), count_(), peekBuffer_() {} + + Ch Peek() const { + typename StreamType::int_type c = stream_.peek(); + return RAPIDJSON_LIKELY(c != StreamType::traits_type::eof()) ? static_cast(c) : '\0'; + } + + Ch Take() { + typename StreamType::int_type c = stream_.get(); + if (RAPIDJSON_LIKELY(c != StreamType::traits_type::eof())) { + count_++; + return static_cast(c); + } + else + return '\0'; + } + + // tellg() may return -1 when failed. So we count by ourself. + size_t Tell() const { return count_; } + + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + void Put(Ch) { RAPIDJSON_ASSERT(false); } + void Flush() { RAPIDJSON_ASSERT(false); } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + + // For encoding detection only. + const Ch* Peek4() const { + RAPIDJSON_ASSERT(sizeof(Ch) == 1); // Only usable for byte stream. + int i; + bool hasError = false; + for (i = 0; i < 4; ++i) { + typename StreamType::int_type c = stream_.get(); + if (c == StreamType::traits_type::eof()) { + hasError = true; + stream_.clear(); + break; + } + peekBuffer_[i] = static_cast(c); + } + for (--i; i >= 0; --i) + stream_.putback(peekBuffer_[i]); + return !hasError ? peekBuffer_ : 0; + } + +private: + BasicIStreamWrapper(const BasicIStreamWrapper&); + BasicIStreamWrapper& operator=(const BasicIStreamWrapper&); + + StreamType& stream_; + size_t count_; //!< Number of characters read. Note: + mutable Ch peekBuffer_[4]; +}; + +typedef BasicIStreamWrapper IStreamWrapper; +typedef BasicIStreamWrapper WIStreamWrapper; + +#if defined(__clang__) || defined(_MSC_VER) +RAPIDJSON_DIAG_POP +#endif + +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_ISTREAMWRAPPER_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/memorybuffer.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/memorybuffer.h new file mode 100644 index 0000000..39bee1d --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/memorybuffer.h @@ -0,0 +1,70 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_MEMORYBUFFER_H_ +#define RAPIDJSON_MEMORYBUFFER_H_ + +#include "stream.h" +#include "internal/stack.h" + +RAPIDJSON_NAMESPACE_BEGIN + +//! Represents an in-memory output byte stream. +/*! + This class is mainly for being wrapped by EncodedOutputStream or AutoUTFOutputStream. + + It is similar to FileWriteBuffer but the destination is an in-memory buffer instead of a file. + + Differences between MemoryBuffer and StringBuffer: + 1. StringBuffer has Encoding but MemoryBuffer is only a byte buffer. + 2. StringBuffer::GetString() returns a null-terminated string. MemoryBuffer::GetBuffer() returns a buffer without terminator. + + \tparam Allocator type for allocating memory buffer. + \note implements Stream concept +*/ +template +struct GenericMemoryBuffer { + typedef char Ch; // byte + + GenericMemoryBuffer(Allocator* allocator = 0, size_t capacity = kDefaultCapacity) : stack_(allocator, capacity) {} + + void Put(Ch c) { *stack_.template Push() = c; } + void Flush() {} + + void Clear() { stack_.Clear(); } + void ShrinkToFit() { stack_.ShrinkToFit(); } + Ch* Push(size_t count) { return stack_.template Push(count); } + void Pop(size_t count) { stack_.template Pop(count); } + + const Ch* GetBuffer() const { + return stack_.template Bottom(); + } + + size_t GetSize() const { return stack_.GetSize(); } + + static const size_t kDefaultCapacity = 256; + mutable internal::Stack stack_; +}; + +typedef GenericMemoryBuffer<> MemoryBuffer; + +//! Implement specialized version of PutN() with memset() for better performance. +template<> +inline void PutN(MemoryBuffer& memoryBuffer, char c, size_t n) { + std::memset(memoryBuffer.stack_.Push(n), c, n * sizeof(c)); +} + +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_MEMORYBUFFER_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/memorystream.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/memorystream.h new file mode 100644 index 0000000..1d71d8a --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/memorystream.h @@ -0,0 +1,71 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_MEMORYSTREAM_H_ +#define RAPIDJSON_MEMORYSTREAM_H_ + +#include "stream.h" + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(unreachable-code) +RAPIDJSON_DIAG_OFF(missing-noreturn) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! Represents an in-memory input byte stream. +/*! + This class is mainly for being wrapped by EncodedInputStream or AutoUTFInputStream. + + It is similar to FileReadBuffer but the source is an in-memory buffer instead of a file. + + Differences between MemoryStream and StringStream: + 1. StringStream has encoding but MemoryStream is a byte stream. + 2. MemoryStream needs size of the source buffer and the buffer don't need to be null terminated. StringStream assume null-terminated string as source. + 3. MemoryStream supports Peek4() for encoding detection. StringStream is specified with an encoding so it should not have Peek4(). + \note implements Stream concept +*/ +struct MemoryStream { + typedef char Ch; // byte + + MemoryStream(const Ch *src, size_t size) : src_(src), begin_(src), end_(src + size), size_(size) {} + + Ch Peek() const { return RAPIDJSON_UNLIKELY(src_ == end_) ? '\0' : *src_; } + Ch Take() { return RAPIDJSON_UNLIKELY(src_ == end_) ? '\0' : *src_++; } + size_t Tell() const { return static_cast(src_ - begin_); } + + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + void Put(Ch) { RAPIDJSON_ASSERT(false); } + void Flush() { RAPIDJSON_ASSERT(false); } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + + // For encoding detection only. + const Ch* Peek4() const { + return Tell() + 4 <= size_ ? src_ : 0; + } + + const Ch* src_; //!< Current read position. + const Ch* begin_; //!< Original head of the string. + const Ch* end_; //!< End of stream. + size_t size_; //!< Size of the stream. +}; + +RAPIDJSON_NAMESPACE_END + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_MEMORYBUFFER_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/msinttypes/inttypes.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/msinttypes/inttypes.h new file mode 100644 index 0000000..1811128 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/msinttypes/inttypes.h @@ -0,0 +1,316 @@ +// ISO C9x compliant inttypes.h for Microsoft Visual Studio +// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 +// +// Copyright (c) 2006-2013 Alexander Chemeris +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the product nor the names of its contributors may +// be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +/////////////////////////////////////////////////////////////////////////////// + +// The above software in this distribution may have been modified by +// THL A29 Limited ("Tencent Modifications"). +// All Tencent Modifications are Copyright (C) 2015 THL A29 Limited. + +#ifndef _MSC_VER // [ +#error "Use this header only with Microsoft Visual C++ compilers!" +#endif // _MSC_VER ] + +#ifndef _MSC_INTTYPES_H_ // [ +#define _MSC_INTTYPES_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include "stdint.h" + +// miloyip: VC supports inttypes.h since VC2013 +#if _MSC_VER >= 1800 +#include +#else + +// 7.8 Format conversion of integer types + +typedef struct { + intmax_t quot; + intmax_t rem; +} imaxdiv_t; + +// 7.8.1 Macros for format specifiers + +#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198 + +// The fprintf macros for signed integers are: +#define PRId8 "d" +#define PRIi8 "i" +#define PRIdLEAST8 "d" +#define PRIiLEAST8 "i" +#define PRIdFAST8 "d" +#define PRIiFAST8 "i" + +#define PRId16 "hd" +#define PRIi16 "hi" +#define PRIdLEAST16 "hd" +#define PRIiLEAST16 "hi" +#define PRIdFAST16 "hd" +#define PRIiFAST16 "hi" + +#define PRId32 "I32d" +#define PRIi32 "I32i" +#define PRIdLEAST32 "I32d" +#define PRIiLEAST32 "I32i" +#define PRIdFAST32 "I32d" +#define PRIiFAST32 "I32i" + +#define PRId64 "I64d" +#define PRIi64 "I64i" +#define PRIdLEAST64 "I64d" +#define PRIiLEAST64 "I64i" +#define PRIdFAST64 "I64d" +#define PRIiFAST64 "I64i" + +#define PRIdMAX "I64d" +#define PRIiMAX "I64i" + +#define PRIdPTR "Id" +#define PRIiPTR "Ii" + +// The fprintf macros for unsigned integers are: +#define PRIo8 "o" +#define PRIu8 "u" +#define PRIx8 "x" +#define PRIX8 "X" +#define PRIoLEAST8 "o" +#define PRIuLEAST8 "u" +#define PRIxLEAST8 "x" +#define PRIXLEAST8 "X" +#define PRIoFAST8 "o" +#define PRIuFAST8 "u" +#define PRIxFAST8 "x" +#define PRIXFAST8 "X" + +#define PRIo16 "ho" +#define PRIu16 "hu" +#define PRIx16 "hx" +#define PRIX16 "hX" +#define PRIoLEAST16 "ho" +#define PRIuLEAST16 "hu" +#define PRIxLEAST16 "hx" +#define PRIXLEAST16 "hX" +#define PRIoFAST16 "ho" +#define PRIuFAST16 "hu" +#define PRIxFAST16 "hx" +#define PRIXFAST16 "hX" + +#define PRIo32 "I32o" +#define PRIu32 "I32u" +#define PRIx32 "I32x" +#define PRIX32 "I32X" +#define PRIoLEAST32 "I32o" +#define PRIuLEAST32 "I32u" +#define PRIxLEAST32 "I32x" +#define PRIXLEAST32 "I32X" +#define PRIoFAST32 "I32o" +#define PRIuFAST32 "I32u" +#define PRIxFAST32 "I32x" +#define PRIXFAST32 "I32X" + +#define PRIo64 "I64o" +#define PRIu64 "I64u" +#define PRIx64 "I64x" +#define PRIX64 "I64X" +#define PRIoLEAST64 "I64o" +#define PRIuLEAST64 "I64u" +#define PRIxLEAST64 "I64x" +#define PRIXLEAST64 "I64X" +#define PRIoFAST64 "I64o" +#define PRIuFAST64 "I64u" +#define PRIxFAST64 "I64x" +#define PRIXFAST64 "I64X" + +#define PRIoMAX "I64o" +#define PRIuMAX "I64u" +#define PRIxMAX "I64x" +#define PRIXMAX "I64X" + +#define PRIoPTR "Io" +#define PRIuPTR "Iu" +#define PRIxPTR "Ix" +#define PRIXPTR "IX" + +// The fscanf macros for signed integers are: +#define SCNd8 "d" +#define SCNi8 "i" +#define SCNdLEAST8 "d" +#define SCNiLEAST8 "i" +#define SCNdFAST8 "d" +#define SCNiFAST8 "i" + +#define SCNd16 "hd" +#define SCNi16 "hi" +#define SCNdLEAST16 "hd" +#define SCNiLEAST16 "hi" +#define SCNdFAST16 "hd" +#define SCNiFAST16 "hi" + +#define SCNd32 "ld" +#define SCNi32 "li" +#define SCNdLEAST32 "ld" +#define SCNiLEAST32 "li" +#define SCNdFAST32 "ld" +#define SCNiFAST32 "li" + +#define SCNd64 "I64d" +#define SCNi64 "I64i" +#define SCNdLEAST64 "I64d" +#define SCNiLEAST64 "I64i" +#define SCNdFAST64 "I64d" +#define SCNiFAST64 "I64i" + +#define SCNdMAX "I64d" +#define SCNiMAX "I64i" + +#ifdef _WIN64 // [ +# define SCNdPTR "I64d" +# define SCNiPTR "I64i" +#else // _WIN64 ][ +# define SCNdPTR "ld" +# define SCNiPTR "li" +#endif // _WIN64 ] + +// The fscanf macros for unsigned integers are: +#define SCNo8 "o" +#define SCNu8 "u" +#define SCNx8 "x" +#define SCNX8 "X" +#define SCNoLEAST8 "o" +#define SCNuLEAST8 "u" +#define SCNxLEAST8 "x" +#define SCNXLEAST8 "X" +#define SCNoFAST8 "o" +#define SCNuFAST8 "u" +#define SCNxFAST8 "x" +#define SCNXFAST8 "X" + +#define SCNo16 "ho" +#define SCNu16 "hu" +#define SCNx16 "hx" +#define SCNX16 "hX" +#define SCNoLEAST16 "ho" +#define SCNuLEAST16 "hu" +#define SCNxLEAST16 "hx" +#define SCNXLEAST16 "hX" +#define SCNoFAST16 "ho" +#define SCNuFAST16 "hu" +#define SCNxFAST16 "hx" +#define SCNXFAST16 "hX" + +#define SCNo32 "lo" +#define SCNu32 "lu" +#define SCNx32 "lx" +#define SCNX32 "lX" +#define SCNoLEAST32 "lo" +#define SCNuLEAST32 "lu" +#define SCNxLEAST32 "lx" +#define SCNXLEAST32 "lX" +#define SCNoFAST32 "lo" +#define SCNuFAST32 "lu" +#define SCNxFAST32 "lx" +#define SCNXFAST32 "lX" + +#define SCNo64 "I64o" +#define SCNu64 "I64u" +#define SCNx64 "I64x" +#define SCNX64 "I64X" +#define SCNoLEAST64 "I64o" +#define SCNuLEAST64 "I64u" +#define SCNxLEAST64 "I64x" +#define SCNXLEAST64 "I64X" +#define SCNoFAST64 "I64o" +#define SCNuFAST64 "I64u" +#define SCNxFAST64 "I64x" +#define SCNXFAST64 "I64X" + +#define SCNoMAX "I64o" +#define SCNuMAX "I64u" +#define SCNxMAX "I64x" +#define SCNXMAX "I64X" + +#ifdef _WIN64 // [ +# define SCNoPTR "I64o" +# define SCNuPTR "I64u" +# define SCNxPTR "I64x" +# define SCNXPTR "I64X" +#else // _WIN64 ][ +# define SCNoPTR "lo" +# define SCNuPTR "lu" +# define SCNxPTR "lx" +# define SCNXPTR "lX" +#endif // _WIN64 ] + +#endif // __STDC_FORMAT_MACROS ] + +// 7.8.2 Functions for greatest-width integer types + +// 7.8.2.1 The imaxabs function +#define imaxabs _abs64 + +// 7.8.2.2 The imaxdiv function + +// This is modified version of div() function from Microsoft's div.c found +// in %MSVC.NET%\crt\src\div.c +#ifdef STATIC_IMAXDIV // [ +static +#else // STATIC_IMAXDIV ][ +_inline +#endif // STATIC_IMAXDIV ] +imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom) +{ + imaxdiv_t result; + + result.quot = numer / denom; + result.rem = numer % denom; + + if (numer < 0 && result.rem > 0) { + // did division wrong; must fix up + ++result.quot; + result.rem -= denom; + } + + return result; +} + +// 7.8.2.3 The strtoimax and strtoumax functions +#define strtoimax _strtoi64 +#define strtoumax _strtoui64 + +// 7.8.2.4 The wcstoimax and wcstoumax functions +#define wcstoimax _wcstoi64 +#define wcstoumax _wcstoui64 + +#endif // _MSC_VER >= 1800 + +#endif // _MSC_INTTYPES_H_ ] diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/msinttypes/stdint.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/msinttypes/stdint.h new file mode 100644 index 0000000..3d4477b --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/msinttypes/stdint.h @@ -0,0 +1,300 @@ +// ISO C9x compliant stdint.h for Microsoft Visual Studio +// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 +// +// Copyright (c) 2006-2013 Alexander Chemeris +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the product nor the names of its contributors may +// be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +/////////////////////////////////////////////////////////////////////////////// + +// The above software in this distribution may have been modified by +// THL A29 Limited ("Tencent Modifications"). +// All Tencent Modifications are Copyright (C) 2015 THL A29 Limited. + +#ifndef _MSC_VER // [ +#error "Use this header only with Microsoft Visual C++ compilers!" +#endif // _MSC_VER ] + +#ifndef _MSC_STDINT_H_ // [ +#define _MSC_STDINT_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif + +// miloyip: Originally Visual Studio 2010 uses its own stdint.h. However it generates warning with INT64_C(), so change to use this file for vs2010. +#if _MSC_VER >= 1600 // [ +#include + +#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 + +#undef INT8_C +#undef INT16_C +#undef INT32_C +#undef INT64_C +#undef UINT8_C +#undef UINT16_C +#undef UINT32_C +#undef UINT64_C + +// 7.18.4.1 Macros for minimum-width integer constants + +#define INT8_C(val) val##i8 +#define INT16_C(val) val##i16 +#define INT32_C(val) val##i32 +#define INT64_C(val) val##i64 + +#define UINT8_C(val) val##ui8 +#define UINT16_C(val) val##ui16 +#define UINT32_C(val) val##ui32 +#define UINT64_C(val) val##ui64 + +// 7.18.4.2 Macros for greatest-width integer constants +// These #ifndef's are needed to prevent collisions with . +// Check out Issue 9 for the details. +#ifndef INTMAX_C // [ +# define INTMAX_C INT64_C +#endif // INTMAX_C ] +#ifndef UINTMAX_C // [ +# define UINTMAX_C UINT64_C +#endif // UINTMAX_C ] + +#endif // __STDC_CONSTANT_MACROS ] + +#else // ] _MSC_VER >= 1700 [ + +#include + +// For Visual Studio 6 in C++ mode and for many Visual Studio versions when +// compiling for ARM we have to wrap include with 'extern "C++" {}' +// or compiler would give many errors like this: +// error C2733: second C linkage of overloaded function 'wmemchr' not allowed +#if defined(__cplusplus) && !defined(_M_ARM) +extern "C" { +#endif +# include +#if defined(__cplusplus) && !defined(_M_ARM) +} +#endif + +// Define _W64 macros to mark types changing their size, like intptr_t. +#ifndef _W64 +# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 +# define _W64 __w64 +# else +# define _W64 +# endif +#endif + + +// 7.18.1 Integer types + +// 7.18.1.1 Exact-width integer types + +// Visual Studio 6 and Embedded Visual C++ 4 doesn't +// realize that, e.g. char has the same size as __int8 +// so we give up on __intX for them. +#if (_MSC_VER < 1300) + typedef signed char int8_t; + typedef signed short int16_t; + typedef signed int int32_t; + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; +#else + typedef signed __int8 int8_t; + typedef signed __int16 int16_t; + typedef signed __int32 int32_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; +#endif +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; + + +// 7.18.1.2 Minimum-width integer types +typedef int8_t int_least8_t; +typedef int16_t int_least16_t; +typedef int32_t int_least32_t; +typedef int64_t int_least64_t; +typedef uint8_t uint_least8_t; +typedef uint16_t uint_least16_t; +typedef uint32_t uint_least32_t; +typedef uint64_t uint_least64_t; + +// 7.18.1.3 Fastest minimum-width integer types +typedef int8_t int_fast8_t; +typedef int16_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef int64_t int_fast64_t; +typedef uint8_t uint_fast8_t; +typedef uint16_t uint_fast16_t; +typedef uint32_t uint_fast32_t; +typedef uint64_t uint_fast64_t; + +// 7.18.1.4 Integer types capable of holding object pointers +#ifdef _WIN64 // [ + typedef signed __int64 intptr_t; + typedef unsigned __int64 uintptr_t; +#else // _WIN64 ][ + typedef _W64 signed int intptr_t; + typedef _W64 unsigned int uintptr_t; +#endif // _WIN64 ] + +// 7.18.1.5 Greatest-width integer types +typedef int64_t intmax_t; +typedef uint64_t uintmax_t; + + +// 7.18.2 Limits of specified-width integer types + +#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 + +// 7.18.2.1 Limits of exact-width integer types +#define INT8_MIN ((int8_t)_I8_MIN) +#define INT8_MAX _I8_MAX +#define INT16_MIN ((int16_t)_I16_MIN) +#define INT16_MAX _I16_MAX +#define INT32_MIN ((int32_t)_I32_MIN) +#define INT32_MAX _I32_MAX +#define INT64_MIN ((int64_t)_I64_MIN) +#define INT64_MAX _I64_MAX +#define UINT8_MAX _UI8_MAX +#define UINT16_MAX _UI16_MAX +#define UINT32_MAX _UI32_MAX +#define UINT64_MAX _UI64_MAX + +// 7.18.2.2 Limits of minimum-width integer types +#define INT_LEAST8_MIN INT8_MIN +#define INT_LEAST8_MAX INT8_MAX +#define INT_LEAST16_MIN INT16_MIN +#define INT_LEAST16_MAX INT16_MAX +#define INT_LEAST32_MIN INT32_MIN +#define INT_LEAST32_MAX INT32_MAX +#define INT_LEAST64_MIN INT64_MIN +#define INT_LEAST64_MAX INT64_MAX +#define UINT_LEAST8_MAX UINT8_MAX +#define UINT_LEAST16_MAX UINT16_MAX +#define UINT_LEAST32_MAX UINT32_MAX +#define UINT_LEAST64_MAX UINT64_MAX + +// 7.18.2.3 Limits of fastest minimum-width integer types +#define INT_FAST8_MIN INT8_MIN +#define INT_FAST8_MAX INT8_MAX +#define INT_FAST16_MIN INT16_MIN +#define INT_FAST16_MAX INT16_MAX +#define INT_FAST32_MIN INT32_MIN +#define INT_FAST32_MAX INT32_MAX +#define INT_FAST64_MIN INT64_MIN +#define INT_FAST64_MAX INT64_MAX +#define UINT_FAST8_MAX UINT8_MAX +#define UINT_FAST16_MAX UINT16_MAX +#define UINT_FAST32_MAX UINT32_MAX +#define UINT_FAST64_MAX UINT64_MAX + +// 7.18.2.4 Limits of integer types capable of holding object pointers +#ifdef _WIN64 // [ +# define INTPTR_MIN INT64_MIN +# define INTPTR_MAX INT64_MAX +# define UINTPTR_MAX UINT64_MAX +#else // _WIN64 ][ +# define INTPTR_MIN INT32_MIN +# define INTPTR_MAX INT32_MAX +# define UINTPTR_MAX UINT32_MAX +#endif // _WIN64 ] + +// 7.18.2.5 Limits of greatest-width integer types +#define INTMAX_MIN INT64_MIN +#define INTMAX_MAX INT64_MAX +#define UINTMAX_MAX UINT64_MAX + +// 7.18.3 Limits of other integer types + +#ifdef _WIN64 // [ +# define PTRDIFF_MIN _I64_MIN +# define PTRDIFF_MAX _I64_MAX +#else // _WIN64 ][ +# define PTRDIFF_MIN _I32_MIN +# define PTRDIFF_MAX _I32_MAX +#endif // _WIN64 ] + +#define SIG_ATOMIC_MIN INT_MIN +#define SIG_ATOMIC_MAX INT_MAX + +#ifndef SIZE_MAX // [ +# ifdef _WIN64 // [ +# define SIZE_MAX _UI64_MAX +# else // _WIN64 ][ +# define SIZE_MAX _UI32_MAX +# endif // _WIN64 ] +#endif // SIZE_MAX ] + +// WCHAR_MIN and WCHAR_MAX are also defined in +#ifndef WCHAR_MIN // [ +# define WCHAR_MIN 0 +#endif // WCHAR_MIN ] +#ifndef WCHAR_MAX // [ +# define WCHAR_MAX _UI16_MAX +#endif // WCHAR_MAX ] + +#define WINT_MIN 0 +#define WINT_MAX _UI16_MAX + +#endif // __STDC_LIMIT_MACROS ] + + +// 7.18.4 Limits of other integer types + +#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 + +// 7.18.4.1 Macros for minimum-width integer constants + +#define INT8_C(val) val##i8 +#define INT16_C(val) val##i16 +#define INT32_C(val) val##i32 +#define INT64_C(val) val##i64 + +#define UINT8_C(val) val##ui8 +#define UINT16_C(val) val##ui16 +#define UINT32_C(val) val##ui32 +#define UINT64_C(val) val##ui64 + +// 7.18.4.2 Macros for greatest-width integer constants +// These #ifndef's are needed to prevent collisions with . +// Check out Issue 9 for the details. +#ifndef INTMAX_C // [ +# define INTMAX_C INT64_C +#endif // INTMAX_C ] +#ifndef UINTMAX_C // [ +# define UINTMAX_C UINT64_C +#endif // UINTMAX_C ] + +#endif // __STDC_CONSTANT_MACROS ] + +#endif // _MSC_VER >= 1600 ] + +#endif // _MSC_STDINT_H_ ] diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/ostreamwrapper.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/ostreamwrapper.h new file mode 100644 index 0000000..6f4667c --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/ostreamwrapper.h @@ -0,0 +1,81 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_OSTREAMWRAPPER_H_ +#define RAPIDJSON_OSTREAMWRAPPER_H_ + +#include "stream.h" +#include + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! Wrapper of \c std::basic_ostream into RapidJSON's Stream concept. +/*! + The classes can be wrapped including but not limited to: + + - \c std::ostringstream + - \c std::stringstream + - \c std::wpstringstream + - \c std::wstringstream + - \c std::ifstream + - \c std::fstream + - \c std::wofstream + - \c std::wfstream + + \tparam StreamType Class derived from \c std::basic_ostream. +*/ + +template +class BasicOStreamWrapper { +public: + typedef typename StreamType::char_type Ch; + BasicOStreamWrapper(StreamType& stream) : stream_(stream) {} + + void Put(Ch c) { + stream_.put(c); + } + + void Flush() { + stream_.flush(); + } + + // Not implemented + char Peek() const { RAPIDJSON_ASSERT(false); return 0; } + char Take() { RAPIDJSON_ASSERT(false); return 0; } + size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; } + char* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + size_t PutEnd(char*) { RAPIDJSON_ASSERT(false); return 0; } + +private: + BasicOStreamWrapper(const BasicOStreamWrapper&); + BasicOStreamWrapper& operator=(const BasicOStreamWrapper&); + + StreamType& stream_; +}; + +typedef BasicOStreamWrapper OStreamWrapper; +typedef BasicOStreamWrapper WOStreamWrapper; + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_OSTREAMWRAPPER_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/pointer.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/pointer.h new file mode 100644 index 0000000..0206ac1 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/pointer.h @@ -0,0 +1,1358 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_POINTER_H_ +#define RAPIDJSON_POINTER_H_ + +#include "document.h" +#include "internal/itoa.h" + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(switch-enum) +#endif + +#ifdef _MSC_VER +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(4512) // assignment operator could not be generated +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +static const SizeType kPointerInvalidIndex = ~SizeType(0); //!< Represents an invalid index in GenericPointer::Token + +//! Error code of parsing. +/*! \ingroup RAPIDJSON_ERRORS + \see GenericPointer::GenericPointer, GenericPointer::GetParseErrorCode +*/ +enum PointerParseErrorCode { + kPointerParseErrorNone = 0, //!< The parse is successful + + kPointerParseErrorTokenMustBeginWithSolidus, //!< A token must begin with a '/' + kPointerParseErrorInvalidEscape, //!< Invalid escape + kPointerParseErrorInvalidPercentEncoding, //!< Invalid percent encoding in URI fragment + kPointerParseErrorCharacterMustPercentEncode //!< A character must percent encoded in URI fragment +}; + +/////////////////////////////////////////////////////////////////////////////// +// GenericPointer + +//! Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator. +/*! + This class implements RFC 6901 "JavaScript Object Notation (JSON) Pointer" + (https://tools.ietf.org/html/rfc6901). + + A JSON pointer is for identifying a specific value in a JSON document + (GenericDocument). It can simplify coding of DOM tree manipulation, because it + can access multiple-level depth of DOM tree with single API call. + + After it parses a string representation (e.g. "/foo/0" or URI fragment + representation (e.g. "#/foo/0") into its internal representation (tokens), + it can be used to resolve a specific value in multiple documents, or sub-tree + of documents. + + Contrary to GenericValue, Pointer can be copy constructed and copy assigned. + Apart from assignment, a Pointer cannot be modified after construction. + + Although Pointer is very convenient, please aware that constructing Pointer + involves parsing and dynamic memory allocation. A special constructor with user- + supplied tokens eliminates these. + + GenericPointer depends on GenericDocument and GenericValue. + + \tparam ValueType The value type of the DOM tree. E.g. GenericValue > + \tparam Allocator The allocator type for allocating memory for internal representation. + + \note GenericPointer uses same encoding of ValueType. + However, Allocator of GenericPointer is independent of Allocator of Value. +*/ +template +class GenericPointer { +public: + typedef typename ValueType::EncodingType EncodingType; //!< Encoding type from Value + typedef typename ValueType::Ch Ch; //!< Character type from Value + + //! A token is the basic units of internal representation. + /*! + A JSON pointer string representation "/foo/123" is parsed to two tokens: + "foo" and 123. 123 will be represented in both numeric form and string form. + They are resolved according to the actual value type (object or array). + + For token that are not numbers, or the numeric value is out of bound + (greater than limits of SizeType), they are only treated as string form + (i.e. the token's index will be equal to kPointerInvalidIndex). + + This struct is public so that user can create a Pointer without parsing and + allocation, using a special constructor. + */ + struct Token { + const Ch* name; //!< Name of the token. It has null character at the end but it can contain null character. + SizeType length; //!< Length of the name. + SizeType index; //!< A valid array index, if it is not equal to kPointerInvalidIndex. + }; + + //!@name Constructors and destructor. + //@{ + + //! Default constructor. + GenericPointer(Allocator* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) {} + + //! Constructor that parses a string or URI fragment representation. + /*! + \param source A null-terminated, string or URI fragment representation of JSON pointer. + \param allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one. + */ + explicit GenericPointer(const Ch* source, Allocator* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) { + Parse(source, internal::StrLen(source)); + } + +#if RAPIDJSON_HAS_STDSTRING + //! Constructor that parses a string or URI fragment representation. + /*! + \param source A string or URI fragment representation of JSON pointer. + \param allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one. + \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING. + */ + explicit GenericPointer(const std::basic_string& source, Allocator* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) { + Parse(source.c_str(), source.size()); + } +#endif + + //! Constructor that parses a string or URI fragment representation, with length of the source string. + /*! + \param source A string or URI fragment representation of JSON pointer. + \param length Length of source. + \param allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one. + \note Slightly faster than the overload without length. + */ + GenericPointer(const Ch* source, size_t length, Allocator* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) { + Parse(source, length); + } + + //! Constructor with user-supplied tokens. + /*! + This constructor let user supplies const array of tokens. + This prevents the parsing process and eliminates allocation. + This is preferred for memory constrained environments. + + \param tokens An constant array of tokens representing the JSON pointer. + \param tokenCount Number of tokens. + + \b Example + \code + #define NAME(s) { s, sizeof(s) / sizeof(s[0]) - 1, kPointerInvalidIndex } + #define INDEX(i) { #i, sizeof(#i) - 1, i } + + static const Pointer::Token kTokens[] = { NAME("foo"), INDEX(123) }; + static const Pointer p(kTokens, sizeof(kTokens) / sizeof(kTokens[0])); + // Equivalent to static const Pointer p("/foo/123"); + + #undef NAME + #undef INDEX + \endcode + */ + GenericPointer(const Token* tokens, size_t tokenCount) : allocator_(), ownAllocator_(), nameBuffer_(), tokens_(const_cast(tokens)), tokenCount_(tokenCount), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) {} + + //! Copy constructor. + GenericPointer(const GenericPointer& rhs, Allocator* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) { + *this = rhs; + } + + //! Destructor. + ~GenericPointer() { + if (nameBuffer_) // If user-supplied tokens constructor is used, nameBuffer_ is nullptr and tokens_ are not deallocated. + Allocator::Free(tokens_); + RAPIDJSON_DELETE(ownAllocator_); + } + + //! Assignment operator. + GenericPointer& operator=(const GenericPointer& rhs) { + if (this != &rhs) { + // Do not delete ownAllcator + if (nameBuffer_) + Allocator::Free(tokens_); + + tokenCount_ = rhs.tokenCount_; + parseErrorOffset_ = rhs.parseErrorOffset_; + parseErrorCode_ = rhs.parseErrorCode_; + + if (rhs.nameBuffer_) + CopyFromRaw(rhs); // Normally parsed tokens. + else { + tokens_ = rhs.tokens_; // User supplied const tokens. + nameBuffer_ = 0; + } + } + return *this; + } + + //@} + + //!@name Append token + //@{ + + //! Append a token and return a new Pointer + /*! + \param token Token to be appended. + \param allocator Allocator for the newly return Pointer. + \return A new Pointer with appended token. + */ + GenericPointer Append(const Token& token, Allocator* allocator = 0) const { + GenericPointer r; + r.allocator_ = allocator; + Ch *p = r.CopyFromRaw(*this, 1, token.length + 1); + std::memcpy(p, token.name, (token.length + 1) * sizeof(Ch)); + r.tokens_[tokenCount_].name = p; + r.tokens_[tokenCount_].length = token.length; + r.tokens_[tokenCount_].index = token.index; + return r; + } + + //! Append a name token with length, and return a new Pointer + /*! + \param name Name to be appended. + \param length Length of name. + \param allocator Allocator for the newly return Pointer. + \return A new Pointer with appended token. + */ + GenericPointer Append(const Ch* name, SizeType length, Allocator* allocator = 0) const { + Token token = { name, length, kPointerInvalidIndex }; + return Append(token, allocator); + } + + //! Append a name token without length, and return a new Pointer + /*! + \param name Name (const Ch*) to be appended. + \param allocator Allocator for the newly return Pointer. + \return A new Pointer with appended token. + */ + template + RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr::Type, Ch> >), (GenericPointer)) + Append(T* name, Allocator* allocator = 0) const { + return Append(name, StrLen(name), allocator); + } + +#if RAPIDJSON_HAS_STDSTRING + //! Append a name token, and return a new Pointer + /*! + \param name Name to be appended. + \param allocator Allocator for the newly return Pointer. + \return A new Pointer with appended token. + */ + GenericPointer Append(const std::basic_string& name, Allocator* allocator = 0) const { + return Append(name.c_str(), static_cast(name.size()), allocator); + } +#endif + + //! Append a index token, and return a new Pointer + /*! + \param index Index to be appended. + \param allocator Allocator for the newly return Pointer. + \return A new Pointer with appended token. + */ + GenericPointer Append(SizeType index, Allocator* allocator = 0) const { + char buffer[21]; + char* end = sizeof(SizeType) == 4 ? internal::u32toa(index, buffer) : internal::u64toa(index, buffer); + SizeType length = static_cast(end - buffer); + buffer[length] = '\0'; + + if (sizeof(Ch) == 1) { + Token token = { reinterpret_cast(buffer), length, index }; + return Append(token, allocator); + } + else { + Ch name[21]; + for (size_t i = 0; i <= length; i++) + name[i] = buffer[i]; + Token token = { name, length, index }; + return Append(token, allocator); + } + } + + //! Append a token by value, and return a new Pointer + /*! + \param token token to be appended. + \param allocator Allocator for the newly return Pointer. + \return A new Pointer with appended token. + */ + GenericPointer Append(const ValueType& token, Allocator* allocator = 0) const { + if (token.IsString()) + return Append(token.GetString(), token.GetStringLength(), allocator); + else { + RAPIDJSON_ASSERT(token.IsUint64()); + RAPIDJSON_ASSERT(token.GetUint64() <= SizeType(~0)); + return Append(static_cast(token.GetUint64()), allocator); + } + } + + //!@name Handling Parse Error + //@{ + + //! Check whether this is a valid pointer. + bool IsValid() const { return parseErrorCode_ == kPointerParseErrorNone; } + + //! Get the parsing error offset in code unit. + size_t GetParseErrorOffset() const { return parseErrorOffset_; } + + //! Get the parsing error code. + PointerParseErrorCode GetParseErrorCode() const { return parseErrorCode_; } + + //@} + + //! Get the allocator of this pointer. + Allocator& GetAllocator() { return *allocator_; } + + //!@name Tokens + //@{ + + //! Get the token array (const version only). + const Token* GetTokens() const { return tokens_; } + + //! Get the number of tokens. + size_t GetTokenCount() const { return tokenCount_; } + + //@} + + //!@name Equality/inequality operators + //@{ + + //! Equality operator. + /*! + \note When any pointers are invalid, always returns false. + */ + bool operator==(const GenericPointer& rhs) const { + if (!IsValid() || !rhs.IsValid() || tokenCount_ != rhs.tokenCount_) + return false; + + for (size_t i = 0; i < tokenCount_; i++) { + if (tokens_[i].index != rhs.tokens_[i].index || + tokens_[i].length != rhs.tokens_[i].length || + (tokens_[i].length != 0 && std::memcmp(tokens_[i].name, rhs.tokens_[i].name, sizeof(Ch)* tokens_[i].length) != 0)) + { + return false; + } + } + + return true; + } + + //! Inequality operator. + /*! + \note When any pointers are invalid, always returns true. + */ + bool operator!=(const GenericPointer& rhs) const { return !(*this == rhs); } + + //@} + + //!@name Stringify + //@{ + + //! Stringify the pointer into string representation. + /*! + \tparam OutputStream Type of output stream. + \param os The output stream. + */ + template + bool Stringify(OutputStream& os) const { + return Stringify(os); + } + + //! Stringify the pointer into URI fragment representation. + /*! + \tparam OutputStream Type of output stream. + \param os The output stream. + */ + template + bool StringifyUriFragment(OutputStream& os) const { + return Stringify(os); + } + + //@} + + //!@name Create value + //@{ + + //! Create a value in a subtree. + /*! + If the value is not exist, it creates all parent values and a JSON Null value. + So it always succeed and return the newly created or existing value. + + Remind that it may change types of parents according to tokens, so it + potentially removes previously stored values. For example, if a document + was an array, and "/foo" is used to create a value, then the document + will be changed to an object, and all existing array elements are lost. + + \param root Root value of a DOM subtree to be resolved. It can be any value other than document root. + \param allocator Allocator for creating the values if the specified value or its parents are not exist. + \param alreadyExist If non-null, it stores whether the resolved value is already exist. + \return The resolved newly created (a JSON Null value), or already exists value. + */ + ValueType& Create(ValueType& root, typename ValueType::AllocatorType& allocator, bool* alreadyExist = 0) const { + RAPIDJSON_ASSERT(IsValid()); + ValueType* v = &root; + bool exist = true; + for (const Token *t = tokens_; t != tokens_ + tokenCount_; ++t) { + if (v->IsArray() && t->name[0] == '-' && t->length == 1) { + v->PushBack(ValueType().Move(), allocator); + v = &((*v)[v->Size() - 1]); + exist = false; + } + else { + if (t->index == kPointerInvalidIndex) { // must be object name + if (!v->IsObject()) + v->SetObject(); // Change to Object + } + else { // object name or array index + if (!v->IsArray() && !v->IsObject()) + v->SetArray(); // Change to Array + } + + if (v->IsArray()) { + if (t->index >= v->Size()) { + v->Reserve(t->index + 1, allocator); + while (t->index >= v->Size()) + v->PushBack(ValueType().Move(), allocator); + exist = false; + } + v = &((*v)[t->index]); + } + else { + typename ValueType::MemberIterator m = v->FindMember(GenericStringRef(t->name, t->length)); + if (m == v->MemberEnd()) { + v->AddMember(ValueType(t->name, t->length, allocator).Move(), ValueType().Move(), allocator); + v = &(--v->MemberEnd())->value; // Assumes AddMember() appends at the end + exist = false; + } + else + v = &m->value; + } + } + } + + if (alreadyExist) + *alreadyExist = exist; + + return *v; + } + + //! Creates a value in a document. + /*! + \param document A document to be resolved. + \param alreadyExist If non-null, it stores whether the resolved value is already exist. + \return The resolved newly created, or already exists value. + */ + template + ValueType& Create(GenericDocument& document, bool* alreadyExist = 0) const { + return Create(document, document.GetAllocator(), alreadyExist); + } + + //@} + + //!@name Query value + //@{ + + //! Query a value in a subtree. + /*! + \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root. + \param unresolvedTokenIndex If the pointer cannot resolve a token in the pointer, this parameter can obtain the index of unresolved token. + \return Pointer to the value if it can be resolved. Otherwise null. + + \note + There are only 3 situations when a value cannot be resolved: + 1. A value in the path is not an array nor object. + 2. An object value does not contain the token. + 3. A token is out of range of an array value. + + Use unresolvedTokenIndex to retrieve the token index. + */ + ValueType* Get(ValueType& root, size_t* unresolvedTokenIndex = 0) const { + RAPIDJSON_ASSERT(IsValid()); + ValueType* v = &root; + for (const Token *t = tokens_; t != tokens_ + tokenCount_; ++t) { + switch (v->GetType()) { + case kObjectType: + { + typename ValueType::MemberIterator m = v->FindMember(GenericStringRef(t->name, t->length)); + if (m == v->MemberEnd()) + break; + v = &m->value; + } + continue; + case kArrayType: + if (t->index == kPointerInvalidIndex || t->index >= v->Size()) + break; + v = &((*v)[t->index]); + continue; + default: + break; + } + + // Error: unresolved token + if (unresolvedTokenIndex) + *unresolvedTokenIndex = static_cast(t - tokens_); + return 0; + } + return v; + } + + //! Query a const value in a const subtree. + /*! + \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root. + \return Pointer to the value if it can be resolved. Otherwise null. + */ + const ValueType* Get(const ValueType& root, size_t* unresolvedTokenIndex = 0) const { + return Get(const_cast(root), unresolvedTokenIndex); + } + + //@} + + //!@name Query a value with default + //@{ + + //! Query a value in a subtree with default value. + /*! + Similar to Get(), but if the specified value do not exists, it creates all parents and clone the default value. + So that this function always succeed. + + \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root. + \param defaultValue Default value to be cloned if the value was not exists. + \param allocator Allocator for creating the values if the specified value or its parents are not exist. + \see Create() + */ + ValueType& GetWithDefault(ValueType& root, const ValueType& defaultValue, typename ValueType::AllocatorType& allocator) const { + bool alreadyExist; + Value& v = Create(root, allocator, &alreadyExist); + return alreadyExist ? v : v.CopyFrom(defaultValue, allocator); + } + + //! Query a value in a subtree with default null-terminated string. + ValueType& GetWithDefault(ValueType& root, const Ch* defaultValue, typename ValueType::AllocatorType& allocator) const { + bool alreadyExist; + Value& v = Create(root, allocator, &alreadyExist); + return alreadyExist ? v : v.SetString(defaultValue, allocator); + } + +#if RAPIDJSON_HAS_STDSTRING + //! Query a value in a subtree with default std::basic_string. + ValueType& GetWithDefault(ValueType& root, const std::basic_string& defaultValue, typename ValueType::AllocatorType& allocator) const { + bool alreadyExist; + Value& v = Create(root, allocator, &alreadyExist); + return alreadyExist ? v : v.SetString(defaultValue, allocator); + } +#endif + + //! Query a value in a subtree with default primitive value. + /*! + \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool + */ + template + RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (ValueType&)) + GetWithDefault(ValueType& root, T defaultValue, typename ValueType::AllocatorType& allocator) const { + return GetWithDefault(root, ValueType(defaultValue).Move(), allocator); + } + + //! Query a value in a document with default value. + template + ValueType& GetWithDefault(GenericDocument& document, const ValueType& defaultValue) const { + return GetWithDefault(document, defaultValue, document.GetAllocator()); + } + + //! Query a value in a document with default null-terminated string. + template + ValueType& GetWithDefault(GenericDocument& document, const Ch* defaultValue) const { + return GetWithDefault(document, defaultValue, document.GetAllocator()); + } + +#if RAPIDJSON_HAS_STDSTRING + //! Query a value in a document with default std::basic_string. + template + ValueType& GetWithDefault(GenericDocument& document, const std::basic_string& defaultValue) const { + return GetWithDefault(document, defaultValue, document.GetAllocator()); + } +#endif + + //! Query a value in a document with default primitive value. + /*! + \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool + */ + template + RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (ValueType&)) + GetWithDefault(GenericDocument& document, T defaultValue) const { + return GetWithDefault(document, defaultValue, document.GetAllocator()); + } + + //@} + + //!@name Set a value + //@{ + + //! Set a value in a subtree, with move semantics. + /*! + It creates all parents if they are not exist or types are different to the tokens. + So this function always succeeds but potentially remove existing values. + + \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root. + \param value Value to be set. + \param allocator Allocator for creating the values if the specified value or its parents are not exist. + \see Create() + */ + ValueType& Set(ValueType& root, ValueType& value, typename ValueType::AllocatorType& allocator) const { + return Create(root, allocator) = value; + } + + //! Set a value in a subtree, with copy semantics. + ValueType& Set(ValueType& root, const ValueType& value, typename ValueType::AllocatorType& allocator) const { + return Create(root, allocator).CopyFrom(value, allocator); + } + + //! Set a null-terminated string in a subtree. + ValueType& Set(ValueType& root, const Ch* value, typename ValueType::AllocatorType& allocator) const { + return Create(root, allocator) = ValueType(value, allocator).Move(); + } + +#if RAPIDJSON_HAS_STDSTRING + //! Set a std::basic_string in a subtree. + ValueType& Set(ValueType& root, const std::basic_string& value, typename ValueType::AllocatorType& allocator) const { + return Create(root, allocator) = ValueType(value, allocator).Move(); + } +#endif + + //! Set a primitive value in a subtree. + /*! + \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool + */ + template + RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (ValueType&)) + Set(ValueType& root, T value, typename ValueType::AllocatorType& allocator) const { + return Create(root, allocator) = ValueType(value).Move(); + } + + //! Set a value in a document, with move semantics. + template + ValueType& Set(GenericDocument& document, ValueType& value) const { + return Create(document) = value; + } + + //! Set a value in a document, with copy semantics. + template + ValueType& Set(GenericDocument& document, const ValueType& value) const { + return Create(document).CopyFrom(value, document.GetAllocator()); + } + + //! Set a null-terminated string in a document. + template + ValueType& Set(GenericDocument& document, const Ch* value) const { + return Create(document) = ValueType(value, document.GetAllocator()).Move(); + } + +#if RAPIDJSON_HAS_STDSTRING + //! Sets a std::basic_string in a document. + template + ValueType& Set(GenericDocument& document, const std::basic_string& value) const { + return Create(document) = ValueType(value, document.GetAllocator()).Move(); + } +#endif + + //! Set a primitive value in a document. + /*! + \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool + */ + template + RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (ValueType&)) + Set(GenericDocument& document, T value) const { + return Create(document) = value; + } + + //@} + + //!@name Swap a value + //@{ + + //! Swap a value with a value in a subtree. + /*! + It creates all parents if they are not exist or types are different to the tokens. + So this function always succeeds but potentially remove existing values. + + \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root. + \param value Value to be swapped. + \param allocator Allocator for creating the values if the specified value or its parents are not exist. + \see Create() + */ + ValueType& Swap(ValueType& root, ValueType& value, typename ValueType::AllocatorType& allocator) const { + return Create(root, allocator).Swap(value); + } + + //! Swap a value with a value in a document. + template + ValueType& Swap(GenericDocument& document, ValueType& value) const { + return Create(document).Swap(value); + } + + //@} + + //! Erase a value in a subtree. + /*! + \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root. + \return Whether the resolved value is found and erased. + + \note Erasing with an empty pointer \c Pointer(""), i.e. the root, always fail and return false. + */ + bool Erase(ValueType& root) const { + RAPIDJSON_ASSERT(IsValid()); + if (tokenCount_ == 0) // Cannot erase the root + return false; + + ValueType* v = &root; + const Token* last = tokens_ + (tokenCount_ - 1); + for (const Token *t = tokens_; t != last; ++t) { + switch (v->GetType()) { + case kObjectType: + { + typename ValueType::MemberIterator m = v->FindMember(GenericStringRef(t->name, t->length)); + if (m == v->MemberEnd()) + return false; + v = &m->value; + } + break; + case kArrayType: + if (t->index == kPointerInvalidIndex || t->index >= v->Size()) + return false; + v = &((*v)[t->index]); + break; + default: + return false; + } + } + + switch (v->GetType()) { + case kObjectType: + return v->EraseMember(GenericStringRef(last->name, last->length)); + case kArrayType: + if (last->index == kPointerInvalidIndex || last->index >= v->Size()) + return false; + v->Erase(v->Begin() + last->index); + return true; + default: + return false; + } + } + +private: + //! Clone the content from rhs to this. + /*! + \param rhs Source pointer. + \param extraToken Extra tokens to be allocated. + \param extraNameBufferSize Extra name buffer size (in number of Ch) to be allocated. + \return Start of non-occupied name buffer, for storing extra names. + */ + Ch* CopyFromRaw(const GenericPointer& rhs, size_t extraToken = 0, size_t extraNameBufferSize = 0) { + if (!allocator_) // allocator is independently owned. + ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator()); + + size_t nameBufferSize = rhs.tokenCount_; // null terminators for tokens + for (Token *t = rhs.tokens_; t != rhs.tokens_ + rhs.tokenCount_; ++t) + nameBufferSize += t->length; + + tokenCount_ = rhs.tokenCount_ + extraToken; + tokens_ = static_cast(allocator_->Malloc(tokenCount_ * sizeof(Token) + (nameBufferSize + extraNameBufferSize) * sizeof(Ch))); + nameBuffer_ = reinterpret_cast(tokens_ + tokenCount_); + if (rhs.tokenCount_ > 0) { + std::memcpy(tokens_, rhs.tokens_, rhs.tokenCount_ * sizeof(Token)); + } + if (nameBufferSize > 0) { + std::memcpy(nameBuffer_, rhs.nameBuffer_, nameBufferSize * sizeof(Ch)); + } + + // Adjust pointers to name buffer + std::ptrdiff_t diff = nameBuffer_ - rhs.nameBuffer_; + for (Token *t = tokens_; t != tokens_ + rhs.tokenCount_; ++t) + t->name += diff; + + return nameBuffer_ + nameBufferSize; + } + + //! Check whether a character should be percent-encoded. + /*! + According to RFC 3986 2.3 Unreserved Characters. + \param c The character (code unit) to be tested. + */ + bool NeedPercentEncode(Ch c) const { + return !((c >= '0' && c <= '9') || (c >= 'A' && c <='Z') || (c >= 'a' && c <= 'z') || c == '-' || c == '.' || c == '_' || c =='~'); + } + + //! Parse a JSON String or its URI fragment representation into tokens. +#ifndef __clang__ // -Wdocumentation + /*! + \param source Either a JSON Pointer string, or its URI fragment representation. Not need to be null terminated. + \param length Length of the source string. + \note Source cannot be JSON String Representation of JSON Pointer, e.g. In "/\u0000", \u0000 will not be unescaped. + */ +#endif + void Parse(const Ch* source, size_t length) { + RAPIDJSON_ASSERT(source != NULL); + RAPIDJSON_ASSERT(nameBuffer_ == 0); + RAPIDJSON_ASSERT(tokens_ == 0); + + // Create own allocator if user did not supply. + if (!allocator_) + ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator()); + + // Count number of '/' as tokenCount + tokenCount_ = 0; + for (const Ch* s = source; s != source + length; s++) + if (*s == '/') + tokenCount_++; + + Token* token = tokens_ = static_cast(allocator_->Malloc(tokenCount_ * sizeof(Token) + length * sizeof(Ch))); + Ch* name = nameBuffer_ = reinterpret_cast(tokens_ + tokenCount_); + size_t i = 0; + + // Detect if it is a URI fragment + bool uriFragment = false; + if (source[i] == '#') { + uriFragment = true; + i++; + } + + if (i != length && source[i] != '/') { + parseErrorCode_ = kPointerParseErrorTokenMustBeginWithSolidus; + goto error; + } + + while (i < length) { + RAPIDJSON_ASSERT(source[i] == '/'); + i++; // consumes '/' + + token->name = name; + bool isNumber = true; + + while (i < length && source[i] != '/') { + Ch c = source[i]; + if (uriFragment) { + // Decoding percent-encoding for URI fragment + if (c == '%') { + PercentDecodeStream is(&source[i], source + length); + GenericInsituStringStream os(name); + Ch* begin = os.PutBegin(); + if (!Transcoder, EncodingType>().Validate(is, os) || !is.IsValid()) { + parseErrorCode_ = kPointerParseErrorInvalidPercentEncoding; + goto error; + } + size_t len = os.PutEnd(begin); + i += is.Tell() - 1; + if (len == 1) + c = *name; + else { + name += len; + isNumber = false; + i++; + continue; + } + } + else if (NeedPercentEncode(c)) { + parseErrorCode_ = kPointerParseErrorCharacterMustPercentEncode; + goto error; + } + } + + i++; + + // Escaping "~0" -> '~', "~1" -> '/' + if (c == '~') { + if (i < length) { + c = source[i]; + if (c == '0') c = '~'; + else if (c == '1') c = '/'; + else { + parseErrorCode_ = kPointerParseErrorInvalidEscape; + goto error; + } + i++; + } + else { + parseErrorCode_ = kPointerParseErrorInvalidEscape; + goto error; + } + } + + // First check for index: all of characters are digit + if (c < '0' || c > '9') + isNumber = false; + + *name++ = c; + } + token->length = static_cast(name - token->name); + if (token->length == 0) + isNumber = false; + *name++ = '\0'; // Null terminator + + // Second check for index: more than one digit cannot have leading zero + if (isNumber && token->length > 1 && token->name[0] == '0') + isNumber = false; + + // String to SizeType conversion + SizeType n = 0; + if (isNumber) { + for (size_t j = 0; j < token->length; j++) { + SizeType m = n * 10 + static_cast(token->name[j] - '0'); + if (m < n) { // overflow detection + isNumber = false; + break; + } + n = m; + } + } + + token->index = isNumber ? n : kPointerInvalidIndex; + token++; + } + + RAPIDJSON_ASSERT(name <= nameBuffer_ + length); // Should not overflow buffer + parseErrorCode_ = kPointerParseErrorNone; + return; + + error: + Allocator::Free(tokens_); + nameBuffer_ = 0; + tokens_ = 0; + tokenCount_ = 0; + parseErrorOffset_ = i; + return; + } + + //! Stringify to string or URI fragment representation. + /*! + \tparam uriFragment True for stringifying to URI fragment representation. False for string representation. + \tparam OutputStream type of output stream. + \param os The output stream. + */ + template + bool Stringify(OutputStream& os) const { + RAPIDJSON_ASSERT(IsValid()); + + if (uriFragment) + os.Put('#'); + + for (Token *t = tokens_; t != tokens_ + tokenCount_; ++t) { + os.Put('/'); + for (size_t j = 0; j < t->length; j++) { + Ch c = t->name[j]; + if (c == '~') { + os.Put('~'); + os.Put('0'); + } + else if (c == '/') { + os.Put('~'); + os.Put('1'); + } + else if (uriFragment && NeedPercentEncode(c)) { + // Transcode to UTF8 sequence + GenericStringStream source(&t->name[j]); + PercentEncodeStream target(os); + if (!Transcoder >().Validate(source, target)) + return false; + j += source.Tell() - 1; + } + else + os.Put(c); + } + } + return true; + } + + //! A helper stream for decoding a percent-encoded sequence into code unit. + /*! + This stream decodes %XY triplet into code unit (0-255). + If it encounters invalid characters, it sets output code unit as 0 and + mark invalid, and to be checked by IsValid(). + */ + class PercentDecodeStream { + public: + typedef typename ValueType::Ch Ch; + + //! Constructor + /*! + \param source Start of the stream + \param end Past-the-end of the stream. + */ + PercentDecodeStream(const Ch* source, const Ch* end) : src_(source), head_(source), end_(end), valid_(true) {} + + Ch Take() { + if (*src_ != '%' || src_ + 3 > end_) { // %XY triplet + valid_ = false; + return 0; + } + src_++; + Ch c = 0; + for (int j = 0; j < 2; j++) { + c = static_cast(c << 4); + Ch h = *src_; + if (h >= '0' && h <= '9') c = static_cast(c + h - '0'); + else if (h >= 'A' && h <= 'F') c = static_cast(c + h - 'A' + 10); + else if (h >= 'a' && h <= 'f') c = static_cast(c + h - 'a' + 10); + else { + valid_ = false; + return 0; + } + src_++; + } + return c; + } + + size_t Tell() const { return static_cast(src_ - head_); } + bool IsValid() const { return valid_; } + + private: + const Ch* src_; //!< Current read position. + const Ch* head_; //!< Original head of the string. + const Ch* end_; //!< Past-the-end position. + bool valid_; //!< Whether the parsing is valid. + }; + + //! A helper stream to encode character (UTF-8 code unit) into percent-encoded sequence. + template + class PercentEncodeStream { + public: + PercentEncodeStream(OutputStream& os) : os_(os) {} + void Put(char c) { // UTF-8 must be byte + unsigned char u = static_cast(c); + static const char hexDigits[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; + os_.Put('%'); + os_.Put(hexDigits[u >> 4]); + os_.Put(hexDigits[u & 15]); + } + private: + OutputStream& os_; + }; + + Allocator* allocator_; //!< The current allocator. It is either user-supplied or equal to ownAllocator_. + Allocator* ownAllocator_; //!< Allocator owned by this Pointer. + Ch* nameBuffer_; //!< A buffer containing all names in tokens. + Token* tokens_; //!< A list of tokens. + size_t tokenCount_; //!< Number of tokens in tokens_. + size_t parseErrorOffset_; //!< Offset in code unit when parsing fail. + PointerParseErrorCode parseErrorCode_; //!< Parsing error code. +}; + +//! GenericPointer for Value (UTF-8, default allocator). +typedef GenericPointer Pointer; + +//!@name Helper functions for GenericPointer +//@{ + +////////////////////////////////////////////////////////////////////////////// + +template +typename T::ValueType& CreateValueByPointer(T& root, const GenericPointer& pointer, typename T::AllocatorType& a) { + return pointer.Create(root, a); +} + +template +typename T::ValueType& CreateValueByPointer(T& root, const CharType(&source)[N], typename T::AllocatorType& a) { + return GenericPointer(source, N - 1).Create(root, a); +} + +// No allocator parameter + +template +typename DocumentType::ValueType& CreateValueByPointer(DocumentType& document, const GenericPointer& pointer) { + return pointer.Create(document); +} + +template +typename DocumentType::ValueType& CreateValueByPointer(DocumentType& document, const CharType(&source)[N]) { + return GenericPointer(source, N - 1).Create(document); +} + +////////////////////////////////////////////////////////////////////////////// + +template +typename T::ValueType* GetValueByPointer(T& root, const GenericPointer& pointer, size_t* unresolvedTokenIndex = 0) { + return pointer.Get(root, unresolvedTokenIndex); +} + +template +const typename T::ValueType* GetValueByPointer(const T& root, const GenericPointer& pointer, size_t* unresolvedTokenIndex = 0) { + return pointer.Get(root, unresolvedTokenIndex); +} + +template +typename T::ValueType* GetValueByPointer(T& root, const CharType (&source)[N], size_t* unresolvedTokenIndex = 0) { + return GenericPointer(source, N - 1).Get(root, unresolvedTokenIndex); +} + +template +const typename T::ValueType* GetValueByPointer(const T& root, const CharType(&source)[N], size_t* unresolvedTokenIndex = 0) { + return GenericPointer(source, N - 1).Get(root, unresolvedTokenIndex); +} + +////////////////////////////////////////////////////////////////////////////// + +template +typename T::ValueType& GetValueByPointerWithDefault(T& root, const GenericPointer& pointer, const typename T::ValueType& defaultValue, typename T::AllocatorType& a) { + return pointer.GetWithDefault(root, defaultValue, a); +} + +template +typename T::ValueType& GetValueByPointerWithDefault(T& root, const GenericPointer& pointer, const typename T::Ch* defaultValue, typename T::AllocatorType& a) { + return pointer.GetWithDefault(root, defaultValue, a); +} + +#if RAPIDJSON_HAS_STDSTRING +template +typename T::ValueType& GetValueByPointerWithDefault(T& root, const GenericPointer& pointer, const std::basic_string& defaultValue, typename T::AllocatorType& a) { + return pointer.GetWithDefault(root, defaultValue, a); +} +#endif + +template +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (typename T::ValueType&)) +GetValueByPointerWithDefault(T& root, const GenericPointer& pointer, T2 defaultValue, typename T::AllocatorType& a) { + return pointer.GetWithDefault(root, defaultValue, a); +} + +template +typename T::ValueType& GetValueByPointerWithDefault(T& root, const CharType(&source)[N], const typename T::ValueType& defaultValue, typename T::AllocatorType& a) { + return GenericPointer(source, N - 1).GetWithDefault(root, defaultValue, a); +} + +template +typename T::ValueType& GetValueByPointerWithDefault(T& root, const CharType(&source)[N], const typename T::Ch* defaultValue, typename T::AllocatorType& a) { + return GenericPointer(source, N - 1).GetWithDefault(root, defaultValue, a); +} + +#if RAPIDJSON_HAS_STDSTRING +template +typename T::ValueType& GetValueByPointerWithDefault(T& root, const CharType(&source)[N], const std::basic_string& defaultValue, typename T::AllocatorType& a) { + return GenericPointer(source, N - 1).GetWithDefault(root, defaultValue, a); +} +#endif + +template +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (typename T::ValueType&)) +GetValueByPointerWithDefault(T& root, const CharType(&source)[N], T2 defaultValue, typename T::AllocatorType& a) { + return GenericPointer(source, N - 1).GetWithDefault(root, defaultValue, a); +} + +// No allocator parameter + +template +typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const GenericPointer& pointer, const typename DocumentType::ValueType& defaultValue) { + return pointer.GetWithDefault(document, defaultValue); +} + +template +typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const GenericPointer& pointer, const typename DocumentType::Ch* defaultValue) { + return pointer.GetWithDefault(document, defaultValue); +} + +#if RAPIDJSON_HAS_STDSTRING +template +typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const GenericPointer& pointer, const std::basic_string& defaultValue) { + return pointer.GetWithDefault(document, defaultValue); +} +#endif + +template +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (typename DocumentType::ValueType&)) +GetValueByPointerWithDefault(DocumentType& document, const GenericPointer& pointer, T2 defaultValue) { + return pointer.GetWithDefault(document, defaultValue); +} + +template +typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const CharType(&source)[N], const typename DocumentType::ValueType& defaultValue) { + return GenericPointer(source, N - 1).GetWithDefault(document, defaultValue); +} + +template +typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const CharType(&source)[N], const typename DocumentType::Ch* defaultValue) { + return GenericPointer(source, N - 1).GetWithDefault(document, defaultValue); +} + +#if RAPIDJSON_HAS_STDSTRING +template +typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const CharType(&source)[N], const std::basic_string& defaultValue) { + return GenericPointer(source, N - 1).GetWithDefault(document, defaultValue); +} +#endif + +template +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (typename DocumentType::ValueType&)) +GetValueByPointerWithDefault(DocumentType& document, const CharType(&source)[N], T2 defaultValue) { + return GenericPointer(source, N - 1).GetWithDefault(document, defaultValue); +} + +////////////////////////////////////////////////////////////////////////////// + +template +typename T::ValueType& SetValueByPointer(T& root, const GenericPointer& pointer, typename T::ValueType& value, typename T::AllocatorType& a) { + return pointer.Set(root, value, a); +} + +template +typename T::ValueType& SetValueByPointer(T& root, const GenericPointer& pointer, const typename T::ValueType& value, typename T::AllocatorType& a) { + return pointer.Set(root, value, a); +} + +template +typename T::ValueType& SetValueByPointer(T& root, const GenericPointer& pointer, const typename T::Ch* value, typename T::AllocatorType& a) { + return pointer.Set(root, value, a); +} + +#if RAPIDJSON_HAS_STDSTRING +template +typename T::ValueType& SetValueByPointer(T& root, const GenericPointer& pointer, const std::basic_string& value, typename T::AllocatorType& a) { + return pointer.Set(root, value, a); +} +#endif + +template +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (typename T::ValueType&)) +SetValueByPointer(T& root, const GenericPointer& pointer, T2 value, typename T::AllocatorType& a) { + return pointer.Set(root, value, a); +} + +template +typename T::ValueType& SetValueByPointer(T& root, const CharType(&source)[N], typename T::ValueType& value, typename T::AllocatorType& a) { + return GenericPointer(source, N - 1).Set(root, value, a); +} + +template +typename T::ValueType& SetValueByPointer(T& root, const CharType(&source)[N], const typename T::ValueType& value, typename T::AllocatorType& a) { + return GenericPointer(source, N - 1).Set(root, value, a); +} + +template +typename T::ValueType& SetValueByPointer(T& root, const CharType(&source)[N], const typename T::Ch* value, typename T::AllocatorType& a) { + return GenericPointer(source, N - 1).Set(root, value, a); +} + +#if RAPIDJSON_HAS_STDSTRING +template +typename T::ValueType& SetValueByPointer(T& root, const CharType(&source)[N], const std::basic_string& value, typename T::AllocatorType& a) { + return GenericPointer(source, N - 1).Set(root, value, a); +} +#endif + +template +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (typename T::ValueType&)) +SetValueByPointer(T& root, const CharType(&source)[N], T2 value, typename T::AllocatorType& a) { + return GenericPointer(source, N - 1).Set(root, value, a); +} + +// No allocator parameter + +template +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const GenericPointer& pointer, typename DocumentType::ValueType& value) { + return pointer.Set(document, value); +} + +template +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const GenericPointer& pointer, const typename DocumentType::ValueType& value) { + return pointer.Set(document, value); +} + +template +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const GenericPointer& pointer, const typename DocumentType::Ch* value) { + return pointer.Set(document, value); +} + +#if RAPIDJSON_HAS_STDSTRING +template +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const GenericPointer& pointer, const std::basic_string& value) { + return pointer.Set(document, value); +} +#endif + +template +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (typename DocumentType::ValueType&)) +SetValueByPointer(DocumentType& document, const GenericPointer& pointer, T2 value) { + return pointer.Set(document, value); +} + +template +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const CharType(&source)[N], typename DocumentType::ValueType& value) { + return GenericPointer(source, N - 1).Set(document, value); +} + +template +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const CharType(&source)[N], const typename DocumentType::ValueType& value) { + return GenericPointer(source, N - 1).Set(document, value); +} + +template +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const CharType(&source)[N], const typename DocumentType::Ch* value) { + return GenericPointer(source, N - 1).Set(document, value); +} + +#if RAPIDJSON_HAS_STDSTRING +template +typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const CharType(&source)[N], const std::basic_string& value) { + return GenericPointer(source, N - 1).Set(document, value); +} +#endif + +template +RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr, internal::IsGenericValue >), (typename DocumentType::ValueType&)) +SetValueByPointer(DocumentType& document, const CharType(&source)[N], T2 value) { + return GenericPointer(source, N - 1).Set(document, value); +} + +////////////////////////////////////////////////////////////////////////////// + +template +typename T::ValueType& SwapValueByPointer(T& root, const GenericPointer& pointer, typename T::ValueType& value, typename T::AllocatorType& a) { + return pointer.Swap(root, value, a); +} + +template +typename T::ValueType& SwapValueByPointer(T& root, const CharType(&source)[N], typename T::ValueType& value, typename T::AllocatorType& a) { + return GenericPointer(source, N - 1).Swap(root, value, a); +} + +template +typename DocumentType::ValueType& SwapValueByPointer(DocumentType& document, const GenericPointer& pointer, typename DocumentType::ValueType& value) { + return pointer.Swap(document, value); +} + +template +typename DocumentType::ValueType& SwapValueByPointer(DocumentType& document, const CharType(&source)[N], typename DocumentType::ValueType& value) { + return GenericPointer(source, N - 1).Swap(document, value); +} + +////////////////////////////////////////////////////////////////////////////// + +template +bool EraseValueByPointer(T& root, const GenericPointer& pointer) { + return pointer.Erase(root); +} + +template +bool EraseValueByPointer(T& root, const CharType(&source)[N]) { + return GenericPointer(source, N - 1).Erase(root); +} + +//@} + +RAPIDJSON_NAMESPACE_END + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +#ifdef _MSC_VER +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_POINTER_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/prettywriter.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/prettywriter.h new file mode 100644 index 0000000..0dcb0fe --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/prettywriter.h @@ -0,0 +1,255 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_PRETTYWRITER_H_ +#define RAPIDJSON_PRETTYWRITER_H_ + +#include "writer.h" + +#ifdef __GNUC__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! Combination of PrettyWriter format flags. +/*! \see PrettyWriter::SetFormatOptions + */ +enum PrettyFormatOptions { + kFormatDefault = 0, //!< Default pretty formatting. + kFormatSingleLineArray = 1 //!< Format arrays on a single line. +}; + +//! Writer with indentation and spacing. +/*! + \tparam OutputStream Type of ouptut os. + \tparam SourceEncoding Encoding of source string. + \tparam TargetEncoding Encoding of output stream. + \tparam StackAllocator Type of allocator for allocating memory of stack. +*/ +template, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags> +class PrettyWriter : public Writer { +public: + typedef Writer Base; + typedef typename Base::Ch Ch; + + //! Constructor + /*! \param os Output stream. + \param allocator User supplied allocator. If it is null, it will create a private one. + \param levelDepth Initial capacity of stack. + */ + explicit PrettyWriter(OutputStream& os, StackAllocator* allocator = 0, size_t levelDepth = Base::kDefaultLevelDepth) : + Base(os, allocator, levelDepth), indentChar_(' '), indentCharCount_(4), formatOptions_(kFormatDefault) {} + + + explicit PrettyWriter(StackAllocator* allocator = 0, size_t levelDepth = Base::kDefaultLevelDepth) : + Base(allocator, levelDepth), indentChar_(' '), indentCharCount_(4) {} + + //! Set custom indentation. + /*! \param indentChar Character for indentation. Must be whitespace character (' ', '\\t', '\\n', '\\r'). + \param indentCharCount Number of indent characters for each indentation level. + \note The default indentation is 4 spaces. + */ + PrettyWriter& SetIndent(Ch indentChar, unsigned indentCharCount) { + RAPIDJSON_ASSERT(indentChar == ' ' || indentChar == '\t' || indentChar == '\n' || indentChar == '\r'); + indentChar_ = indentChar; + indentCharCount_ = indentCharCount; + return *this; + } + + //! Set pretty writer formatting options. + /*! \param options Formatting options. + */ + PrettyWriter& SetFormatOptions(PrettyFormatOptions options) { + formatOptions_ = options; + return *this; + } + + /*! @name Implementation of Handler + \see Handler + */ + //@{ + + bool Null() { PrettyPrefix(kNullType); return Base::WriteNull(); } + bool Bool(bool b) { PrettyPrefix(b ? kTrueType : kFalseType); return Base::WriteBool(b); } + bool Int(int i) { PrettyPrefix(kNumberType); return Base::WriteInt(i); } + bool Uint(unsigned u) { PrettyPrefix(kNumberType); return Base::WriteUint(u); } + bool Int64(int64_t i64) { PrettyPrefix(kNumberType); return Base::WriteInt64(i64); } + bool Uint64(uint64_t u64) { PrettyPrefix(kNumberType); return Base::WriteUint64(u64); } + bool Double(double d) { PrettyPrefix(kNumberType); return Base::WriteDouble(d); } + + bool RawNumber(const Ch* str, SizeType length, bool copy = false) { + (void)copy; + PrettyPrefix(kNumberType); + return Base::WriteString(str, length); + } + + bool String(const Ch* str, SizeType length, bool copy = false) { + (void)copy; + PrettyPrefix(kStringType); + return Base::WriteString(str, length); + } + +#if RAPIDJSON_HAS_STDSTRING + bool String(const std::basic_string& str) { + return String(str.data(), SizeType(str.size())); + } +#endif + + bool StartObject() { + PrettyPrefix(kObjectType); + new (Base::level_stack_.template Push()) typename Base::Level(false); + return Base::WriteStartObject(); + } + + bool Key(const Ch* str, SizeType length, bool copy = false) { return String(str, length, copy); } + +#if RAPIDJSON_HAS_STDSTRING + bool Key(const std::basic_string& str) { + return Key(str.data(), SizeType(str.size())); + } +#endif + + bool EndObject(SizeType memberCount = 0) { + (void)memberCount; + RAPIDJSON_ASSERT(Base::level_stack_.GetSize() >= sizeof(typename Base::Level)); + RAPIDJSON_ASSERT(!Base::level_stack_.template Top()->inArray); + bool empty = Base::level_stack_.template Pop(1)->valueCount == 0; + + if (!empty) { + Base::os_->Put('\n'); + WriteIndent(); + } + bool ret = Base::WriteEndObject(); + (void)ret; + RAPIDJSON_ASSERT(ret == true); + if (Base::level_stack_.Empty()) // end of json text + Base::os_->Flush(); + return true; + } + + bool StartArray() { + PrettyPrefix(kArrayType); + new (Base::level_stack_.template Push()) typename Base::Level(true); + return Base::WriteStartArray(); + } + + bool EndArray(SizeType memberCount = 0) { + (void)memberCount; + RAPIDJSON_ASSERT(Base::level_stack_.GetSize() >= sizeof(typename Base::Level)); + RAPIDJSON_ASSERT(Base::level_stack_.template Top()->inArray); + bool empty = Base::level_stack_.template Pop(1)->valueCount == 0; + + if (!empty && !(formatOptions_ & kFormatSingleLineArray)) { + Base::os_->Put('\n'); + WriteIndent(); + } + bool ret = Base::WriteEndArray(); + (void)ret; + RAPIDJSON_ASSERT(ret == true); + if (Base::level_stack_.Empty()) // end of json text + Base::os_->Flush(); + return true; + } + + //@} + + /*! @name Convenience extensions */ + //@{ + + //! Simpler but slower overload. + bool String(const Ch* str) { return String(str, internal::StrLen(str)); } + bool Key(const Ch* str) { return Key(str, internal::StrLen(str)); } + + //@} + + //! Write a raw JSON value. + /*! + For user to write a stringified JSON as a value. + + \param json A well-formed JSON value. It should not contain null character within [0, length - 1] range. + \param length Length of the json. + \param type Type of the root of json. + \note When using PrettyWriter::RawValue(), the result json may not be indented correctly. + */ + bool RawValue(const Ch* json, size_t length, Type type) { PrettyPrefix(type); return Base::WriteRawValue(json, length); } + +protected: + void PrettyPrefix(Type type) { + (void)type; + if (Base::level_stack_.GetSize() != 0) { // this value is not at root + typename Base::Level* level = Base::level_stack_.template Top(); + + if (level->inArray) { + if (level->valueCount > 0) { + Base::os_->Put(','); // add comma if it is not the first element in array + if (formatOptions_ & kFormatSingleLineArray) + Base::os_->Put(' '); + } + + if (!(formatOptions_ & kFormatSingleLineArray)) { + Base::os_->Put('\n'); + WriteIndent(); + } + } + else { // in object + if (level->valueCount > 0) { + if (level->valueCount % 2 == 0) { + Base::os_->Put(','); + Base::os_->Put('\n'); + } + else { + Base::os_->Put(':'); + Base::os_->Put(' '); + } + } + else + Base::os_->Put('\n'); + + if (level->valueCount % 2 == 0) + WriteIndent(); + } + if (!level->inArray && level->valueCount % 2 == 0) + RAPIDJSON_ASSERT(type == kStringType); // if it's in object, then even number should be a name + level->valueCount++; + } + else { + RAPIDJSON_ASSERT(!Base::hasRoot_); // Should only has one and only one root. + Base::hasRoot_ = true; + } + } + + void WriteIndent() { + size_t count = (Base::level_stack_.GetSize() / sizeof(typename Base::Level)) * indentCharCount_; + PutN(*Base::os_, static_cast(indentChar_), count); + } + + Ch indentChar_; + unsigned indentCharCount_; + PrettyFormatOptions formatOptions_; + +private: + // Prohibit copy constructor & assignment operator. + PrettyWriter(const PrettyWriter&); + PrettyWriter& operator=(const PrettyWriter&); +}; + +RAPIDJSON_NAMESPACE_END + +#ifdef __GNUC__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_RAPIDJSON_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/rapidjson.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/rapidjson.h new file mode 100644 index 0000000..053b2ce --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/rapidjson.h @@ -0,0 +1,615 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_RAPIDJSON_H_ +#define RAPIDJSON_RAPIDJSON_H_ + +/*!\file rapidjson.h + \brief common definitions and configuration + + \see RAPIDJSON_CONFIG + */ + +/*! \defgroup RAPIDJSON_CONFIG RapidJSON configuration + \brief Configuration macros for library features + + Some RapidJSON features are configurable to adapt the library to a wide + variety of platforms, environments and usage scenarios. Most of the + features can be configured in terms of overriden or predefined + preprocessor macros at compile-time. + + Some additional customization is available in the \ref RAPIDJSON_ERRORS APIs. + + \note These macros should be given on the compiler command-line + (where applicable) to avoid inconsistent values when compiling + different translation units of a single application. + */ + +#include // malloc(), realloc(), free(), size_t +#include // memset(), memcpy(), memmove(), memcmp() + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_VERSION_STRING +// +// ALWAYS synchronize the following 3 macros with corresponding variables in /CMakeLists.txt. +// + +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN +// token stringification +#define RAPIDJSON_STRINGIFY(x) RAPIDJSON_DO_STRINGIFY(x) +#define RAPIDJSON_DO_STRINGIFY(x) #x +//!@endcond + +/*! \def RAPIDJSON_MAJOR_VERSION + \ingroup RAPIDJSON_CONFIG + \brief Major version of RapidJSON in integer. +*/ +/*! \def RAPIDJSON_MINOR_VERSION + \ingroup RAPIDJSON_CONFIG + \brief Minor version of RapidJSON in integer. +*/ +/*! \def RAPIDJSON_PATCH_VERSION + \ingroup RAPIDJSON_CONFIG + \brief Patch version of RapidJSON in integer. +*/ +/*! \def RAPIDJSON_VERSION_STRING + \ingroup RAPIDJSON_CONFIG + \brief Version of RapidJSON in ".." string format. +*/ +#define RAPIDJSON_MAJOR_VERSION 1 +#define RAPIDJSON_MINOR_VERSION 1 +#define RAPIDJSON_PATCH_VERSION 0 +#define RAPIDJSON_VERSION_STRING \ + RAPIDJSON_STRINGIFY(RAPIDJSON_MAJOR_VERSION.RAPIDJSON_MINOR_VERSION.RAPIDJSON_PATCH_VERSION) + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_NAMESPACE_(BEGIN|END) +/*! \def RAPIDJSON_NAMESPACE + \ingroup RAPIDJSON_CONFIG + \brief provide custom rapidjson namespace + + In order to avoid symbol clashes and/or "One Definition Rule" errors + between multiple inclusions of (different versions of) RapidJSON in + a single binary, users can customize the name of the main RapidJSON + namespace. + + In case of a single nesting level, defining \c RAPIDJSON_NAMESPACE + to a custom name (e.g. \c MyRapidJSON) is sufficient. If multiple + levels are needed, both \ref RAPIDJSON_NAMESPACE_BEGIN and \ref + RAPIDJSON_NAMESPACE_END need to be defined as well: + + \code + // in some .cpp file + #define RAPIDJSON_NAMESPACE my::rapidjson + #define RAPIDJSON_NAMESPACE_BEGIN namespace my { namespace rapidjson { + #define RAPIDJSON_NAMESPACE_END } } + #include "rapidjson/..." + \endcode + + \see rapidjson + */ +/*! \def RAPIDJSON_NAMESPACE_BEGIN + \ingroup RAPIDJSON_CONFIG + \brief provide custom rapidjson namespace (opening expression) + \see RAPIDJSON_NAMESPACE +*/ +/*! \def RAPIDJSON_NAMESPACE_END + \ingroup RAPIDJSON_CONFIG + \brief provide custom rapidjson namespace (closing expression) + \see RAPIDJSON_NAMESPACE +*/ +#ifndef RAPIDJSON_NAMESPACE +#define RAPIDJSON_NAMESPACE rapidjson +#endif +#ifndef RAPIDJSON_NAMESPACE_BEGIN +#define RAPIDJSON_NAMESPACE_BEGIN namespace RAPIDJSON_NAMESPACE { +#endif +#ifndef RAPIDJSON_NAMESPACE_END +#define RAPIDJSON_NAMESPACE_END } +#endif + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_HAS_STDSTRING + +#ifndef RAPIDJSON_HAS_STDSTRING +#ifdef RAPIDJSON_DOXYGEN_RUNNING +#define RAPIDJSON_HAS_STDSTRING 1 // force generation of documentation +#else +#define RAPIDJSON_HAS_STDSTRING 0 // no std::string support by default +#endif +/*! \def RAPIDJSON_HAS_STDSTRING + \ingroup RAPIDJSON_CONFIG + \brief Enable RapidJSON support for \c std::string + + By defining this preprocessor symbol to \c 1, several convenience functions for using + \ref rapidjson::GenericValue with \c std::string are enabled, especially + for construction and comparison. + + \hideinitializer +*/ +#endif // !defined(RAPIDJSON_HAS_STDSTRING) + +#if RAPIDJSON_HAS_STDSTRING +#include +#endif // RAPIDJSON_HAS_STDSTRING + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_NO_INT64DEFINE + +/*! \def RAPIDJSON_NO_INT64DEFINE + \ingroup RAPIDJSON_CONFIG + \brief Use external 64-bit integer types. + + RapidJSON requires the 64-bit integer types \c int64_t and \c uint64_t types + to be available at global scope. + + If users have their own definition, define RAPIDJSON_NO_INT64DEFINE to + prevent RapidJSON from defining its own types. +*/ +#ifndef RAPIDJSON_NO_INT64DEFINE +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN +#if defined(_MSC_VER) && (_MSC_VER < 1800) // Visual Studio 2013 +#include "msinttypes/stdint.h" +#include "msinttypes/inttypes.h" +#else +// Other compilers should have this. +#include +#include +#endif +//!@endcond +#ifdef RAPIDJSON_DOXYGEN_RUNNING +#define RAPIDJSON_NO_INT64DEFINE +#endif +#endif // RAPIDJSON_NO_INT64TYPEDEF + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_FORCEINLINE + +#ifndef RAPIDJSON_FORCEINLINE +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN +#if defined(_MSC_VER) && defined(NDEBUG) +#define RAPIDJSON_FORCEINLINE __forceinline +#elif defined(__GNUC__) && __GNUC__ >= 4 && defined(NDEBUG) +#define RAPIDJSON_FORCEINLINE __attribute__((always_inline)) +#else +#define RAPIDJSON_FORCEINLINE +#endif +//!@endcond +#endif // RAPIDJSON_FORCEINLINE + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_ENDIAN +#define RAPIDJSON_LITTLEENDIAN 0 //!< Little endian machine +#define RAPIDJSON_BIGENDIAN 1 //!< Big endian machine + +//! Endianness of the machine. +/*! + \def RAPIDJSON_ENDIAN + \ingroup RAPIDJSON_CONFIG + + GCC 4.6 provided macro for detecting endianness of the target machine. But other + compilers may not have this. User can define RAPIDJSON_ENDIAN to either + \ref RAPIDJSON_LITTLEENDIAN or \ref RAPIDJSON_BIGENDIAN. + + Default detection implemented with reference to + \li https://gcc.gnu.org/onlinedocs/gcc-4.6.0/cpp/Common-Predefined-Macros.html + \li http://www.boost.org/doc/libs/1_42_0/boost/detail/endian.hpp +*/ +#ifndef RAPIDJSON_ENDIAN +// Detect with GCC 4.6's macro +# ifdef __BYTE_ORDER__ +# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +# define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN +# elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +# define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN +# else +# error Unknown machine endianess detected. User needs to define RAPIDJSON_ENDIAN. +# endif // __BYTE_ORDER__ +// Detect with GLIBC's endian.h +# elif defined(__GLIBC__) +# include +# if (__BYTE_ORDER == __LITTLE_ENDIAN) +# define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN +# elif (__BYTE_ORDER == __BIG_ENDIAN) +# define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN +# else +# error Unknown machine endianess detected. User needs to define RAPIDJSON_ENDIAN. +# endif // __GLIBC__ +// Detect with _LITTLE_ENDIAN and _BIG_ENDIAN macro +# elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN) +# define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN +# elif defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN) +# define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN +// Detect with architecture macros +# elif defined(__sparc) || defined(__sparc__) || defined(_POWER) || defined(__powerpc__) || defined(__ppc__) || defined(__hpux) || defined(__hppa) || defined(_MIPSEB) || defined(_POWER) || defined(__s390__) +# define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN +# elif defined(__i386__) || defined(__alpha__) || defined(__ia64) || defined(__ia64__) || defined(_M_IX86) || defined(_M_IA64) || defined(_M_ALPHA) || defined(__amd64) || defined(__amd64__) || defined(_M_AMD64) || defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || defined(__bfin__) +# define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN +# elif defined(_MSC_VER) && defined(_M_ARM) +# define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN +# elif defined(RAPIDJSON_DOXYGEN_RUNNING) +# define RAPIDJSON_ENDIAN +# else +# error Unknown machine endianess detected. User needs to define RAPIDJSON_ENDIAN. +# endif +#endif // RAPIDJSON_ENDIAN + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_64BIT + +//! Whether using 64-bit architecture +#ifndef RAPIDJSON_64BIT +#if defined(__LP64__) || (defined(__x86_64__) && defined(__ILP32__)) || defined(_WIN64) || defined(__EMSCRIPTEN__) +#define RAPIDJSON_64BIT 1 +#else +#define RAPIDJSON_64BIT 0 +#endif +#endif // RAPIDJSON_64BIT + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_ALIGN + +//! Data alignment of the machine. +/*! \ingroup RAPIDJSON_CONFIG + \param x pointer to align + + Some machines require strict data alignment. Currently the default uses 4 bytes + alignment on 32-bit platforms and 8 bytes alignment for 64-bit platforms. + User can customize by defining the RAPIDJSON_ALIGN function macro. +*/ +#ifndef RAPIDJSON_ALIGN +#if RAPIDJSON_64BIT == 1 +#define RAPIDJSON_ALIGN(x) (((x) + static_cast(7u)) & ~static_cast(7u)) +#else +#define RAPIDJSON_ALIGN(x) (((x) + 3u) & ~3u) +#endif +#endif + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_UINT64_C2 + +//! Construct a 64-bit literal by a pair of 32-bit integer. +/*! + 64-bit literal with or without ULL suffix is prone to compiler warnings. + UINT64_C() is C macro which cause compilation problems. + Use this macro to define 64-bit constants by a pair of 32-bit integer. +*/ +#ifndef RAPIDJSON_UINT64_C2 +#define RAPIDJSON_UINT64_C2(high32, low32) ((static_cast(high32) << 32) | static_cast(low32)) +#endif + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_48BITPOINTER_OPTIMIZATION + +//! Use only lower 48-bit address for some pointers. +/*! + \ingroup RAPIDJSON_CONFIG + + This optimization uses the fact that current X86-64 architecture only implement lower 48-bit virtual address. + The higher 16-bit can be used for storing other data. + \c GenericValue uses this optimization to reduce its size form 24 bytes to 16 bytes in 64-bit architecture. +*/ +#ifndef RAPIDJSON_48BITPOINTER_OPTIMIZATION +#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64) +#define RAPIDJSON_48BITPOINTER_OPTIMIZATION 1 +#else +#define RAPIDJSON_48BITPOINTER_OPTIMIZATION 0 +#endif +#endif // RAPIDJSON_48BITPOINTER_OPTIMIZATION + +#if RAPIDJSON_48BITPOINTER_OPTIMIZATION == 1 +#if RAPIDJSON_64BIT != 1 +#error RAPIDJSON_48BITPOINTER_OPTIMIZATION can only be set to 1 when RAPIDJSON_64BIT=1 +#endif +#define RAPIDJSON_SETPOINTER(type, p, x) (p = reinterpret_cast((reinterpret_cast(p) & static_cast(RAPIDJSON_UINT64_C2(0xFFFF0000, 0x00000000))) | reinterpret_cast(reinterpret_cast(x)))) +#define RAPIDJSON_GETPOINTER(type, p) (reinterpret_cast(reinterpret_cast(p) & static_cast(RAPIDJSON_UINT64_C2(0x0000FFFF, 0xFFFFFFFF)))) +#else +#define RAPIDJSON_SETPOINTER(type, p, x) (p = (x)) +#define RAPIDJSON_GETPOINTER(type, p) (p) +#endif + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_SSE2/RAPIDJSON_SSE42/RAPIDJSON_SIMD + +/*! \def RAPIDJSON_SIMD + \ingroup RAPIDJSON_CONFIG + \brief Enable SSE2/SSE4.2 optimization. + + RapidJSON supports optimized implementations for some parsing operations + based on the SSE2 or SSE4.2 SIMD extensions on modern Intel-compatible + processors. + + To enable these optimizations, two different symbols can be defined; + \code + // Enable SSE2 optimization. + #define RAPIDJSON_SSE2 + + // Enable SSE4.2 optimization. + #define RAPIDJSON_SSE42 + \endcode + + \c RAPIDJSON_SSE42 takes precedence, if both are defined. + + If any of these symbols is defined, RapidJSON defines the macro + \c RAPIDJSON_SIMD to indicate the availability of the optimized code. +*/ +#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42) \ + || defined(RAPIDJSON_DOXYGEN_RUNNING) +#define RAPIDJSON_SIMD +#endif + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_NO_SIZETYPEDEFINE + +#ifndef RAPIDJSON_NO_SIZETYPEDEFINE +/*! \def RAPIDJSON_NO_SIZETYPEDEFINE + \ingroup RAPIDJSON_CONFIG + \brief User-provided \c SizeType definition. + + In order to avoid using 32-bit size types for indexing strings and arrays, + define this preprocessor symbol and provide the type rapidjson::SizeType + before including RapidJSON: + \code + #define RAPIDJSON_NO_SIZETYPEDEFINE + namespace rapidjson { typedef ::std::size_t SizeType; } + #include "rapidjson/..." + \endcode + + \see rapidjson::SizeType +*/ +#ifdef RAPIDJSON_DOXYGEN_RUNNING +#define RAPIDJSON_NO_SIZETYPEDEFINE +#endif +RAPIDJSON_NAMESPACE_BEGIN +//! Size type (for string lengths, array sizes, etc.) +/*! RapidJSON uses 32-bit array/string indices even on 64-bit platforms, + instead of using \c size_t. Users may override the SizeType by defining + \ref RAPIDJSON_NO_SIZETYPEDEFINE. +*/ +typedef unsigned SizeType; +RAPIDJSON_NAMESPACE_END +#endif + +// always import std::size_t to rapidjson namespace +RAPIDJSON_NAMESPACE_BEGIN +using std::size_t; +RAPIDJSON_NAMESPACE_END + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_ASSERT + +//! Assertion. +/*! \ingroup RAPIDJSON_CONFIG + By default, rapidjson uses C \c assert() for internal assertions. + User can override it by defining RAPIDJSON_ASSERT(x) macro. + + \note Parsing errors are handled and can be customized by the + \ref RAPIDJSON_ERRORS APIs. +*/ +#ifndef RAPIDJSON_ASSERT +#include +#define RAPIDJSON_ASSERT(x) assert(x) +#endif // RAPIDJSON_ASSERT + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_STATIC_ASSERT + +// Adopt from boost +#ifndef RAPIDJSON_STATIC_ASSERT +#ifndef __clang__ +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN +#endif +RAPIDJSON_NAMESPACE_BEGIN +template struct STATIC_ASSERTION_FAILURE; +template <> struct STATIC_ASSERTION_FAILURE { enum { value = 1 }; }; +template struct StaticAssertTest {}; +RAPIDJSON_NAMESPACE_END + +#define RAPIDJSON_JOIN(X, Y) RAPIDJSON_DO_JOIN(X, Y) +#define RAPIDJSON_DO_JOIN(X, Y) RAPIDJSON_DO_JOIN2(X, Y) +#define RAPIDJSON_DO_JOIN2(X, Y) X##Y + +#if defined(__GNUC__) +#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused)) +#else +#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE +#endif +#ifndef __clang__ +//!@endcond +#endif + +/*! \def RAPIDJSON_STATIC_ASSERT + \brief (Internal) macro to check for conditions at compile-time + \param x compile-time condition + \hideinitializer + */ +#define RAPIDJSON_STATIC_ASSERT(x) \ + typedef ::RAPIDJSON_NAMESPACE::StaticAssertTest< \ + sizeof(::RAPIDJSON_NAMESPACE::STATIC_ASSERTION_FAILURE)> \ + RAPIDJSON_JOIN(StaticAssertTypedef, __LINE__) RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE +#endif + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_LIKELY, RAPIDJSON_UNLIKELY + +//! Compiler branching hint for expression with high probability to be true. +/*! + \ingroup RAPIDJSON_CONFIG + \param x Boolean expression likely to be true. +*/ +#ifndef RAPIDJSON_LIKELY +#if defined(__GNUC__) || defined(__clang__) +#define RAPIDJSON_LIKELY(x) __builtin_expect(!!(x), 1) +#else +#define RAPIDJSON_LIKELY(x) (x) +#endif +#endif + +//! Compiler branching hint for expression with low probability to be true. +/*! + \ingroup RAPIDJSON_CONFIG + \param x Boolean expression unlikely to be true. +*/ +#ifndef RAPIDJSON_UNLIKELY +#if defined(__GNUC__) || defined(__clang__) +#define RAPIDJSON_UNLIKELY(x) __builtin_expect(!!(x), 0) +#else +#define RAPIDJSON_UNLIKELY(x) (x) +#endif +#endif + +/////////////////////////////////////////////////////////////////////////////// +// Helpers + +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN + +#define RAPIDJSON_MULTILINEMACRO_BEGIN do { +#define RAPIDJSON_MULTILINEMACRO_END \ +} while((void)0, 0) + +// adopted from Boost +#define RAPIDJSON_VERSION_CODE(x,y,z) \ + (((x)*100000) + ((y)*100) + (z)) + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_DIAG_PUSH/POP, RAPIDJSON_DIAG_OFF + +#if defined(__GNUC__) +#define RAPIDJSON_GNUC \ + RAPIDJSON_VERSION_CODE(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__) +#endif + +#if defined(__clang__) || (defined(RAPIDJSON_GNUC) && RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,2,0)) + +#define RAPIDJSON_PRAGMA(x) _Pragma(RAPIDJSON_STRINGIFY(x)) +#define RAPIDJSON_DIAG_PRAGMA(x) RAPIDJSON_PRAGMA(GCC diagnostic x) +#define RAPIDJSON_DIAG_OFF(x) \ + RAPIDJSON_DIAG_PRAGMA(ignored RAPIDJSON_STRINGIFY(RAPIDJSON_JOIN(-W,x))) + +// push/pop support in Clang and GCC>=4.6 +#if defined(__clang__) || (defined(RAPIDJSON_GNUC) && RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,6,0)) +#define RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_PRAGMA(push) +#define RAPIDJSON_DIAG_POP RAPIDJSON_DIAG_PRAGMA(pop) +#else // GCC >= 4.2, < 4.6 +#define RAPIDJSON_DIAG_PUSH /* ignored */ +#define RAPIDJSON_DIAG_POP /* ignored */ +#endif + +#elif defined(_MSC_VER) + +// pragma (MSVC specific) +#define RAPIDJSON_PRAGMA(x) __pragma(x) +#define RAPIDJSON_DIAG_PRAGMA(x) RAPIDJSON_PRAGMA(warning(x)) + +#define RAPIDJSON_DIAG_OFF(x) RAPIDJSON_DIAG_PRAGMA(disable: x) +#define RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_PRAGMA(push) +#define RAPIDJSON_DIAG_POP RAPIDJSON_DIAG_PRAGMA(pop) + +#else + +#define RAPIDJSON_DIAG_OFF(x) /* ignored */ +#define RAPIDJSON_DIAG_PUSH /* ignored */ +#define RAPIDJSON_DIAG_POP /* ignored */ + +#endif // RAPIDJSON_DIAG_* + +/////////////////////////////////////////////////////////////////////////////// +// C++11 features + +#ifndef RAPIDJSON_HAS_CXX11_RVALUE_REFS +#if defined(__clang__) +#if __has_feature(cxx_rvalue_references) && \ + (defined(_LIBCPP_VERSION) || defined(__GLIBCXX__) && __GLIBCXX__ >= 20080306) +#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1 +#else +#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 0 +#endif +#elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,3,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \ + (defined(_MSC_VER) && _MSC_VER >= 1600) + +#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1 +#else +#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 0 +#endif +#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS + +#ifndef RAPIDJSON_HAS_CXX11_NOEXCEPT +#if defined(__clang__) +#define RAPIDJSON_HAS_CXX11_NOEXCEPT __has_feature(cxx_noexcept) +#elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,6,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) +// (defined(_MSC_VER) && _MSC_VER >= ????) // not yet supported +#define RAPIDJSON_HAS_CXX11_NOEXCEPT 1 +#else +#define RAPIDJSON_HAS_CXX11_NOEXCEPT 0 +#endif +#endif +#if RAPIDJSON_HAS_CXX11_NOEXCEPT +#define RAPIDJSON_NOEXCEPT noexcept +#else +#define RAPIDJSON_NOEXCEPT /* noexcept */ +#endif // RAPIDJSON_HAS_CXX11_NOEXCEPT + +// no automatic detection, yet +#ifndef RAPIDJSON_HAS_CXX11_TYPETRAITS +#define RAPIDJSON_HAS_CXX11_TYPETRAITS 0 +#endif + +#ifndef RAPIDJSON_HAS_CXX11_RANGE_FOR +#if defined(__clang__) +#define RAPIDJSON_HAS_CXX11_RANGE_FOR __has_feature(cxx_range_for) +#elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,3,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \ + (defined(_MSC_VER) && _MSC_VER >= 1700) +#define RAPIDJSON_HAS_CXX11_RANGE_FOR 1 +#else +#define RAPIDJSON_HAS_CXX11_RANGE_FOR 0 +#endif +#endif // RAPIDJSON_HAS_CXX11_RANGE_FOR + +//!@endcond + +/////////////////////////////////////////////////////////////////////////////// +// new/delete + +#ifndef RAPIDJSON_NEW +///! customization point for global \c new +#define RAPIDJSON_NEW(x) new x +#endif +#ifndef RAPIDJSON_DELETE +///! customization point for global \c delete +#define RAPIDJSON_DELETE(x) delete x +#endif + +/////////////////////////////////////////////////////////////////////////////// +// Type + +/*! \namespace rapidjson + \brief main RapidJSON namespace + \see RAPIDJSON_NAMESPACE +*/ +RAPIDJSON_NAMESPACE_BEGIN + +//! Type of JSON value +enum Type { + kNullType = 0, //!< null + kFalseType = 1, //!< false + kTrueType = 2, //!< true + kObjectType = 3, //!< object + kArrayType = 4, //!< array + kStringType = 5, //!< string + kNumberType = 6 //!< number +}; + +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_RAPIDJSON_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/reader.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/reader.h new file mode 100644 index 0000000..19f8849 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/reader.h @@ -0,0 +1,1879 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_READER_H_ +#define RAPIDJSON_READER_H_ + +/*! \file reader.h */ + +#include "allocators.h" +#include "stream.h" +#include "encodedstream.h" +#include "internal/meta.h" +#include "internal/stack.h" +#include "internal/strtod.h" +#include + +#if defined(RAPIDJSON_SIMD) && defined(_MSC_VER) +#include +#pragma intrinsic(_BitScanForward) +#endif +#ifdef RAPIDJSON_SSE42 +#include +#elif defined(RAPIDJSON_SSE2) +#include +#endif + +#ifdef _MSC_VER +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant +RAPIDJSON_DIAG_OFF(4702) // unreachable code +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(old-style-cast) +RAPIDJSON_DIAG_OFF(padded) +RAPIDJSON_DIAG_OFF(switch-enum) +#endif + +#ifdef __GNUC__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(effc++) +#endif + +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN +#define RAPIDJSON_NOTHING /* deliberately empty */ +#ifndef RAPIDJSON_PARSE_ERROR_EARLY_RETURN +#define RAPIDJSON_PARSE_ERROR_EARLY_RETURN(value) \ + RAPIDJSON_MULTILINEMACRO_BEGIN \ + if (RAPIDJSON_UNLIKELY(HasParseError())) { return value; } \ + RAPIDJSON_MULTILINEMACRO_END +#endif +#define RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID \ + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(RAPIDJSON_NOTHING) +//!@endcond + +/*! \def RAPIDJSON_PARSE_ERROR_NORETURN + \ingroup RAPIDJSON_ERRORS + \brief Macro to indicate a parse error. + \param parseErrorCode \ref rapidjson::ParseErrorCode of the error + \param offset position of the error in JSON input (\c size_t) + + This macros can be used as a customization point for the internal + error handling mechanism of RapidJSON. + + A common usage model is to throw an exception instead of requiring the + caller to explicitly check the \ref rapidjson::GenericReader::Parse's + return value: + + \code + #define RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode,offset) \ + throw ParseException(parseErrorCode, #parseErrorCode, offset) + + #include // std::runtime_error + #include "rapidjson/error/error.h" // rapidjson::ParseResult + + struct ParseException : std::runtime_error, rapidjson::ParseResult { + ParseException(rapidjson::ParseErrorCode code, const char* msg, size_t offset) + : std::runtime_error(msg), ParseResult(code, offset) {} + }; + + #include "rapidjson/reader.h" + \endcode + + \see RAPIDJSON_PARSE_ERROR, rapidjson::GenericReader::Parse + */ +#ifndef RAPIDJSON_PARSE_ERROR_NORETURN +#define RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode, offset) \ + RAPIDJSON_MULTILINEMACRO_BEGIN \ + RAPIDJSON_ASSERT(!HasParseError()); /* Error can only be assigned once */ \ + SetParseError(parseErrorCode, offset); \ + RAPIDJSON_MULTILINEMACRO_END +#endif + +/*! \def RAPIDJSON_PARSE_ERROR + \ingroup RAPIDJSON_ERRORS + \brief (Internal) macro to indicate and handle a parse error. + \param parseErrorCode \ref rapidjson::ParseErrorCode of the error + \param offset position of the error in JSON input (\c size_t) + + Invokes RAPIDJSON_PARSE_ERROR_NORETURN and stops the parsing. + + \see RAPIDJSON_PARSE_ERROR_NORETURN + \hideinitializer + */ +#ifndef RAPIDJSON_PARSE_ERROR +#define RAPIDJSON_PARSE_ERROR(parseErrorCode, offset) \ + RAPIDJSON_MULTILINEMACRO_BEGIN \ + RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode, offset); \ + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; \ + RAPIDJSON_MULTILINEMACRO_END +#endif + +#include "error/error.h" // ParseErrorCode, ParseResult + +RAPIDJSON_NAMESPACE_BEGIN + +/////////////////////////////////////////////////////////////////////////////// +// ParseFlag + +/*! \def RAPIDJSON_PARSE_DEFAULT_FLAGS + \ingroup RAPIDJSON_CONFIG + \brief User-defined kParseDefaultFlags definition. + + User can define this as any \c ParseFlag combinations. +*/ +#ifndef RAPIDJSON_PARSE_DEFAULT_FLAGS +#define RAPIDJSON_PARSE_DEFAULT_FLAGS kParseNoFlags +#endif + +//! Combination of parseFlags +/*! \see Reader::Parse, Document::Parse, Document::ParseInsitu, Document::ParseStream + */ +enum ParseFlag { + kParseNoFlags = 0, //!< No flags are set. + kParseInsituFlag = 1, //!< In-situ(destructive) parsing. + kParseValidateEncodingFlag = 2, //!< Validate encoding of JSON strings. + kParseIterativeFlag = 4, //!< Iterative(constant complexity in terms of function call stack size) parsing. + kParseStopWhenDoneFlag = 8, //!< After parsing a complete JSON root from stream, stop further processing the rest of stream. When this flag is used, parser will not generate kParseErrorDocumentRootNotSingular error. + kParseFullPrecisionFlag = 16, //!< Parse number in full precision (but slower). + kParseCommentsFlag = 32, //!< Allow one-line (//) and multi-line (/**/) comments. + kParseNumbersAsStringsFlag = 64, //!< Parse all numbers (ints/doubles) as strings. + kParseTrailingCommasFlag = 128, //!< Allow trailing commas at the end of objects and arrays. + kParseNanAndInfFlag = 256, //!< Allow parsing NaN, Inf, Infinity, -Inf and -Infinity as doubles. + kParseDefaultFlags = RAPIDJSON_PARSE_DEFAULT_FLAGS //!< Default parse flags. Can be customized by defining RAPIDJSON_PARSE_DEFAULT_FLAGS +}; + +/////////////////////////////////////////////////////////////////////////////// +// Handler + +/*! \class rapidjson::Handler + \brief Concept for receiving events from GenericReader upon parsing. + The functions return true if no error occurs. If they return false, + the event publisher should terminate the process. +\code +concept Handler { + typename Ch; + + bool Null(); + bool Bool(bool b); + bool Int(int i); + bool Uint(unsigned i); + bool Int64(int64_t i); + bool Uint64(uint64_t i); + bool Double(double d); + /// enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length) + bool RawNumber(const Ch* str, SizeType length, bool copy); + bool String(const Ch* str, SizeType length, bool copy); + bool StartObject(); + bool Key(const Ch* str, SizeType length, bool copy); + bool EndObject(SizeType memberCount); + bool StartArray(); + bool EndArray(SizeType elementCount); +}; +\endcode +*/ +/////////////////////////////////////////////////////////////////////////////// +// BaseReaderHandler + +//! Default implementation of Handler. +/*! This can be used as base class of any reader handler. + \note implements Handler concept +*/ +template, typename Derived = void> +struct BaseReaderHandler { + typedef typename Encoding::Ch Ch; + + typedef typename internal::SelectIf, BaseReaderHandler, Derived>::Type Override; + + bool Default() { return true; } + bool Null() { return static_cast(*this).Default(); } + bool Bool(bool) { return static_cast(*this).Default(); } + bool Int(int) { return static_cast(*this).Default(); } + bool Uint(unsigned) { return static_cast(*this).Default(); } + bool Int64(int64_t) { return static_cast(*this).Default(); } + bool Uint64(uint64_t) { return static_cast(*this).Default(); } + bool Double(double) { return static_cast(*this).Default(); } + /// enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length) + bool RawNumber(const Ch* str, SizeType len, bool copy) { return static_cast(*this).String(str, len, copy); } + bool String(const Ch*, SizeType, bool) { return static_cast(*this).Default(); } + bool StartObject() { return static_cast(*this).Default(); } + bool Key(const Ch* str, SizeType len, bool copy) { return static_cast(*this).String(str, len, copy); } + bool EndObject(SizeType) { return static_cast(*this).Default(); } + bool StartArray() { return static_cast(*this).Default(); } + bool EndArray(SizeType) { return static_cast(*this).Default(); } +}; + +/////////////////////////////////////////////////////////////////////////////// +// StreamLocalCopy + +namespace internal { + +template::copyOptimization> +class StreamLocalCopy; + +//! Do copy optimization. +template +class StreamLocalCopy { +public: + StreamLocalCopy(Stream& original) : s(original), original_(original) {} + ~StreamLocalCopy() { original_ = s; } + + Stream s; + +private: + StreamLocalCopy& operator=(const StreamLocalCopy&) /* = delete */; + + Stream& original_; +}; + +//! Keep reference. +template +class StreamLocalCopy { +public: + StreamLocalCopy(Stream& original) : s(original) {} + + Stream& s; + +private: + StreamLocalCopy& operator=(const StreamLocalCopy&) /* = delete */; +}; + +} // namespace internal + +/////////////////////////////////////////////////////////////////////////////// +// SkipWhitespace + +//! Skip the JSON white spaces in a stream. +/*! \param is A input stream for skipping white spaces. + \note This function has SSE2/SSE4.2 specialization. +*/ +template +void SkipWhitespace(InputStream& is) { + internal::StreamLocalCopy copy(is); + InputStream& s(copy.s); + + typename InputStream::Ch c; + while ((c = s.Peek()) == ' ' || c == '\n' || c == '\r' || c == '\t') + s.Take(); +} + +inline const char* SkipWhitespace(const char* p, const char* end) { + while (p != end && (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t')) + ++p; + return p; +} + +#ifdef RAPIDJSON_SSE42 +//! Skip whitespace with SSE 4.2 pcmpistrm instruction, testing 16 8-byte characters at once. +inline const char *SkipWhitespace_SIMD(const char* p) { + // Fast return for single non-whitespace + if (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t') + ++p; + else + return p; + + // 16-byte align to the next boundary + const char* nextAligned = reinterpret_cast((reinterpret_cast(p) + 15) & static_cast(~15)); + while (p != nextAligned) + if (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t') + ++p; + else + return p; + + // The rest of string using SIMD + static const char whitespace[16] = " \n\r\t"; + const __m128i w = _mm_loadu_si128(reinterpret_cast(&whitespace[0])); + + for (;; p += 16) { + const __m128i s = _mm_load_si128(reinterpret_cast(p)); + const int r = _mm_cvtsi128_si32(_mm_cmpistrm(w, s, _SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_BIT_MASK | _SIDD_NEGATIVE_POLARITY)); + if (r != 0) { // some of characters is non-whitespace +#ifdef _MSC_VER // Find the index of first non-whitespace + unsigned long offset; + _BitScanForward(&offset, r); + return p + offset; +#else + return p + __builtin_ffs(r) - 1; +#endif + } + } +} + +inline const char *SkipWhitespace_SIMD(const char* p, const char* end) { + // Fast return for single non-whitespace + if (p != end && (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t')) + ++p; + else + return p; + + // The middle of string using SIMD + static const char whitespace[16] = " \n\r\t"; + const __m128i w = _mm_loadu_si128(reinterpret_cast(&whitespace[0])); + + for (; p <= end - 16; p += 16) { + const __m128i s = _mm_loadu_si128(reinterpret_cast(p)); + const int r = _mm_cvtsi128_si32(_mm_cmpistrm(w, s, _SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_BIT_MASK | _SIDD_NEGATIVE_POLARITY)); + if (r != 0) { // some of characters is non-whitespace +#ifdef _MSC_VER // Find the index of first non-whitespace + unsigned long offset; + _BitScanForward(&offset, r); + return p + offset; +#else + return p + __builtin_ffs(r) - 1; +#endif + } + } + + return SkipWhitespace(p, end); +} + +#elif defined(RAPIDJSON_SSE2) + +//! Skip whitespace with SSE2 instructions, testing 16 8-byte characters at once. +inline const char *SkipWhitespace_SIMD(const char* p) { + // Fast return for single non-whitespace + if (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t') + ++p; + else + return p; + + // 16-byte align to the next boundary + const char* nextAligned = reinterpret_cast((reinterpret_cast(p) + 15) & static_cast(~15)); + while (p != nextAligned) + if (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t') + ++p; + else + return p; + + // The rest of string + #define C16(c) { c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c } + static const char whitespaces[4][16] = { C16(' '), C16('\n'), C16('\r'), C16('\t') }; + #undef C16 + + const __m128i w0 = _mm_loadu_si128(reinterpret_cast(&whitespaces[0][0])); + const __m128i w1 = _mm_loadu_si128(reinterpret_cast(&whitespaces[1][0])); + const __m128i w2 = _mm_loadu_si128(reinterpret_cast(&whitespaces[2][0])); + const __m128i w3 = _mm_loadu_si128(reinterpret_cast(&whitespaces[3][0])); + + for (;; p += 16) { + const __m128i s = _mm_load_si128(reinterpret_cast(p)); + __m128i x = _mm_cmpeq_epi8(s, w0); + x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w1)); + x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w2)); + x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w3)); + unsigned short r = static_cast(~_mm_movemask_epi8(x)); + if (r != 0) { // some of characters may be non-whitespace +#ifdef _MSC_VER // Find the index of first non-whitespace + unsigned long offset; + _BitScanForward(&offset, r); + return p + offset; +#else + return p + __builtin_ffs(r) - 1; +#endif + } + } +} + +inline const char *SkipWhitespace_SIMD(const char* p, const char* end) { + // Fast return for single non-whitespace + if (p != end && (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t')) + ++p; + else + return p; + + // The rest of string + #define C16(c) { c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c } + static const char whitespaces[4][16] = { C16(' '), C16('\n'), C16('\r'), C16('\t') }; + #undef C16 + + const __m128i w0 = _mm_loadu_si128(reinterpret_cast(&whitespaces[0][0])); + const __m128i w1 = _mm_loadu_si128(reinterpret_cast(&whitespaces[1][0])); + const __m128i w2 = _mm_loadu_si128(reinterpret_cast(&whitespaces[2][0])); + const __m128i w3 = _mm_loadu_si128(reinterpret_cast(&whitespaces[3][0])); + + for (; p <= end - 16; p += 16) { + const __m128i s = _mm_loadu_si128(reinterpret_cast(p)); + __m128i x = _mm_cmpeq_epi8(s, w0); + x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w1)); + x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w2)); + x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w3)); + unsigned short r = static_cast(~_mm_movemask_epi8(x)); + if (r != 0) { // some of characters may be non-whitespace +#ifdef _MSC_VER // Find the index of first non-whitespace + unsigned long offset; + _BitScanForward(&offset, r); + return p + offset; +#else + return p + __builtin_ffs(r) - 1; +#endif + } + } + + return SkipWhitespace(p, end); +} + +#endif // RAPIDJSON_SSE2 + +#ifdef RAPIDJSON_SIMD +//! Template function specialization for InsituStringStream +template<> inline void SkipWhitespace(InsituStringStream& is) { + is.src_ = const_cast(SkipWhitespace_SIMD(is.src_)); +} + +//! Template function specialization for StringStream +template<> inline void SkipWhitespace(StringStream& is) { + is.src_ = SkipWhitespace_SIMD(is.src_); +} + +template<> inline void SkipWhitespace(EncodedInputStream, MemoryStream>& is) { + is.is_.src_ = SkipWhitespace_SIMD(is.is_.src_, is.is_.end_); +} +#endif // RAPIDJSON_SIMD + +/////////////////////////////////////////////////////////////////////////////// +// GenericReader + +//! SAX-style JSON parser. Use \ref Reader for UTF8 encoding and default allocator. +/*! GenericReader parses JSON text from a stream, and send events synchronously to an + object implementing Handler concept. + + It needs to allocate a stack for storing a single decoded string during + non-destructive parsing. + + For in-situ parsing, the decoded string is directly written to the source + text string, no temporary buffer is required. + + A GenericReader object can be reused for parsing multiple JSON text. + + \tparam SourceEncoding Encoding of the input stream. + \tparam TargetEncoding Encoding of the parse output. + \tparam StackAllocator Allocator type for stack. +*/ +template +class GenericReader { +public: + typedef typename SourceEncoding::Ch Ch; //!< SourceEncoding character type + + //! Constructor. + /*! \param stackAllocator Optional allocator for allocating stack memory. (Only use for non-destructive parsing) + \param stackCapacity stack capacity in bytes for storing a single decoded string. (Only use for non-destructive parsing) + */ + GenericReader(StackAllocator* stackAllocator = 0, size_t stackCapacity = kDefaultStackCapacity) : stack_(stackAllocator, stackCapacity), parseResult_() {} + + //! Parse JSON text. + /*! \tparam parseFlags Combination of \ref ParseFlag. + \tparam InputStream Type of input stream, implementing Stream concept. + \tparam Handler Type of handler, implementing Handler concept. + \param is Input stream to be parsed. + \param handler The handler to receive events. + \return Whether the parsing is successful. + */ + template + ParseResult Parse(InputStream& is, Handler& handler) { + if (parseFlags & kParseIterativeFlag) + return IterativeParse(is, handler); + + parseResult_.Clear(); + + ClearStackOnExit scope(*this); + + SkipWhitespaceAndComments(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_); + + if (RAPIDJSON_UNLIKELY(is.Peek() == '\0')) { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorDocumentEmpty, is.Tell()); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_); + } + else { + ParseValue(is, handler); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_); + + if (!(parseFlags & kParseStopWhenDoneFlag)) { + SkipWhitespaceAndComments(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_); + + if (RAPIDJSON_UNLIKELY(is.Peek() != '\0')) { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorDocumentRootNotSingular, is.Tell()); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_); + } + } + } + + return parseResult_; + } + + //! Parse JSON text (with \ref kParseDefaultFlags) + /*! \tparam InputStream Type of input stream, implementing Stream concept + \tparam Handler Type of handler, implementing Handler concept. + \param is Input stream to be parsed. + \param handler The handler to receive events. + \return Whether the parsing is successful. + */ + template + ParseResult Parse(InputStream& is, Handler& handler) { + return Parse(is, handler); + } + + //! Whether a parse error has occured in the last parsing. + bool HasParseError() const { return parseResult_.IsError(); } + + //! Get the \ref ParseErrorCode of last parsing. + ParseErrorCode GetParseErrorCode() const { return parseResult_.Code(); } + + //! Get the position of last parsing error in input, 0 otherwise. + size_t GetErrorOffset() const { return parseResult_.Offset(); } + +protected: + void SetParseError(ParseErrorCode code, size_t offset) { parseResult_.Set(code, offset); } + +private: + // Prohibit copy constructor & assignment operator. + GenericReader(const GenericReader&); + GenericReader& operator=(const GenericReader&); + + void ClearStack() { stack_.Clear(); } + + // clear stack on any exit from ParseStream, e.g. due to exception + struct ClearStackOnExit { + explicit ClearStackOnExit(GenericReader& r) : r_(r) {} + ~ClearStackOnExit() { r_.ClearStack(); } + private: + GenericReader& r_; + ClearStackOnExit(const ClearStackOnExit&); + ClearStackOnExit& operator=(const ClearStackOnExit&); + }; + + template + void SkipWhitespaceAndComments(InputStream& is) { + SkipWhitespace(is); + + if (parseFlags & kParseCommentsFlag) { + while (RAPIDJSON_UNLIKELY(Consume(is, '/'))) { + if (Consume(is, '*')) { + while (true) { + if (RAPIDJSON_UNLIKELY(is.Peek() == '\0')) + RAPIDJSON_PARSE_ERROR(kParseErrorUnspecificSyntaxError, is.Tell()); + else if (Consume(is, '*')) { + if (Consume(is, '/')) + break; + } + else + is.Take(); + } + } + else if (RAPIDJSON_LIKELY(Consume(is, '/'))) + while (is.Peek() != '\0' && is.Take() != '\n'); + else + RAPIDJSON_PARSE_ERROR(kParseErrorUnspecificSyntaxError, is.Tell()); + + SkipWhitespace(is); + } + } + } + + // Parse object: { string : value, ... } + template + void ParseObject(InputStream& is, Handler& handler) { + RAPIDJSON_ASSERT(is.Peek() == '{'); + is.Take(); // Skip '{' + + if (RAPIDJSON_UNLIKELY(!handler.StartObject())) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + + SkipWhitespaceAndComments(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + if (Consume(is, '}')) { + if (RAPIDJSON_UNLIKELY(!handler.EndObject(0))) // empty object + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + return; + } + + for (SizeType memberCount = 0;;) { + if (RAPIDJSON_UNLIKELY(is.Peek() != '"')) + RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissName, is.Tell()); + + ParseString(is, handler, true); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + SkipWhitespaceAndComments(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + if (RAPIDJSON_UNLIKELY(!Consume(is, ':'))) + RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissColon, is.Tell()); + + SkipWhitespaceAndComments(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + ParseValue(is, handler); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + SkipWhitespaceAndComments(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + ++memberCount; + + switch (is.Peek()) { + case ',': + is.Take(); + SkipWhitespaceAndComments(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + break; + case '}': + is.Take(); + if (RAPIDJSON_UNLIKELY(!handler.EndObject(memberCount))) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + return; + default: + RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissCommaOrCurlyBracket, is.Tell()); break; // This useless break is only for making warning and coverage happy + } + + if (parseFlags & kParseTrailingCommasFlag) { + if (is.Peek() == '}') { + if (RAPIDJSON_UNLIKELY(!handler.EndObject(memberCount))) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + is.Take(); + return; + } + } + } + } + + // Parse array: [ value, ... ] + template + void ParseArray(InputStream& is, Handler& handler) { + RAPIDJSON_ASSERT(is.Peek() == '['); + is.Take(); // Skip '[' + + if (RAPIDJSON_UNLIKELY(!handler.StartArray())) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + + SkipWhitespaceAndComments(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + if (Consume(is, ']')) { + if (RAPIDJSON_UNLIKELY(!handler.EndArray(0))) // empty array + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + return; + } + + for (SizeType elementCount = 0;;) { + ParseValue(is, handler); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + ++elementCount; + SkipWhitespaceAndComments(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + + if (Consume(is, ',')) { + SkipWhitespaceAndComments(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + } + else if (Consume(is, ']')) { + if (RAPIDJSON_UNLIKELY(!handler.EndArray(elementCount))) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + return; + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorArrayMissCommaOrSquareBracket, is.Tell()); + + if (parseFlags & kParseTrailingCommasFlag) { + if (is.Peek() == ']') { + if (RAPIDJSON_UNLIKELY(!handler.EndArray(elementCount))) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + is.Take(); + return; + } + } + } + } + + template + void ParseNull(InputStream& is, Handler& handler) { + RAPIDJSON_ASSERT(is.Peek() == 'n'); + is.Take(); + + if (RAPIDJSON_LIKELY(Consume(is, 'u') && Consume(is, 'l') && Consume(is, 'l'))) { + if (RAPIDJSON_UNLIKELY(!handler.Null())) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, is.Tell()); + } + + template + void ParseTrue(InputStream& is, Handler& handler) { + RAPIDJSON_ASSERT(is.Peek() == 't'); + is.Take(); + + if (RAPIDJSON_LIKELY(Consume(is, 'r') && Consume(is, 'u') && Consume(is, 'e'))) { + if (RAPIDJSON_UNLIKELY(!handler.Bool(true))) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, is.Tell()); + } + + template + void ParseFalse(InputStream& is, Handler& handler) { + RAPIDJSON_ASSERT(is.Peek() == 'f'); + is.Take(); + + if (RAPIDJSON_LIKELY(Consume(is, 'a') && Consume(is, 'l') && Consume(is, 's') && Consume(is, 'e'))) { + if (RAPIDJSON_UNLIKELY(!handler.Bool(false))) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell()); + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, is.Tell()); + } + + template + RAPIDJSON_FORCEINLINE static bool Consume(InputStream& is, typename InputStream::Ch expect) { + if (RAPIDJSON_LIKELY(is.Peek() == expect)) { + is.Take(); + return true; + } + else + return false; + } + + // Helper function to parse four hexidecimal digits in \uXXXX in ParseString(). + template + unsigned ParseHex4(InputStream& is, size_t escapeOffset) { + unsigned codepoint = 0; + for (int i = 0; i < 4; i++) { + Ch c = is.Peek(); + codepoint <<= 4; + codepoint += static_cast(c); + if (c >= '0' && c <= '9') + codepoint -= '0'; + else if (c >= 'A' && c <= 'F') + codepoint -= 'A' - 10; + else if (c >= 'a' && c <= 'f') + codepoint -= 'a' - 10; + else { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorStringUnicodeEscapeInvalidHex, escapeOffset); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(0); + } + is.Take(); + } + return codepoint; + } + + template + class StackStream { + public: + typedef CharType Ch; + + StackStream(internal::Stack& stack) : stack_(stack), length_(0) {} + RAPIDJSON_FORCEINLINE void Put(Ch c) { + *stack_.template Push() = c; + ++length_; + } + + RAPIDJSON_FORCEINLINE void* Push(SizeType count) { + length_ += count; + return stack_.template Push(count); + } + + size_t Length() const { return length_; } + + Ch* Pop() { + return stack_.template Pop(length_); + } + + private: + StackStream(const StackStream&); + StackStream& operator=(const StackStream&); + + internal::Stack& stack_; + SizeType length_; + }; + + // Parse string and generate String event. Different code paths for kParseInsituFlag. + template + void ParseString(InputStream& is, Handler& handler, bool isKey = false) { + internal::StreamLocalCopy copy(is); + InputStream& s(copy.s); + + RAPIDJSON_ASSERT(s.Peek() == '\"'); + s.Take(); // Skip '\"' + + bool success = false; + if (parseFlags & kParseInsituFlag) { + typename InputStream::Ch *head = s.PutBegin(); + ParseStringToStream(s, s); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + size_t length = s.PutEnd(head) - 1; + RAPIDJSON_ASSERT(length <= 0xFFFFFFFF); + const typename TargetEncoding::Ch* const str = reinterpret_cast(head); + success = (isKey ? handler.Key(str, SizeType(length), false) : handler.String(str, SizeType(length), false)); + } + else { + StackStream stackStream(stack_); + ParseStringToStream(s, stackStream); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + SizeType length = static_cast(stackStream.Length()) - 1; + const typename TargetEncoding::Ch* const str = stackStream.Pop(); + success = (isKey ? handler.Key(str, length, true) : handler.String(str, length, true)); + } + if (RAPIDJSON_UNLIKELY(!success)) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, s.Tell()); + } + + // Parse string to an output is + // This function handles the prefix/suffix double quotes, escaping, and optional encoding validation. + template + RAPIDJSON_FORCEINLINE void ParseStringToStream(InputStream& is, OutputStream& os) { +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN +#define Z16 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + static const char escape[256] = { + Z16, Z16, 0, 0,'\"', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'/', + Z16, Z16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'\\', 0, 0, 0, + 0, 0,'\b', 0, 0, 0,'\f', 0, 0, 0, 0, 0, 0, 0,'\n', 0, + 0, 0,'\r', 0,'\t', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16 + }; +#undef Z16 +//!@endcond + + for (;;) { + // Scan and copy string before "\\\"" or < 0x20. This is an optional optimzation. + if (!(parseFlags & kParseValidateEncodingFlag)) + ScanCopyUnescapedString(is, os); + + Ch c = is.Peek(); + if (RAPIDJSON_UNLIKELY(c == '\\')) { // Escape + size_t escapeOffset = is.Tell(); // For invalid escaping, report the inital '\\' as error offset + is.Take(); + Ch e = is.Peek(); + if ((sizeof(Ch) == 1 || unsigned(e) < 256) && RAPIDJSON_LIKELY(escape[static_cast(e)])) { + is.Take(); + os.Put(static_cast(escape[static_cast(e)])); + } + else if (RAPIDJSON_LIKELY(e == 'u')) { // Unicode + is.Take(); + unsigned codepoint = ParseHex4(is, escapeOffset); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + if (RAPIDJSON_UNLIKELY(codepoint >= 0xD800 && codepoint <= 0xDBFF)) { + // Handle UTF-16 surrogate pair + if (RAPIDJSON_UNLIKELY(!Consume(is, '\\') || !Consume(is, 'u'))) + RAPIDJSON_PARSE_ERROR(kParseErrorStringUnicodeSurrogateInvalid, escapeOffset); + unsigned codepoint2 = ParseHex4(is, escapeOffset); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; + if (RAPIDJSON_UNLIKELY(codepoint2 < 0xDC00 || codepoint2 > 0xDFFF)) + RAPIDJSON_PARSE_ERROR(kParseErrorStringUnicodeSurrogateInvalid, escapeOffset); + codepoint = (((codepoint - 0xD800) << 10) | (codepoint2 - 0xDC00)) + 0x10000; + } + TEncoding::Encode(os, codepoint); + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorStringEscapeInvalid, escapeOffset); + } + else if (RAPIDJSON_UNLIKELY(c == '"')) { // Closing double quote + is.Take(); + os.Put('\0'); // null-terminate the string + return; + } + else if (RAPIDJSON_UNLIKELY(static_cast(c) < 0x20)) { // RFC 4627: unescaped = %x20-21 / %x23-5B / %x5D-10FFFF + if (c == '\0') + RAPIDJSON_PARSE_ERROR(kParseErrorStringMissQuotationMark, is.Tell()); + else + RAPIDJSON_PARSE_ERROR(kParseErrorStringEscapeInvalid, is.Tell()); + } + else { + size_t offset = is.Tell(); + if (RAPIDJSON_UNLIKELY((parseFlags & kParseValidateEncodingFlag ? + !Transcoder::Validate(is, os) : + !Transcoder::Transcode(is, os)))) + RAPIDJSON_PARSE_ERROR(kParseErrorStringInvalidEncoding, offset); + } + } + } + + template + static RAPIDJSON_FORCEINLINE void ScanCopyUnescapedString(InputStream&, OutputStream&) { + // Do nothing for generic version + } + +#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42) + // StringStream -> StackStream + static RAPIDJSON_FORCEINLINE void ScanCopyUnescapedString(StringStream& is, StackStream& os) { + const char* p = is.src_; + + // Scan one by one until alignment (unaligned load may cross page boundary and cause crash) + const char* nextAligned = reinterpret_cast((reinterpret_cast(p) + 15) & static_cast(~15)); + while (p != nextAligned) + if (RAPIDJSON_UNLIKELY(*p == '\"') || RAPIDJSON_UNLIKELY(*p == '\\') || RAPIDJSON_UNLIKELY(static_cast(*p) < 0x20)) { + is.src_ = p; + return; + } + else + os.Put(*p++); + + // The rest of string using SIMD + static const char dquote[16] = { '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"' }; + static const char bslash[16] = { '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\' }; + static const char space[16] = { 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19 }; + const __m128i dq = _mm_loadu_si128(reinterpret_cast(&dquote[0])); + const __m128i bs = _mm_loadu_si128(reinterpret_cast(&bslash[0])); + const __m128i sp = _mm_loadu_si128(reinterpret_cast(&space[0])); + + for (;; p += 16) { + const __m128i s = _mm_load_si128(reinterpret_cast(p)); + const __m128i t1 = _mm_cmpeq_epi8(s, dq); + const __m128i t2 = _mm_cmpeq_epi8(s, bs); + const __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); // s < 0x20 <=> max(s, 0x19) == 0x19 + const __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3); + unsigned short r = static_cast(_mm_movemask_epi8(x)); + if (RAPIDJSON_UNLIKELY(r != 0)) { // some of characters is escaped + SizeType length; + #ifdef _MSC_VER // Find the index of first escaped + unsigned long offset; + _BitScanForward(&offset, r); + length = offset; + #else + length = static_cast(__builtin_ffs(r) - 1); + #endif + char* q = reinterpret_cast(os.Push(length)); + for (size_t i = 0; i < length; i++) + q[i] = p[i]; + + p += length; + break; + } + _mm_storeu_si128(reinterpret_cast<__m128i *>(os.Push(16)), s); + } + + is.src_ = p; + } + + // InsituStringStream -> InsituStringStream + static RAPIDJSON_FORCEINLINE void ScanCopyUnescapedString(InsituStringStream& is, InsituStringStream& os) { + RAPIDJSON_ASSERT(&is == &os); + (void)os; + + if (is.src_ == is.dst_) { + SkipUnescapedString(is); + return; + } + + char* p = is.src_; + char *q = is.dst_; + + // Scan one by one until alignment (unaligned load may cross page boundary and cause crash) + const char* nextAligned = reinterpret_cast((reinterpret_cast(p) + 15) & static_cast(~15)); + while (p != nextAligned) + if (RAPIDJSON_UNLIKELY(*p == '\"') || RAPIDJSON_UNLIKELY(*p == '\\') || RAPIDJSON_UNLIKELY(static_cast(*p) < 0x20)) { + is.src_ = p; + is.dst_ = q; + return; + } + else + *q++ = *p++; + + // The rest of string using SIMD + static const char dquote[16] = { '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"' }; + static const char bslash[16] = { '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\' }; + static const char space[16] = { 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19 }; + const __m128i dq = _mm_loadu_si128(reinterpret_cast(&dquote[0])); + const __m128i bs = _mm_loadu_si128(reinterpret_cast(&bslash[0])); + const __m128i sp = _mm_loadu_si128(reinterpret_cast(&space[0])); + + for (;; p += 16, q += 16) { + const __m128i s = _mm_load_si128(reinterpret_cast(p)); + const __m128i t1 = _mm_cmpeq_epi8(s, dq); + const __m128i t2 = _mm_cmpeq_epi8(s, bs); + const __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); // s < 0x20 <=> max(s, 0x19) == 0x19 + const __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3); + unsigned short r = static_cast(_mm_movemask_epi8(x)); + if (RAPIDJSON_UNLIKELY(r != 0)) { // some of characters is escaped + size_t length; +#ifdef _MSC_VER // Find the index of first escaped + unsigned long offset; + _BitScanForward(&offset, r); + length = offset; +#else + length = static_cast(__builtin_ffs(r) - 1); +#endif + for (const char* pend = p + length; p != pend; ) + *q++ = *p++; + break; + } + _mm_storeu_si128(reinterpret_cast<__m128i *>(q), s); + } + + is.src_ = p; + is.dst_ = q; + } + + // When read/write pointers are the same for insitu stream, just skip unescaped characters + static RAPIDJSON_FORCEINLINE void SkipUnescapedString(InsituStringStream& is) { + RAPIDJSON_ASSERT(is.src_ == is.dst_); + char* p = is.src_; + + // Scan one by one until alignment (unaligned load may cross page boundary and cause crash) + const char* nextAligned = reinterpret_cast((reinterpret_cast(p) + 15) & static_cast(~15)); + for (; p != nextAligned; p++) + if (RAPIDJSON_UNLIKELY(*p == '\"') || RAPIDJSON_UNLIKELY(*p == '\\') || RAPIDJSON_UNLIKELY(static_cast(*p) < 0x20)) { + is.src_ = is.dst_ = p; + return; + } + + // The rest of string using SIMD + static const char dquote[16] = { '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"' }; + static const char bslash[16] = { '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\' }; + static const char space[16] = { 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19 }; + const __m128i dq = _mm_loadu_si128(reinterpret_cast(&dquote[0])); + const __m128i bs = _mm_loadu_si128(reinterpret_cast(&bslash[0])); + const __m128i sp = _mm_loadu_si128(reinterpret_cast(&space[0])); + + for (;; p += 16) { + const __m128i s = _mm_load_si128(reinterpret_cast(p)); + const __m128i t1 = _mm_cmpeq_epi8(s, dq); + const __m128i t2 = _mm_cmpeq_epi8(s, bs); + const __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); // s < 0x20 <=> max(s, 0x19) == 0x19 + const __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3); + unsigned short r = static_cast(_mm_movemask_epi8(x)); + if (RAPIDJSON_UNLIKELY(r != 0)) { // some of characters is escaped + size_t length; +#ifdef _MSC_VER // Find the index of first escaped + unsigned long offset; + _BitScanForward(&offset, r); + length = offset; +#else + length = static_cast(__builtin_ffs(r) - 1); +#endif + p += length; + break; + } + } + + is.src_ = is.dst_ = p; + } +#endif + + template + class NumberStream; + + template + class NumberStream { + public: + typedef typename InputStream::Ch Ch; + + NumberStream(GenericReader& reader, InputStream& s) : is(s) { (void)reader; } + ~NumberStream() {} + + RAPIDJSON_FORCEINLINE Ch Peek() const { return is.Peek(); } + RAPIDJSON_FORCEINLINE Ch TakePush() { return is.Take(); } + RAPIDJSON_FORCEINLINE Ch Take() { return is.Take(); } + RAPIDJSON_FORCEINLINE void Push(char) {} + + size_t Tell() { return is.Tell(); } + size_t Length() { return 0; } + const char* Pop() { return 0; } + + protected: + NumberStream& operator=(const NumberStream&); + + InputStream& is; + }; + + template + class NumberStream : public NumberStream { + typedef NumberStream Base; + public: + NumberStream(GenericReader& reader, InputStream& is) : Base(reader, is), stackStream(reader.stack_) {} + ~NumberStream() {} + + RAPIDJSON_FORCEINLINE Ch TakePush() { + stackStream.Put(static_cast(Base::is.Peek())); + return Base::is.Take(); + } + + RAPIDJSON_FORCEINLINE void Push(char c) { + stackStream.Put(c); + } + + size_t Length() { return stackStream.Length(); } + + const char* Pop() { + stackStream.Put('\0'); + return stackStream.Pop(); + } + + private: + StackStream stackStream; + }; + + template + class NumberStream : public NumberStream { + typedef NumberStream Base; + public: + NumberStream(GenericReader& reader, InputStream& is) : Base(reader, is) {} + ~NumberStream() {} + + RAPIDJSON_FORCEINLINE Ch Take() { return Base::TakePush(); } + }; + + template + void ParseNumber(InputStream& is, Handler& handler) { + internal::StreamLocalCopy copy(is); + NumberStream s(*this, copy.s); + + size_t startOffset = s.Tell(); + double d = 0.0; + bool useNanOrInf = false; + + // Parse minus + bool minus = Consume(s, '-'); + + // Parse int: zero / ( digit1-9 *DIGIT ) + unsigned i = 0; + uint64_t i64 = 0; + bool use64bit = false; + int significandDigit = 0; + if (RAPIDJSON_UNLIKELY(s.Peek() == '0')) { + i = 0; + s.TakePush(); + } + else if (RAPIDJSON_LIKELY(s.Peek() >= '1' && s.Peek() <= '9')) { + i = static_cast(s.TakePush() - '0'); + + if (minus) + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + if (RAPIDJSON_UNLIKELY(i >= 214748364)) { // 2^31 = 2147483648 + if (RAPIDJSON_LIKELY(i != 214748364 || s.Peek() > '8')) { + i64 = i; + use64bit = true; + break; + } + } + i = i * 10 + static_cast(s.TakePush() - '0'); + significandDigit++; + } + else + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + if (RAPIDJSON_UNLIKELY(i >= 429496729)) { // 2^32 - 1 = 4294967295 + if (RAPIDJSON_LIKELY(i != 429496729 || s.Peek() > '5')) { + i64 = i; + use64bit = true; + break; + } + } + i = i * 10 + static_cast(s.TakePush() - '0'); + significandDigit++; + } + } + // Parse NaN or Infinity here + else if ((parseFlags & kParseNanAndInfFlag) && RAPIDJSON_LIKELY((s.Peek() == 'I' || s.Peek() == 'N'))) { + useNanOrInf = true; + if (RAPIDJSON_LIKELY(Consume(s, 'N') && Consume(s, 'a') && Consume(s, 'N'))) { + d = std::numeric_limits::quiet_NaN(); + } + else if (RAPIDJSON_LIKELY(Consume(s, 'I') && Consume(s, 'n') && Consume(s, 'f'))) { + d = (minus ? -std::numeric_limits::infinity() : std::numeric_limits::infinity()); + if (RAPIDJSON_UNLIKELY(s.Peek() == 'i' && !(Consume(s, 'i') && Consume(s, 'n') + && Consume(s, 'i') && Consume(s, 't') && Consume(s, 'y')))) + RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, s.Tell()); + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, s.Tell()); + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, s.Tell()); + + // Parse 64bit int + bool useDouble = false; + if (use64bit) { + if (minus) + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + if (RAPIDJSON_UNLIKELY(i64 >= RAPIDJSON_UINT64_C2(0x0CCCCCCC, 0xCCCCCCCC))) // 2^63 = 9223372036854775808 + if (RAPIDJSON_LIKELY(i64 != RAPIDJSON_UINT64_C2(0x0CCCCCCC, 0xCCCCCCCC) || s.Peek() > '8')) { + d = static_cast(i64); + useDouble = true; + break; + } + i64 = i64 * 10 + static_cast(s.TakePush() - '0'); + significandDigit++; + } + else + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + if (RAPIDJSON_UNLIKELY(i64 >= RAPIDJSON_UINT64_C2(0x19999999, 0x99999999))) // 2^64 - 1 = 18446744073709551615 + if (RAPIDJSON_LIKELY(i64 != RAPIDJSON_UINT64_C2(0x19999999, 0x99999999) || s.Peek() > '5')) { + d = static_cast(i64); + useDouble = true; + break; + } + i64 = i64 * 10 + static_cast(s.TakePush() - '0'); + significandDigit++; + } + } + + // Force double for big integer + if (useDouble) { + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + if (RAPIDJSON_UNLIKELY(d >= 1.7976931348623157e307)) // DBL_MAX / 10.0 + RAPIDJSON_PARSE_ERROR(kParseErrorNumberTooBig, startOffset); + d = d * 10 + (s.TakePush() - '0'); + } + } + + // Parse frac = decimal-point 1*DIGIT + int expFrac = 0; + size_t decimalPosition; + if (Consume(s, '.')) { + decimalPosition = s.Length(); + + if (RAPIDJSON_UNLIKELY(!(s.Peek() >= '0' && s.Peek() <= '9'))) + RAPIDJSON_PARSE_ERROR(kParseErrorNumberMissFraction, s.Tell()); + + if (!useDouble) { +#if RAPIDJSON_64BIT + // Use i64 to store significand in 64-bit architecture + if (!use64bit) + i64 = i; + + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + if (i64 > RAPIDJSON_UINT64_C2(0x1FFFFF, 0xFFFFFFFF)) // 2^53 - 1 for fast path + break; + else { + i64 = i64 * 10 + static_cast(s.TakePush() - '0'); + --expFrac; + if (i64 != 0) + significandDigit++; + } + } + + d = static_cast(i64); +#else + // Use double to store significand in 32-bit architecture + d = static_cast(use64bit ? i64 : i); +#endif + useDouble = true; + } + + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + if (significandDigit < 17) { + d = d * 10.0 + (s.TakePush() - '0'); + --expFrac; + if (RAPIDJSON_LIKELY(d > 0.0)) + significandDigit++; + } + else + s.TakePush(); + } + } + else + decimalPosition = s.Length(); // decimal position at the end of integer. + + // Parse exp = e [ minus / plus ] 1*DIGIT + int exp = 0; + if (Consume(s, 'e') || Consume(s, 'E')) { + if (!useDouble) { + d = static_cast(use64bit ? i64 : i); + useDouble = true; + } + + bool expMinus = false; + if (Consume(s, '+')) + ; + else if (Consume(s, '-')) + expMinus = true; + + if (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + exp = static_cast(s.Take() - '0'); + if (expMinus) { + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + exp = exp * 10 + static_cast(s.Take() - '0'); + if (exp >= 214748364) { // Issue #313: prevent overflow exponent + while (RAPIDJSON_UNLIKELY(s.Peek() >= '0' && s.Peek() <= '9')) // Consume the rest of exponent + s.Take(); + } + } + } + else { // positive exp + int maxExp = 308 - expFrac; + while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { + exp = exp * 10 + static_cast(s.Take() - '0'); + if (RAPIDJSON_UNLIKELY(exp > maxExp)) + RAPIDJSON_PARSE_ERROR(kParseErrorNumberTooBig, startOffset); + } + } + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorNumberMissExponent, s.Tell()); + + if (expMinus) + exp = -exp; + } + + // Finish parsing, call event according to the type of number. + bool cont = true; + + if (parseFlags & kParseNumbersAsStringsFlag) { + if (parseFlags & kParseInsituFlag) { + s.Pop(); // Pop stack no matter if it will be used or not. + typename InputStream::Ch* head = is.PutBegin(); + const size_t length = s.Tell() - startOffset; + RAPIDJSON_ASSERT(length <= 0xFFFFFFFF); + // unable to insert the \0 character here, it will erase the comma after this number + const typename TargetEncoding::Ch* const str = reinterpret_cast(head); + cont = handler.RawNumber(str, SizeType(length), false); + } + else { + SizeType numCharsToCopy = static_cast(s.Length()); + StringStream srcStream(s.Pop()); + StackStream dstStream(stack_); + while (numCharsToCopy--) { + Transcoder, TargetEncoding>::Transcode(srcStream, dstStream); + } + dstStream.Put('\0'); + const typename TargetEncoding::Ch* str = dstStream.Pop(); + const SizeType length = static_cast(dstStream.Length()) - 1; + cont = handler.RawNumber(str, SizeType(length), true); + } + } + else { + size_t length = s.Length(); + const char* decimal = s.Pop(); // Pop stack no matter if it will be used or not. + + if (useDouble) { + int p = exp + expFrac; + if (parseFlags & kParseFullPrecisionFlag) + d = internal::StrtodFullPrecision(d, p, decimal, length, decimalPosition, exp); + else + d = internal::StrtodNormalPrecision(d, p); + + cont = handler.Double(minus ? -d : d); + } + else if (useNanOrInf) { + cont = handler.Double(d); + } + else { + if (use64bit) { + if (minus) + cont = handler.Int64(static_cast(~i64 + 1)); + else + cont = handler.Uint64(i64); + } + else { + if (minus) + cont = handler.Int(static_cast(~i + 1)); + else + cont = handler.Uint(i); + } + } + } + if (RAPIDJSON_UNLIKELY(!cont)) + RAPIDJSON_PARSE_ERROR(kParseErrorTermination, startOffset); + } + + // Parse any JSON value + template + void ParseValue(InputStream& is, Handler& handler) { + switch (is.Peek()) { + case 'n': ParseNull (is, handler); break; + case 't': ParseTrue (is, handler); break; + case 'f': ParseFalse (is, handler); break; + case '"': ParseString(is, handler); break; + case '{': ParseObject(is, handler); break; + case '[': ParseArray (is, handler); break; + default : + ParseNumber(is, handler); + break; + + } + } + + // Iterative Parsing + + // States + enum IterativeParsingState { + IterativeParsingStartState = 0, + IterativeParsingFinishState, + IterativeParsingErrorState, + + // Object states + IterativeParsingObjectInitialState, + IterativeParsingMemberKeyState, + IterativeParsingKeyValueDelimiterState, + IterativeParsingMemberValueState, + IterativeParsingMemberDelimiterState, + IterativeParsingObjectFinishState, + + // Array states + IterativeParsingArrayInitialState, + IterativeParsingElementState, + IterativeParsingElementDelimiterState, + IterativeParsingArrayFinishState, + + // Single value state + IterativeParsingValueState + }; + + enum { cIterativeParsingStateCount = IterativeParsingValueState + 1 }; + + // Tokens + enum Token { + LeftBracketToken = 0, + RightBracketToken, + + LeftCurlyBracketToken, + RightCurlyBracketToken, + + CommaToken, + ColonToken, + + StringToken, + FalseToken, + TrueToken, + NullToken, + NumberToken, + + kTokenCount + }; + + RAPIDJSON_FORCEINLINE Token Tokenize(Ch c) { + +//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN +#define N NumberToken +#define N16 N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N + // Maps from ASCII to Token + static const unsigned char tokenMap[256] = { + N16, // 00~0F + N16, // 10~1F + N, N, StringToken, N, N, N, N, N, N, N, N, N, CommaToken, N, N, N, // 20~2F + N, N, N, N, N, N, N, N, N, N, ColonToken, N, N, N, N, N, // 30~3F + N16, // 40~4F + N, N, N, N, N, N, N, N, N, N, N, LeftBracketToken, N, RightBracketToken, N, N, // 50~5F + N, N, N, N, N, N, FalseToken, N, N, N, N, N, N, N, NullToken, N, // 60~6F + N, N, N, N, TrueToken, N, N, N, N, N, N, LeftCurlyBracketToken, N, RightCurlyBracketToken, N, N, // 70~7F + N16, N16, N16, N16, N16, N16, N16, N16 // 80~FF + }; +#undef N +#undef N16 +//!@endcond + + if (sizeof(Ch) == 1 || static_cast(c) < 256) + return static_cast(tokenMap[static_cast(c)]); + else + return NumberToken; + } + + RAPIDJSON_FORCEINLINE IterativeParsingState Predict(IterativeParsingState state, Token token) { + // current state x one lookahead token -> new state + static const char G[cIterativeParsingStateCount][kTokenCount] = { + // Start + { + IterativeParsingArrayInitialState, // Left bracket + IterativeParsingErrorState, // Right bracket + IterativeParsingObjectInitialState, // Left curly bracket + IterativeParsingErrorState, // Right curly bracket + IterativeParsingErrorState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingValueState, // String + IterativeParsingValueState, // False + IterativeParsingValueState, // True + IterativeParsingValueState, // Null + IterativeParsingValueState // Number + }, + // Finish(sink state) + { + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState + }, + // Error(sink state) + { + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState + }, + // ObjectInitial + { + IterativeParsingErrorState, // Left bracket + IterativeParsingErrorState, // Right bracket + IterativeParsingErrorState, // Left curly bracket + IterativeParsingObjectFinishState, // Right curly bracket + IterativeParsingErrorState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingMemberKeyState, // String + IterativeParsingErrorState, // False + IterativeParsingErrorState, // True + IterativeParsingErrorState, // Null + IterativeParsingErrorState // Number + }, + // MemberKey + { + IterativeParsingErrorState, // Left bracket + IterativeParsingErrorState, // Right bracket + IterativeParsingErrorState, // Left curly bracket + IterativeParsingErrorState, // Right curly bracket + IterativeParsingErrorState, // Comma + IterativeParsingKeyValueDelimiterState, // Colon + IterativeParsingErrorState, // String + IterativeParsingErrorState, // False + IterativeParsingErrorState, // True + IterativeParsingErrorState, // Null + IterativeParsingErrorState // Number + }, + // KeyValueDelimiter + { + IterativeParsingArrayInitialState, // Left bracket(push MemberValue state) + IterativeParsingErrorState, // Right bracket + IterativeParsingObjectInitialState, // Left curly bracket(push MemberValue state) + IterativeParsingErrorState, // Right curly bracket + IterativeParsingErrorState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingMemberValueState, // String + IterativeParsingMemberValueState, // False + IterativeParsingMemberValueState, // True + IterativeParsingMemberValueState, // Null + IterativeParsingMemberValueState // Number + }, + // MemberValue + { + IterativeParsingErrorState, // Left bracket + IterativeParsingErrorState, // Right bracket + IterativeParsingErrorState, // Left curly bracket + IterativeParsingObjectFinishState, // Right curly bracket + IterativeParsingMemberDelimiterState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingErrorState, // String + IterativeParsingErrorState, // False + IterativeParsingErrorState, // True + IterativeParsingErrorState, // Null + IterativeParsingErrorState // Number + }, + // MemberDelimiter + { + IterativeParsingErrorState, // Left bracket + IterativeParsingErrorState, // Right bracket + IterativeParsingErrorState, // Left curly bracket + IterativeParsingObjectFinishState, // Right curly bracket + IterativeParsingErrorState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingMemberKeyState, // String + IterativeParsingErrorState, // False + IterativeParsingErrorState, // True + IterativeParsingErrorState, // Null + IterativeParsingErrorState // Number + }, + // ObjectFinish(sink state) + { + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState + }, + // ArrayInitial + { + IterativeParsingArrayInitialState, // Left bracket(push Element state) + IterativeParsingArrayFinishState, // Right bracket + IterativeParsingObjectInitialState, // Left curly bracket(push Element state) + IterativeParsingErrorState, // Right curly bracket + IterativeParsingErrorState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingElementState, // String + IterativeParsingElementState, // False + IterativeParsingElementState, // True + IterativeParsingElementState, // Null + IterativeParsingElementState // Number + }, + // Element + { + IterativeParsingErrorState, // Left bracket + IterativeParsingArrayFinishState, // Right bracket + IterativeParsingErrorState, // Left curly bracket + IterativeParsingErrorState, // Right curly bracket + IterativeParsingElementDelimiterState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingErrorState, // String + IterativeParsingErrorState, // False + IterativeParsingErrorState, // True + IterativeParsingErrorState, // Null + IterativeParsingErrorState // Number + }, + // ElementDelimiter + { + IterativeParsingArrayInitialState, // Left bracket(push Element state) + IterativeParsingArrayFinishState, // Right bracket + IterativeParsingObjectInitialState, // Left curly bracket(push Element state) + IterativeParsingErrorState, // Right curly bracket + IterativeParsingErrorState, // Comma + IterativeParsingErrorState, // Colon + IterativeParsingElementState, // String + IterativeParsingElementState, // False + IterativeParsingElementState, // True + IterativeParsingElementState, // Null + IterativeParsingElementState // Number + }, + // ArrayFinish(sink state) + { + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState + }, + // Single Value (sink state) + { + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, + IterativeParsingErrorState + } + }; // End of G + + return static_cast(G[state][token]); + } + + // Make an advance in the token stream and state based on the candidate destination state which was returned by Transit(). + // May return a new state on state pop. + template + RAPIDJSON_FORCEINLINE IterativeParsingState Transit(IterativeParsingState src, Token token, IterativeParsingState dst, InputStream& is, Handler& handler) { + (void)token; + + switch (dst) { + case IterativeParsingErrorState: + return dst; + + case IterativeParsingObjectInitialState: + case IterativeParsingArrayInitialState: + { + // Push the state(Element or MemeberValue) if we are nested in another array or value of member. + // In this way we can get the correct state on ObjectFinish or ArrayFinish by frame pop. + IterativeParsingState n = src; + if (src == IterativeParsingArrayInitialState || src == IterativeParsingElementDelimiterState) + n = IterativeParsingElementState; + else if (src == IterativeParsingKeyValueDelimiterState) + n = IterativeParsingMemberValueState; + // Push current state. + *stack_.template Push(1) = n; + // Initialize and push the member/element count. + *stack_.template Push(1) = 0; + // Call handler + bool hr = (dst == IterativeParsingObjectInitialState) ? handler.StartObject() : handler.StartArray(); + // On handler short circuits the parsing. + if (!hr) { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorTermination, is.Tell()); + return IterativeParsingErrorState; + } + else { + is.Take(); + return dst; + } + } + + case IterativeParsingMemberKeyState: + ParseString(is, handler, true); + if (HasParseError()) + return IterativeParsingErrorState; + else + return dst; + + case IterativeParsingKeyValueDelimiterState: + RAPIDJSON_ASSERT(token == ColonToken); + is.Take(); + return dst; + + case IterativeParsingMemberValueState: + // Must be non-compound value. Or it would be ObjectInitial or ArrayInitial state. + ParseValue(is, handler); + if (HasParseError()) { + return IterativeParsingErrorState; + } + return dst; + + case IterativeParsingElementState: + // Must be non-compound value. Or it would be ObjectInitial or ArrayInitial state. + ParseValue(is, handler); + if (HasParseError()) { + return IterativeParsingErrorState; + } + return dst; + + case IterativeParsingMemberDelimiterState: + case IterativeParsingElementDelimiterState: + is.Take(); + // Update member/element count. + *stack_.template Top() = *stack_.template Top() + 1; + return dst; + + case IterativeParsingObjectFinishState: + { + // Transit from delimiter is only allowed when trailing commas are enabled + if (!(parseFlags & kParseTrailingCommasFlag) && src == IterativeParsingMemberDelimiterState) { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorObjectMissName, is.Tell()); + return IterativeParsingErrorState; + } + // Get member count. + SizeType c = *stack_.template Pop(1); + // If the object is not empty, count the last member. + if (src == IterativeParsingMemberValueState) + ++c; + // Restore the state. + IterativeParsingState n = static_cast(*stack_.template Pop(1)); + // Transit to Finish state if this is the topmost scope. + if (n == IterativeParsingStartState) + n = IterativeParsingFinishState; + // Call handler + bool hr = handler.EndObject(c); + // On handler short circuits the parsing. + if (!hr) { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorTermination, is.Tell()); + return IterativeParsingErrorState; + } + else { + is.Take(); + return n; + } + } + + case IterativeParsingArrayFinishState: + { + // Transit from delimiter is only allowed when trailing commas are enabled + if (!(parseFlags & kParseTrailingCommasFlag) && src == IterativeParsingElementDelimiterState) { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorValueInvalid, is.Tell()); + return IterativeParsingErrorState; + } + // Get element count. + SizeType c = *stack_.template Pop(1); + // If the array is not empty, count the last element. + if (src == IterativeParsingElementState) + ++c; + // Restore the state. + IterativeParsingState n = static_cast(*stack_.template Pop(1)); + // Transit to Finish state if this is the topmost scope. + if (n == IterativeParsingStartState) + n = IterativeParsingFinishState; + // Call handler + bool hr = handler.EndArray(c); + // On handler short circuits the parsing. + if (!hr) { + RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorTermination, is.Tell()); + return IterativeParsingErrorState; + } + else { + is.Take(); + return n; + } + } + + default: + // This branch is for IterativeParsingValueState actually. + // Use `default:` rather than + // `case IterativeParsingValueState:` is for code coverage. + + // The IterativeParsingStartState is not enumerated in this switch-case. + // It is impossible for that case. And it can be caught by following assertion. + + // The IterativeParsingFinishState is not enumerated in this switch-case either. + // It is a "derivative" state which cannot triggered from Predict() directly. + // Therefore it cannot happen here. And it can be caught by following assertion. + RAPIDJSON_ASSERT(dst == IterativeParsingValueState); + + // Must be non-compound value. Or it would be ObjectInitial or ArrayInitial state. + ParseValue(is, handler); + if (HasParseError()) { + return IterativeParsingErrorState; + } + return IterativeParsingFinishState; + } + } + + template + void HandleError(IterativeParsingState src, InputStream& is) { + if (HasParseError()) { + // Error flag has been set. + return; + } + + switch (src) { + case IterativeParsingStartState: RAPIDJSON_PARSE_ERROR(kParseErrorDocumentEmpty, is.Tell()); return; + case IterativeParsingFinishState: RAPIDJSON_PARSE_ERROR(kParseErrorDocumentRootNotSingular, is.Tell()); return; + case IterativeParsingObjectInitialState: + case IterativeParsingMemberDelimiterState: RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissName, is.Tell()); return; + case IterativeParsingMemberKeyState: RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissColon, is.Tell()); return; + case IterativeParsingMemberValueState: RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissCommaOrCurlyBracket, is.Tell()); return; + case IterativeParsingKeyValueDelimiterState: + case IterativeParsingArrayInitialState: + case IterativeParsingElementDelimiterState: RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, is.Tell()); return; + default: RAPIDJSON_ASSERT(src == IterativeParsingElementState); RAPIDJSON_PARSE_ERROR(kParseErrorArrayMissCommaOrSquareBracket, is.Tell()); return; + } + } + + template + ParseResult IterativeParse(InputStream& is, Handler& handler) { + parseResult_.Clear(); + ClearStackOnExit scope(*this); + IterativeParsingState state = IterativeParsingStartState; + + SkipWhitespaceAndComments(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_); + while (is.Peek() != '\0') { + Token t = Tokenize(is.Peek()); + IterativeParsingState n = Predict(state, t); + IterativeParsingState d = Transit(state, t, n, is, handler); + + if (d == IterativeParsingErrorState) { + HandleError(state, is); + break; + } + + state = d; + + // Do not further consume streams if a root JSON has been parsed. + if ((parseFlags & kParseStopWhenDoneFlag) && state == IterativeParsingFinishState) + break; + + SkipWhitespaceAndComments(is); + RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_); + } + + // Handle the end of file. + if (state != IterativeParsingFinishState) + HandleError(state, is); + + return parseResult_; + } + + static const size_t kDefaultStackCapacity = 256; //!< Default stack capacity in bytes for storing a single decoded string. + internal::Stack stack_; //!< A stack for storing decoded string temporarily during non-destructive parsing. + ParseResult parseResult_; +}; // class GenericReader + +//! Reader with UTF8 encoding and default allocator. +typedef GenericReader, UTF8<> > Reader; + +RAPIDJSON_NAMESPACE_END + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + + +#ifdef __GNUC__ +RAPIDJSON_DIAG_POP +#endif + +#ifdef _MSC_VER +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_READER_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/schema.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/schema.h new file mode 100644 index 0000000..b182aa2 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/schema.h @@ -0,0 +1,2006 @@ +// Tencent is pleased to support the open source community by making RapidJSON available-> +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip-> All rights reserved-> +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License-> You may obtain a copy of the License at +// +// http://opensource->org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied-> See the License for the +// specific language governing permissions and limitations under the License-> + +#ifndef RAPIDJSON_SCHEMA_H_ +#define RAPIDJSON_SCHEMA_H_ + +#include "document.h" +#include "pointer.h" +#include // abs, floor + +#if !defined(RAPIDJSON_SCHEMA_USE_INTERNALREGEX) +#define RAPIDJSON_SCHEMA_USE_INTERNALREGEX 1 +#else +#define RAPIDJSON_SCHEMA_USE_INTERNALREGEX 0 +#endif + +#if !RAPIDJSON_SCHEMA_USE_INTERNALREGEX && !defined(RAPIDJSON_SCHEMA_USE_STDREGEX) && (__cplusplus >=201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)) +#define RAPIDJSON_SCHEMA_USE_STDREGEX 1 +#else +#define RAPIDJSON_SCHEMA_USE_STDREGEX 0 +#endif + +#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX +#include "internal/regex.h" +#elif RAPIDJSON_SCHEMA_USE_STDREGEX +#include +#endif + +#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX || RAPIDJSON_SCHEMA_USE_STDREGEX +#define RAPIDJSON_SCHEMA_HAS_REGEX 1 +#else +#define RAPIDJSON_SCHEMA_HAS_REGEX 0 +#endif + +#ifndef RAPIDJSON_SCHEMA_VERBOSE +#define RAPIDJSON_SCHEMA_VERBOSE 0 +#endif + +#if RAPIDJSON_SCHEMA_VERBOSE +#include "stringbuffer.h" +#endif + +RAPIDJSON_DIAG_PUSH + +#if defined(__GNUC__) +RAPIDJSON_DIAG_OFF(effc++) +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_OFF(weak-vtables) +RAPIDJSON_DIAG_OFF(exit-time-destructors) +RAPIDJSON_DIAG_OFF(c++98-compat-pedantic) +RAPIDJSON_DIAG_OFF(variadic-macros) +#endif + +#ifdef _MSC_VER +RAPIDJSON_DIAG_OFF(4512) // assignment operator could not be generated +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +/////////////////////////////////////////////////////////////////////////////// +// Verbose Utilities + +#if RAPIDJSON_SCHEMA_VERBOSE + +namespace internal { + +inline void PrintInvalidKeyword(const char* keyword) { + printf("Fail keyword: %s\n", keyword); +} + +inline void PrintInvalidKeyword(const wchar_t* keyword) { + wprintf(L"Fail keyword: %ls\n", keyword); +} + +inline void PrintInvalidDocument(const char* document) { + printf("Fail document: %s\n\n", document); +} + +inline void PrintInvalidDocument(const wchar_t* document) { + wprintf(L"Fail document: %ls\n\n", document); +} + +inline void PrintValidatorPointers(unsigned depth, const char* s, const char* d) { + printf("S: %*s%s\nD: %*s%s\n\n", depth * 4, " ", s, depth * 4, " ", d); +} + +inline void PrintValidatorPointers(unsigned depth, const wchar_t* s, const wchar_t* d) { + wprintf(L"S: %*ls%ls\nD: %*ls%ls\n\n", depth * 4, L" ", s, depth * 4, L" ", d); +} + +} // namespace internal + +#endif // RAPIDJSON_SCHEMA_VERBOSE + +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_INVALID_KEYWORD_RETURN + +#if RAPIDJSON_SCHEMA_VERBOSE +#define RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword) internal::PrintInvalidKeyword(keyword) +#else +#define RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword) +#endif + +#define RAPIDJSON_INVALID_KEYWORD_RETURN(keyword)\ +RAPIDJSON_MULTILINEMACRO_BEGIN\ + context.invalidKeyword = keyword.GetString();\ + RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword.GetString());\ + return false;\ +RAPIDJSON_MULTILINEMACRO_END + +/////////////////////////////////////////////////////////////////////////////// +// Forward declarations + +template +class GenericSchemaDocument; + +namespace internal { + +template +class Schema; + +/////////////////////////////////////////////////////////////////////////////// +// ISchemaValidator + +class ISchemaValidator { +public: + virtual ~ISchemaValidator() {} + virtual bool IsValid() const = 0; +}; + +/////////////////////////////////////////////////////////////////////////////// +// ISchemaStateFactory + +template +class ISchemaStateFactory { +public: + virtual ~ISchemaStateFactory() {} + virtual ISchemaValidator* CreateSchemaValidator(const SchemaType&) = 0; + virtual void DestroySchemaValidator(ISchemaValidator* validator) = 0; + virtual void* CreateHasher() = 0; + virtual uint64_t GetHashCode(void* hasher) = 0; + virtual void DestroryHasher(void* hasher) = 0; + virtual void* MallocState(size_t size) = 0; + virtual void FreeState(void* p) = 0; +}; + +/////////////////////////////////////////////////////////////////////////////// +// Hasher + +// For comparison of compound value +template +class Hasher { +public: + typedef typename Encoding::Ch Ch; + + Hasher(Allocator* allocator = 0, size_t stackCapacity = kDefaultSize) : stack_(allocator, stackCapacity) {} + + bool Null() { return WriteType(kNullType); } + bool Bool(bool b) { return WriteType(b ? kTrueType : kFalseType); } + bool Int(int i) { Number n; n.u.i = i; n.d = static_cast(i); return WriteNumber(n); } + bool Uint(unsigned u) { Number n; n.u.u = u; n.d = static_cast(u); return WriteNumber(n); } + bool Int64(int64_t i) { Number n; n.u.i = i; n.d = static_cast(i); return WriteNumber(n); } + bool Uint64(uint64_t u) { Number n; n.u.u = u; n.d = static_cast(u); return WriteNumber(n); } + bool Double(double d) { + Number n; + if (d < 0) n.u.i = static_cast(d); + else n.u.u = static_cast(d); + n.d = d; + return WriteNumber(n); + } + + bool RawNumber(const Ch* str, SizeType len, bool) { + WriteBuffer(kNumberType, str, len * sizeof(Ch)); + return true; + } + + bool String(const Ch* str, SizeType len, bool) { + WriteBuffer(kStringType, str, len * sizeof(Ch)); + return true; + } + + bool StartObject() { return true; } + bool Key(const Ch* str, SizeType len, bool copy) { return String(str, len, copy); } + bool EndObject(SizeType memberCount) { + uint64_t h = Hash(0, kObjectType); + uint64_t* kv = stack_.template Pop(memberCount * 2); + for (SizeType i = 0; i < memberCount; i++) + h ^= Hash(kv[i * 2], kv[i * 2 + 1]); // Use xor to achieve member order insensitive + *stack_.template Push() = h; + return true; + } + + bool StartArray() { return true; } + bool EndArray(SizeType elementCount) { + uint64_t h = Hash(0, kArrayType); + uint64_t* e = stack_.template Pop(elementCount); + for (SizeType i = 0; i < elementCount; i++) + h = Hash(h, e[i]); // Use hash to achieve element order sensitive + *stack_.template Push() = h; + return true; + } + + bool IsValid() const { return stack_.GetSize() == sizeof(uint64_t); } + + uint64_t GetHashCode() const { + RAPIDJSON_ASSERT(IsValid()); + return *stack_.template Top(); + } + +private: + static const size_t kDefaultSize = 256; + struct Number { + union U { + uint64_t u; + int64_t i; + }u; + double d; + }; + + bool WriteType(Type type) { return WriteBuffer(type, 0, 0); } + + bool WriteNumber(const Number& n) { return WriteBuffer(kNumberType, &n, sizeof(n)); } + + bool WriteBuffer(Type type, const void* data, size_t len) { + // FNV-1a from http://isthe.com/chongo/tech/comp/fnv/ + uint64_t h = Hash(RAPIDJSON_UINT64_C2(0x84222325, 0xcbf29ce4), type); + const unsigned char* d = static_cast(data); + for (size_t i = 0; i < len; i++) + h = Hash(h, d[i]); + *stack_.template Push() = h; + return true; + } + + static uint64_t Hash(uint64_t h, uint64_t d) { + static const uint64_t kPrime = RAPIDJSON_UINT64_C2(0x00000100, 0x000001b3); + h ^= d; + h *= kPrime; + return h; + } + + Stack stack_; +}; + +/////////////////////////////////////////////////////////////////////////////// +// SchemaValidationContext + +template +struct SchemaValidationContext { + typedef Schema SchemaType; + typedef ISchemaStateFactory SchemaValidatorFactoryType; + typedef typename SchemaType::ValueType ValueType; + typedef typename ValueType::Ch Ch; + + enum PatternValidatorType { + kPatternValidatorOnly, + kPatternValidatorWithProperty, + kPatternValidatorWithAdditionalProperty + }; + + SchemaValidationContext(SchemaValidatorFactoryType& f, const SchemaType* s) : + factory(f), + schema(s), + valueSchema(), + invalidKeyword(), + hasher(), + arrayElementHashCodes(), + validators(), + validatorCount(), + patternPropertiesValidators(), + patternPropertiesValidatorCount(), + patternPropertiesSchemas(), + patternPropertiesSchemaCount(), + valuePatternValidatorType(kPatternValidatorOnly), + propertyExist(), + inArray(false), + valueUniqueness(false), + arrayUniqueness(false) + { + } + + ~SchemaValidationContext() { + if (hasher) + factory.DestroryHasher(hasher); + if (validators) { + for (SizeType i = 0; i < validatorCount; i++) + factory.DestroySchemaValidator(validators[i]); + factory.FreeState(validators); + } + if (patternPropertiesValidators) { + for (SizeType i = 0; i < patternPropertiesValidatorCount; i++) + factory.DestroySchemaValidator(patternPropertiesValidators[i]); + factory.FreeState(patternPropertiesValidators); + } + if (patternPropertiesSchemas) + factory.FreeState(patternPropertiesSchemas); + if (propertyExist) + factory.FreeState(propertyExist); + } + + SchemaValidatorFactoryType& factory; + const SchemaType* schema; + const SchemaType* valueSchema; + const Ch* invalidKeyword; + void* hasher; // Only validator access + void* arrayElementHashCodes; // Only validator access this + ISchemaValidator** validators; + SizeType validatorCount; + ISchemaValidator** patternPropertiesValidators; + SizeType patternPropertiesValidatorCount; + const SchemaType** patternPropertiesSchemas; + SizeType patternPropertiesSchemaCount; + PatternValidatorType valuePatternValidatorType; + PatternValidatorType objectPatternValidatorType; + SizeType arrayElementIndex; + bool* propertyExist; + bool inArray; + bool valueUniqueness; + bool arrayUniqueness; +}; + +/////////////////////////////////////////////////////////////////////////////// +// Schema + +template +class Schema { +public: + typedef typename SchemaDocumentType::ValueType ValueType; + typedef typename SchemaDocumentType::AllocatorType AllocatorType; + typedef typename SchemaDocumentType::PointerType PointerType; + typedef typename ValueType::EncodingType EncodingType; + typedef typename EncodingType::Ch Ch; + typedef SchemaValidationContext Context; + typedef Schema SchemaType; + typedef GenericValue SValue; + friend class GenericSchemaDocument; + + Schema(SchemaDocumentType* schemaDocument, const PointerType& p, const ValueType& value, const ValueType& document, AllocatorType* allocator) : + allocator_(allocator), + enum_(), + enumCount_(), + not_(), + type_((1 << kTotalSchemaType) - 1), // typeless + validatorCount_(), + properties_(), + additionalPropertiesSchema_(), + patternProperties_(), + patternPropertyCount_(), + propertyCount_(), + minProperties_(), + maxProperties_(SizeType(~0)), + additionalProperties_(true), + hasDependencies_(), + hasRequired_(), + hasSchemaDependencies_(), + additionalItemsSchema_(), + itemsList_(), + itemsTuple_(), + itemsTupleCount_(), + minItems_(), + maxItems_(SizeType(~0)), + additionalItems_(true), + uniqueItems_(false), + pattern_(), + minLength_(0), + maxLength_(~SizeType(0)), + exclusiveMinimum_(false), + exclusiveMaximum_(false) + { + typedef typename SchemaDocumentType::ValueType ValueType; + typedef typename ValueType::ConstValueIterator ConstValueIterator; + typedef typename ValueType::ConstMemberIterator ConstMemberIterator; + + if (!value.IsObject()) + return; + + if (const ValueType* v = GetMember(value, GetTypeString())) { + type_ = 0; + if (v->IsString()) + AddType(*v); + else if (v->IsArray()) + for (ConstValueIterator itr = v->Begin(); itr != v->End(); ++itr) + AddType(*itr); + } + + if (const ValueType* v = GetMember(value, GetEnumString())) + if (v->IsArray() && v->Size() > 0) { + enum_ = static_cast(allocator_->Malloc(sizeof(uint64_t) * v->Size())); + for (ConstValueIterator itr = v->Begin(); itr != v->End(); ++itr) { + typedef Hasher > EnumHasherType; + char buffer[256 + 24]; + MemoryPoolAllocator<> hasherAllocator(buffer, sizeof(buffer)); + EnumHasherType h(&hasherAllocator, 256); + itr->Accept(h); + enum_[enumCount_++] = h.GetHashCode(); + } + } + + if (schemaDocument) { + AssignIfExist(allOf_, *schemaDocument, p, value, GetAllOfString(), document); + AssignIfExist(anyOf_, *schemaDocument, p, value, GetAnyOfString(), document); + AssignIfExist(oneOf_, *schemaDocument, p, value, GetOneOfString(), document); + } + + if (const ValueType* v = GetMember(value, GetNotString())) { + schemaDocument->CreateSchema(¬_, p.Append(GetNotString(), allocator_), *v, document); + notValidatorIndex_ = validatorCount_; + validatorCount_++; + } + + // Object + + const ValueType* properties = GetMember(value, GetPropertiesString()); + const ValueType* required = GetMember(value, GetRequiredString()); + const ValueType* dependencies = GetMember(value, GetDependenciesString()); + { + // Gather properties from properties/required/dependencies + SValue allProperties(kArrayType); + + if (properties && properties->IsObject()) + for (ConstMemberIterator itr = properties->MemberBegin(); itr != properties->MemberEnd(); ++itr) + AddUniqueElement(allProperties, itr->name); + + if (required && required->IsArray()) + for (ConstValueIterator itr = required->Begin(); itr != required->End(); ++itr) + if (itr->IsString()) + AddUniqueElement(allProperties, *itr); + + if (dependencies && dependencies->IsObject()) + for (ConstMemberIterator itr = dependencies->MemberBegin(); itr != dependencies->MemberEnd(); ++itr) { + AddUniqueElement(allProperties, itr->name); + if (itr->value.IsArray()) + for (ConstValueIterator i = itr->value.Begin(); i != itr->value.End(); ++i) + if (i->IsString()) + AddUniqueElement(allProperties, *i); + } + + if (allProperties.Size() > 0) { + propertyCount_ = allProperties.Size(); + properties_ = static_cast(allocator_->Malloc(sizeof(Property) * propertyCount_)); + for (SizeType i = 0; i < propertyCount_; i++) { + new (&properties_[i]) Property(); + properties_[i].name = allProperties[i]; + properties_[i].schema = GetTypeless(); + } + } + } + + if (properties && properties->IsObject()) { + PointerType q = p.Append(GetPropertiesString(), allocator_); + for (ConstMemberIterator itr = properties->MemberBegin(); itr != properties->MemberEnd(); ++itr) { + SizeType index; + if (FindPropertyIndex(itr->name, &index)) + schemaDocument->CreateSchema(&properties_[index].schema, q.Append(itr->name, allocator_), itr->value, document); + } + } + + if (const ValueType* v = GetMember(value, GetPatternPropertiesString())) { + PointerType q = p.Append(GetPatternPropertiesString(), allocator_); + patternProperties_ = static_cast(allocator_->Malloc(sizeof(PatternProperty) * v->MemberCount())); + patternPropertyCount_ = 0; + + for (ConstMemberIterator itr = v->MemberBegin(); itr != v->MemberEnd(); ++itr) { + new (&patternProperties_[patternPropertyCount_]) PatternProperty(); + patternProperties_[patternPropertyCount_].pattern = CreatePattern(itr->name); + schemaDocument->CreateSchema(&patternProperties_[patternPropertyCount_].schema, q.Append(itr->name, allocator_), itr->value, document); + patternPropertyCount_++; + } + } + + if (required && required->IsArray()) + for (ConstValueIterator itr = required->Begin(); itr != required->End(); ++itr) + if (itr->IsString()) { + SizeType index; + if (FindPropertyIndex(*itr, &index)) { + properties_[index].required = true; + hasRequired_ = true; + } + } + + if (dependencies && dependencies->IsObject()) { + PointerType q = p.Append(GetDependenciesString(), allocator_); + hasDependencies_ = true; + for (ConstMemberIterator itr = dependencies->MemberBegin(); itr != dependencies->MemberEnd(); ++itr) { + SizeType sourceIndex; + if (FindPropertyIndex(itr->name, &sourceIndex)) { + if (itr->value.IsArray()) { + properties_[sourceIndex].dependencies = static_cast(allocator_->Malloc(sizeof(bool) * propertyCount_)); + std::memset(properties_[sourceIndex].dependencies, 0, sizeof(bool)* propertyCount_); + for (ConstValueIterator targetItr = itr->value.Begin(); targetItr != itr->value.End(); ++targetItr) { + SizeType targetIndex; + if (FindPropertyIndex(*targetItr, &targetIndex)) + properties_[sourceIndex].dependencies[targetIndex] = true; + } + } + else if (itr->value.IsObject()) { + hasSchemaDependencies_ = true; + schemaDocument->CreateSchema(&properties_[sourceIndex].dependenciesSchema, q.Append(itr->name, allocator_), itr->value, document); + properties_[sourceIndex].dependenciesValidatorIndex = validatorCount_; + validatorCount_++; + } + } + } + } + + if (const ValueType* v = GetMember(value, GetAdditionalPropertiesString())) { + if (v->IsBool()) + additionalProperties_ = v->GetBool(); + else if (v->IsObject()) + schemaDocument->CreateSchema(&additionalPropertiesSchema_, p.Append(GetAdditionalPropertiesString(), allocator_), *v, document); + } + + AssignIfExist(minProperties_, value, GetMinPropertiesString()); + AssignIfExist(maxProperties_, value, GetMaxPropertiesString()); + + // Array + if (const ValueType* v = GetMember(value, GetItemsString())) { + PointerType q = p.Append(GetItemsString(), allocator_); + if (v->IsObject()) // List validation + schemaDocument->CreateSchema(&itemsList_, q, *v, document); + else if (v->IsArray()) { // Tuple validation + itemsTuple_ = static_cast(allocator_->Malloc(sizeof(const Schema*) * v->Size())); + SizeType index = 0; + for (ConstValueIterator itr = v->Begin(); itr != v->End(); ++itr, index++) + schemaDocument->CreateSchema(&itemsTuple_[itemsTupleCount_++], q.Append(index, allocator_), *itr, document); + } + } + + AssignIfExist(minItems_, value, GetMinItemsString()); + AssignIfExist(maxItems_, value, GetMaxItemsString()); + + if (const ValueType* v = GetMember(value, GetAdditionalItemsString())) { + if (v->IsBool()) + additionalItems_ = v->GetBool(); + else if (v->IsObject()) + schemaDocument->CreateSchema(&additionalItemsSchema_, p.Append(GetAdditionalItemsString(), allocator_), *v, document); + } + + AssignIfExist(uniqueItems_, value, GetUniqueItemsString()); + + // String + AssignIfExist(minLength_, value, GetMinLengthString()); + AssignIfExist(maxLength_, value, GetMaxLengthString()); + + if (const ValueType* v = GetMember(value, GetPatternString())) + pattern_ = CreatePattern(*v); + + // Number + if (const ValueType* v = GetMember(value, GetMinimumString())) + if (v->IsNumber()) + minimum_.CopyFrom(*v, *allocator_); + + if (const ValueType* v = GetMember(value, GetMaximumString())) + if (v->IsNumber()) + maximum_.CopyFrom(*v, *allocator_); + + AssignIfExist(exclusiveMinimum_, value, GetExclusiveMinimumString()); + AssignIfExist(exclusiveMaximum_, value, GetExclusiveMaximumString()); + + if (const ValueType* v = GetMember(value, GetMultipleOfString())) + if (v->IsNumber() && v->GetDouble() > 0.0) + multipleOf_.CopyFrom(*v, *allocator_); + } + + ~Schema() { + if (allocator_) { + allocator_->Free(enum_); + } + if (properties_) { + for (SizeType i = 0; i < propertyCount_; i++) + properties_[i].~Property(); + AllocatorType::Free(properties_); + } + if (patternProperties_) { + for (SizeType i = 0; i < patternPropertyCount_; i++) + patternProperties_[i].~PatternProperty(); + AllocatorType::Free(patternProperties_); + } + AllocatorType::Free(itemsTuple_); +#if RAPIDJSON_SCHEMA_HAS_REGEX + if (pattern_) { + pattern_->~RegexType(); + allocator_->Free(pattern_); + } +#endif + } + + bool BeginValue(Context& context) const { + if (context.inArray) { + if (uniqueItems_) + context.valueUniqueness = true; + + if (itemsList_) + context.valueSchema = itemsList_; + else if (itemsTuple_) { + if (context.arrayElementIndex < itemsTupleCount_) + context.valueSchema = itemsTuple_[context.arrayElementIndex]; + else if (additionalItemsSchema_) + context.valueSchema = additionalItemsSchema_; + else if (additionalItems_) + context.valueSchema = GetTypeless(); + else + RAPIDJSON_INVALID_KEYWORD_RETURN(GetItemsString()); + } + else + context.valueSchema = GetTypeless(); + + context.arrayElementIndex++; + } + return true; + } + + RAPIDJSON_FORCEINLINE bool EndValue(Context& context) const { + if (context.patternPropertiesValidatorCount > 0) { + bool otherValid = false; + SizeType count = context.patternPropertiesValidatorCount; + if (context.objectPatternValidatorType != Context::kPatternValidatorOnly) + otherValid = context.patternPropertiesValidators[--count]->IsValid(); + + bool patternValid = true; + for (SizeType i = 0; i < count; i++) + if (!context.patternPropertiesValidators[i]->IsValid()) { + patternValid = false; + break; + } + + if (context.objectPatternValidatorType == Context::kPatternValidatorOnly) { + if (!patternValid) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternPropertiesString()); + } + else if (context.objectPatternValidatorType == Context::kPatternValidatorWithProperty) { + if (!patternValid || !otherValid) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternPropertiesString()); + } + else if (!patternValid && !otherValid) // kPatternValidatorWithAdditionalProperty) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternPropertiesString()); + } + + if (enum_) { + const uint64_t h = context.factory.GetHashCode(context.hasher); + for (SizeType i = 0; i < enumCount_; i++) + if (enum_[i] == h) + goto foundEnum; + RAPIDJSON_INVALID_KEYWORD_RETURN(GetEnumString()); + foundEnum:; + } + + if (allOf_.schemas) + for (SizeType i = allOf_.begin; i < allOf_.begin + allOf_.count; i++) + if (!context.validators[i]->IsValid()) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetAllOfString()); + + if (anyOf_.schemas) { + for (SizeType i = anyOf_.begin; i < anyOf_.begin + anyOf_.count; i++) + if (context.validators[i]->IsValid()) + goto foundAny; + RAPIDJSON_INVALID_KEYWORD_RETURN(GetAnyOfString()); + foundAny:; + } + + if (oneOf_.schemas) { + bool oneValid = false; + for (SizeType i = oneOf_.begin; i < oneOf_.begin + oneOf_.count; i++) + if (context.validators[i]->IsValid()) { + if (oneValid) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetOneOfString()); + else + oneValid = true; + } + if (!oneValid) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetOneOfString()); + } + + if (not_ && context.validators[notValidatorIndex_]->IsValid()) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetNotString()); + + return true; + } + + bool Null(Context& context) const { + if (!(type_ & (1 << kNullSchemaType))) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + return CreateParallelValidator(context); + } + + bool Bool(Context& context, bool) const { + if (!(type_ & (1 << kBooleanSchemaType))) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + return CreateParallelValidator(context); + } + + bool Int(Context& context, int i) const { + if (!CheckInt(context, i)) + return false; + return CreateParallelValidator(context); + } + + bool Uint(Context& context, unsigned u) const { + if (!CheckUint(context, u)) + return false; + return CreateParallelValidator(context); + } + + bool Int64(Context& context, int64_t i) const { + if (!CheckInt(context, i)) + return false; + return CreateParallelValidator(context); + } + + bool Uint64(Context& context, uint64_t u) const { + if (!CheckUint(context, u)) + return false; + return CreateParallelValidator(context); + } + + bool Double(Context& context, double d) const { + if (!(type_ & (1 << kNumberSchemaType))) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + + if (!minimum_.IsNull() && !CheckDoubleMinimum(context, d)) + return false; + + if (!maximum_.IsNull() && !CheckDoubleMaximum(context, d)) + return false; + + if (!multipleOf_.IsNull() && !CheckDoubleMultipleOf(context, d)) + return false; + + return CreateParallelValidator(context); + } + + bool String(Context& context, const Ch* str, SizeType length, bool) const { + if (!(type_ & (1 << kStringSchemaType))) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + + if (minLength_ != 0 || maxLength_ != SizeType(~0)) { + SizeType count; + if (internal::CountStringCodePoint(str, length, &count)) { + if (count < minLength_) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinLengthString()); + if (count > maxLength_) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaxLengthString()); + } + } + + if (pattern_ && !IsPatternMatch(pattern_, str, length)) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternString()); + + return CreateParallelValidator(context); + } + + bool StartObject(Context& context) const { + if (!(type_ & (1 << kObjectSchemaType))) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + + if (hasDependencies_ || hasRequired_) { + context.propertyExist = static_cast(context.factory.MallocState(sizeof(bool) * propertyCount_)); + std::memset(context.propertyExist, 0, sizeof(bool) * propertyCount_); + } + + if (patternProperties_) { // pre-allocate schema array + SizeType count = patternPropertyCount_ + 1; // extra for valuePatternValidatorType + context.patternPropertiesSchemas = static_cast(context.factory.MallocState(sizeof(const SchemaType*) * count)); + context.patternPropertiesSchemaCount = 0; + std::memset(context.patternPropertiesSchemas, 0, sizeof(SchemaType*) * count); + } + + return CreateParallelValidator(context); + } + + bool Key(Context& context, const Ch* str, SizeType len, bool) const { + if (patternProperties_) { + context.patternPropertiesSchemaCount = 0; + for (SizeType i = 0; i < patternPropertyCount_; i++) + if (patternProperties_[i].pattern && IsPatternMatch(patternProperties_[i].pattern, str, len)) + context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = patternProperties_[i].schema; + } + + SizeType index; + if (FindPropertyIndex(ValueType(str, len).Move(), &index)) { + if (context.patternPropertiesSchemaCount > 0) { + context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = properties_[index].schema; + context.valueSchema = GetTypeless(); + context.valuePatternValidatorType = Context::kPatternValidatorWithProperty; + } + else + context.valueSchema = properties_[index].schema; + + if (context.propertyExist) + context.propertyExist[index] = true; + + return true; + } + + if (additionalPropertiesSchema_) { + if (additionalPropertiesSchema_ && context.patternPropertiesSchemaCount > 0) { + context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = additionalPropertiesSchema_; + context.valueSchema = GetTypeless(); + context.valuePatternValidatorType = Context::kPatternValidatorWithAdditionalProperty; + } + else + context.valueSchema = additionalPropertiesSchema_; + return true; + } + else if (additionalProperties_) { + context.valueSchema = GetTypeless(); + return true; + } + + if (context.patternPropertiesSchemaCount == 0) // patternProperties are not additional properties + RAPIDJSON_INVALID_KEYWORD_RETURN(GetAdditionalPropertiesString()); + + return true; + } + + bool EndObject(Context& context, SizeType memberCount) const { + if (hasRequired_) + for (SizeType index = 0; index < propertyCount_; index++) + if (properties_[index].required) + if (!context.propertyExist[index]) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetRequiredString()); + + if (memberCount < minProperties_) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinPropertiesString()); + + if (memberCount > maxProperties_) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaxPropertiesString()); + + if (hasDependencies_) { + for (SizeType sourceIndex = 0; sourceIndex < propertyCount_; sourceIndex++) + if (context.propertyExist[sourceIndex]) { + if (properties_[sourceIndex].dependencies) { + for (SizeType targetIndex = 0; targetIndex < propertyCount_; targetIndex++) + if (properties_[sourceIndex].dependencies[targetIndex] && !context.propertyExist[targetIndex]) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetDependenciesString()); + } + else if (properties_[sourceIndex].dependenciesSchema) + if (!context.validators[properties_[sourceIndex].dependenciesValidatorIndex]->IsValid()) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetDependenciesString()); + } + } + + return true; + } + + bool StartArray(Context& context) const { + if (!(type_ & (1 << kArraySchemaType))) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + + context.arrayElementIndex = 0; + context.inArray = true; + + return CreateParallelValidator(context); + } + + bool EndArray(Context& context, SizeType elementCount) const { + context.inArray = false; + + if (elementCount < minItems_) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinItemsString()); + + if (elementCount > maxItems_) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaxItemsString()); + + return true; + } + + // Generate functions for string literal according to Ch +#define RAPIDJSON_STRING_(name, ...) \ + static const ValueType& Get##name##String() {\ + static const Ch s[] = { __VA_ARGS__, '\0' };\ + static const ValueType v(s, sizeof(s) / sizeof(Ch) - 1);\ + return v;\ + } + + RAPIDJSON_STRING_(Null, 'n', 'u', 'l', 'l') + RAPIDJSON_STRING_(Boolean, 'b', 'o', 'o', 'l', 'e', 'a', 'n') + RAPIDJSON_STRING_(Object, 'o', 'b', 'j', 'e', 'c', 't') + RAPIDJSON_STRING_(Array, 'a', 'r', 'r', 'a', 'y') + RAPIDJSON_STRING_(String, 's', 't', 'r', 'i', 'n', 'g') + RAPIDJSON_STRING_(Number, 'n', 'u', 'm', 'b', 'e', 'r') + RAPIDJSON_STRING_(Integer, 'i', 'n', 't', 'e', 'g', 'e', 'r') + RAPIDJSON_STRING_(Type, 't', 'y', 'p', 'e') + RAPIDJSON_STRING_(Enum, 'e', 'n', 'u', 'm') + RAPIDJSON_STRING_(AllOf, 'a', 'l', 'l', 'O', 'f') + RAPIDJSON_STRING_(AnyOf, 'a', 'n', 'y', 'O', 'f') + RAPIDJSON_STRING_(OneOf, 'o', 'n', 'e', 'O', 'f') + RAPIDJSON_STRING_(Not, 'n', 'o', 't') + RAPIDJSON_STRING_(Properties, 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's') + RAPIDJSON_STRING_(Required, 'r', 'e', 'q', 'u', 'i', 'r', 'e', 'd') + RAPIDJSON_STRING_(Dependencies, 'd', 'e', 'p', 'e', 'n', 'd', 'e', 'n', 'c', 'i', 'e', 's') + RAPIDJSON_STRING_(PatternProperties, 'p', 'a', 't', 't', 'e', 'r', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's') + RAPIDJSON_STRING_(AdditionalProperties, 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's') + RAPIDJSON_STRING_(MinProperties, 'm', 'i', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's') + RAPIDJSON_STRING_(MaxProperties, 'm', 'a', 'x', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's') + RAPIDJSON_STRING_(Items, 'i', 't', 'e', 'm', 's') + RAPIDJSON_STRING_(MinItems, 'm', 'i', 'n', 'I', 't', 'e', 'm', 's') + RAPIDJSON_STRING_(MaxItems, 'm', 'a', 'x', 'I', 't', 'e', 'm', 's') + RAPIDJSON_STRING_(AdditionalItems, 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', 'I', 't', 'e', 'm', 's') + RAPIDJSON_STRING_(UniqueItems, 'u', 'n', 'i', 'q', 'u', 'e', 'I', 't', 'e', 'm', 's') + RAPIDJSON_STRING_(MinLength, 'm', 'i', 'n', 'L', 'e', 'n', 'g', 't', 'h') + RAPIDJSON_STRING_(MaxLength, 'm', 'a', 'x', 'L', 'e', 'n', 'g', 't', 'h') + RAPIDJSON_STRING_(Pattern, 'p', 'a', 't', 't', 'e', 'r', 'n') + RAPIDJSON_STRING_(Minimum, 'm', 'i', 'n', 'i', 'm', 'u', 'm') + RAPIDJSON_STRING_(Maximum, 'm', 'a', 'x', 'i', 'm', 'u', 'm') + RAPIDJSON_STRING_(ExclusiveMinimum, 'e', 'x', 'c', 'l', 'u', 's', 'i', 'v', 'e', 'M', 'i', 'n', 'i', 'm', 'u', 'm') + RAPIDJSON_STRING_(ExclusiveMaximum, 'e', 'x', 'c', 'l', 'u', 's', 'i', 'v', 'e', 'M', 'a', 'x', 'i', 'm', 'u', 'm') + RAPIDJSON_STRING_(MultipleOf, 'm', 'u', 'l', 't', 'i', 'p', 'l', 'e', 'O', 'f') + +#undef RAPIDJSON_STRING_ + +private: + enum SchemaValueType { + kNullSchemaType, + kBooleanSchemaType, + kObjectSchemaType, + kArraySchemaType, + kStringSchemaType, + kNumberSchemaType, + kIntegerSchemaType, + kTotalSchemaType + }; + +#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX + typedef internal::GenericRegex RegexType; +#elif RAPIDJSON_SCHEMA_USE_STDREGEX + typedef std::basic_regex RegexType; +#else + typedef char RegexType; +#endif + + struct SchemaArray { + SchemaArray() : schemas(), count() {} + ~SchemaArray() { AllocatorType::Free(schemas); } + const SchemaType** schemas; + SizeType begin; // begin index of context.validators + SizeType count; + }; + + static const SchemaType* GetTypeless() { + static SchemaType typeless(0, PointerType(), ValueType(kObjectType).Move(), ValueType(kObjectType).Move(), 0); + return &typeless; + } + + template + void AddUniqueElement(V1& a, const V2& v) { + for (typename V1::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr) + if (*itr == v) + return; + V1 c(v, *allocator_); + a.PushBack(c, *allocator_); + } + + static const ValueType* GetMember(const ValueType& value, const ValueType& name) { + typename ValueType::ConstMemberIterator itr = value.FindMember(name); + return itr != value.MemberEnd() ? &(itr->value) : 0; + } + + static void AssignIfExist(bool& out, const ValueType& value, const ValueType& name) { + if (const ValueType* v = GetMember(value, name)) + if (v->IsBool()) + out = v->GetBool(); + } + + static void AssignIfExist(SizeType& out, const ValueType& value, const ValueType& name) { + if (const ValueType* v = GetMember(value, name)) + if (v->IsUint64() && v->GetUint64() <= SizeType(~0)) + out = static_cast(v->GetUint64()); + } + + void AssignIfExist(SchemaArray& out, SchemaDocumentType& schemaDocument, const PointerType& p, const ValueType& value, const ValueType& name, const ValueType& document) { + if (const ValueType* v = GetMember(value, name)) { + if (v->IsArray() && v->Size() > 0) { + PointerType q = p.Append(name, allocator_); + out.count = v->Size(); + out.schemas = static_cast(allocator_->Malloc(out.count * sizeof(const Schema*))); + memset(out.schemas, 0, sizeof(Schema*)* out.count); + for (SizeType i = 0; i < out.count; i++) + schemaDocument.CreateSchema(&out.schemas[i], q.Append(i, allocator_), (*v)[i], document); + out.begin = validatorCount_; + validatorCount_ += out.count; + } + } + } + +#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX + template + RegexType* CreatePattern(const ValueType& value) { + if (value.IsString()) { + RegexType* r = new (allocator_->Malloc(sizeof(RegexType))) RegexType(value.GetString()); + if (!r->IsValid()) { + r->~RegexType(); + AllocatorType::Free(r); + r = 0; + } + return r; + } + return 0; + } + + static bool IsPatternMatch(const RegexType* pattern, const Ch *str, SizeType) { + return pattern->Search(str); + } +#elif RAPIDJSON_SCHEMA_USE_STDREGEX + template + RegexType* CreatePattern(const ValueType& value) { + if (value.IsString()) + try { + return new (allocator_->Malloc(sizeof(RegexType))) RegexType(value.GetString(), std::size_t(value.GetStringLength()), std::regex_constants::ECMAScript); + } + catch (const std::regex_error&) { + } + return 0; + } + + static bool IsPatternMatch(const RegexType* pattern, const Ch *str, SizeType length) { + std::match_results r; + return std::regex_search(str, str + length, r, *pattern); + } +#else + template + RegexType* CreatePattern(const ValueType&) { return 0; } + + static bool IsPatternMatch(const RegexType*, const Ch *, SizeType) { return true; } +#endif // RAPIDJSON_SCHEMA_USE_STDREGEX + + void AddType(const ValueType& type) { + if (type == GetNullString() ) type_ |= 1 << kNullSchemaType; + else if (type == GetBooleanString()) type_ |= 1 << kBooleanSchemaType; + else if (type == GetObjectString() ) type_ |= 1 << kObjectSchemaType; + else if (type == GetArrayString() ) type_ |= 1 << kArraySchemaType; + else if (type == GetStringString() ) type_ |= 1 << kStringSchemaType; + else if (type == GetIntegerString()) type_ |= 1 << kIntegerSchemaType; + else if (type == GetNumberString() ) type_ |= (1 << kNumberSchemaType) | (1 << kIntegerSchemaType); + } + + bool CreateParallelValidator(Context& context) const { + if (enum_ || context.arrayUniqueness) + context.hasher = context.factory.CreateHasher(); + + if (validatorCount_) { + RAPIDJSON_ASSERT(context.validators == 0); + context.validators = static_cast(context.factory.MallocState(sizeof(ISchemaValidator*) * validatorCount_)); + context.validatorCount = validatorCount_; + + if (allOf_.schemas) + CreateSchemaValidators(context, allOf_); + + if (anyOf_.schemas) + CreateSchemaValidators(context, anyOf_); + + if (oneOf_.schemas) + CreateSchemaValidators(context, oneOf_); + + if (not_) + context.validators[notValidatorIndex_] = context.factory.CreateSchemaValidator(*not_); + + if (hasSchemaDependencies_) { + for (SizeType i = 0; i < propertyCount_; i++) + if (properties_[i].dependenciesSchema) + context.validators[properties_[i].dependenciesValidatorIndex] = context.factory.CreateSchemaValidator(*properties_[i].dependenciesSchema); + } + } + + return true; + } + + void CreateSchemaValidators(Context& context, const SchemaArray& schemas) const { + for (SizeType i = 0; i < schemas.count; i++) + context.validators[schemas.begin + i] = context.factory.CreateSchemaValidator(*schemas.schemas[i]); + } + + // O(n) + bool FindPropertyIndex(const ValueType& name, SizeType* outIndex) const { + SizeType len = name.GetStringLength(); + const Ch* str = name.GetString(); + for (SizeType index = 0; index < propertyCount_; index++) + if (properties_[index].name.GetStringLength() == len && + (std::memcmp(properties_[index].name.GetString(), str, sizeof(Ch) * len) == 0)) + { + *outIndex = index; + return true; + } + return false; + } + + bool CheckInt(Context& context, int64_t i) const { + if (!(type_ & ((1 << kIntegerSchemaType) | (1 << kNumberSchemaType)))) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + + if (!minimum_.IsNull()) { + if (minimum_.IsInt64()) { + if (exclusiveMinimum_ ? i <= minimum_.GetInt64() : i < minimum_.GetInt64()) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString()); + } + else if (minimum_.IsUint64()) { + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString()); // i <= max(int64_t) < minimum.GetUint64() + } + else if (!CheckDoubleMinimum(context, static_cast(i))) + return false; + } + + if (!maximum_.IsNull()) { + if (maximum_.IsInt64()) { + if (exclusiveMaximum_ ? i >= maximum_.GetInt64() : i > maximum_.GetInt64()) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString()); + } + else if (maximum_.IsUint64()) + /* do nothing */; // i <= max(int64_t) < maximum_.GetUint64() + else if (!CheckDoubleMaximum(context, static_cast(i))) + return false; + } + + if (!multipleOf_.IsNull()) { + if (multipleOf_.IsUint64()) { + if (static_cast(i >= 0 ? i : -i) % multipleOf_.GetUint64() != 0) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMultipleOfString()); + } + else if (!CheckDoubleMultipleOf(context, static_cast(i))) + return false; + } + + return true; + } + + bool CheckUint(Context& context, uint64_t i) const { + if (!(type_ & ((1 << kIntegerSchemaType) | (1 << kNumberSchemaType)))) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString()); + + if (!minimum_.IsNull()) { + if (minimum_.IsUint64()) { + if (exclusiveMinimum_ ? i <= minimum_.GetUint64() : i < minimum_.GetUint64()) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString()); + } + else if (minimum_.IsInt64()) + /* do nothing */; // i >= 0 > minimum.Getint64() + else if (!CheckDoubleMinimum(context, static_cast(i))) + return false; + } + + if (!maximum_.IsNull()) { + if (maximum_.IsUint64()) { + if (exclusiveMaximum_ ? i >= maximum_.GetUint64() : i > maximum_.GetUint64()) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString()); + } + else if (maximum_.IsInt64()) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString()); // i >= 0 > maximum_ + else if (!CheckDoubleMaximum(context, static_cast(i))) + return false; + } + + if (!multipleOf_.IsNull()) { + if (multipleOf_.IsUint64()) { + if (i % multipleOf_.GetUint64() != 0) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMultipleOfString()); + } + else if (!CheckDoubleMultipleOf(context, static_cast(i))) + return false; + } + + return true; + } + + bool CheckDoubleMinimum(Context& context, double d) const { + if (exclusiveMinimum_ ? d <= minimum_.GetDouble() : d < minimum_.GetDouble()) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString()); + return true; + } + + bool CheckDoubleMaximum(Context& context, double d) const { + if (exclusiveMaximum_ ? d >= maximum_.GetDouble() : d > maximum_.GetDouble()) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString()); + return true; + } + + bool CheckDoubleMultipleOf(Context& context, double d) const { + double a = std::abs(d), b = std::abs(multipleOf_.GetDouble()); + double q = std::floor(a / b); + double r = a - q * b; + if (r > 0.0) + RAPIDJSON_INVALID_KEYWORD_RETURN(GetMultipleOfString()); + return true; + } + + struct Property { + Property() : schema(), dependenciesSchema(), dependenciesValidatorIndex(), dependencies(), required(false) {} + ~Property() { AllocatorType::Free(dependencies); } + SValue name; + const SchemaType* schema; + const SchemaType* dependenciesSchema; + SizeType dependenciesValidatorIndex; + bool* dependencies; + bool required; + }; + + struct PatternProperty { + PatternProperty() : schema(), pattern() {} + ~PatternProperty() { + if (pattern) { + pattern->~RegexType(); + AllocatorType::Free(pattern); + } + } + const SchemaType* schema; + RegexType* pattern; + }; + + AllocatorType* allocator_; + uint64_t* enum_; + SizeType enumCount_; + SchemaArray allOf_; + SchemaArray anyOf_; + SchemaArray oneOf_; + const SchemaType* not_; + unsigned type_; // bitmask of kSchemaType + SizeType validatorCount_; + SizeType notValidatorIndex_; + + Property* properties_; + const SchemaType* additionalPropertiesSchema_; + PatternProperty* patternProperties_; + SizeType patternPropertyCount_; + SizeType propertyCount_; + SizeType minProperties_; + SizeType maxProperties_; + bool additionalProperties_; + bool hasDependencies_; + bool hasRequired_; + bool hasSchemaDependencies_; + + const SchemaType* additionalItemsSchema_; + const SchemaType* itemsList_; + const SchemaType** itemsTuple_; + SizeType itemsTupleCount_; + SizeType minItems_; + SizeType maxItems_; + bool additionalItems_; + bool uniqueItems_; + + RegexType* pattern_; + SizeType minLength_; + SizeType maxLength_; + + SValue minimum_; + SValue maximum_; + SValue multipleOf_; + bool exclusiveMinimum_; + bool exclusiveMaximum_; +}; + +template +struct TokenHelper { + RAPIDJSON_FORCEINLINE static void AppendIndexToken(Stack& documentStack, SizeType index) { + *documentStack.template Push() = '/'; + char buffer[21]; + size_t length = static_cast((sizeof(SizeType) == 4 ? u32toa(index, buffer) : u64toa(index, buffer)) - buffer); + for (size_t i = 0; i < length; i++) + *documentStack.template Push() = buffer[i]; + } +}; + +// Partial specialized version for char to prevent buffer copying. +template +struct TokenHelper { + RAPIDJSON_FORCEINLINE static void AppendIndexToken(Stack& documentStack, SizeType index) { + if (sizeof(SizeType) == 4) { + char *buffer = documentStack.template Push(1 + 10); // '/' + uint + *buffer++ = '/'; + const char* end = internal::u32toa(index, buffer); + documentStack.template Pop(static_cast(10 - (end - buffer))); + } + else { + char *buffer = documentStack.template Push(1 + 20); // '/' + uint64 + *buffer++ = '/'; + const char* end = internal::u64toa(index, buffer); + documentStack.template Pop(static_cast(20 - (end - buffer))); + } + } +}; + +} // namespace internal + +/////////////////////////////////////////////////////////////////////////////// +// IGenericRemoteSchemaDocumentProvider + +template +class IGenericRemoteSchemaDocumentProvider { +public: + typedef typename SchemaDocumentType::Ch Ch; + + virtual ~IGenericRemoteSchemaDocumentProvider() {} + virtual const SchemaDocumentType* GetRemoteDocument(const Ch* uri, SizeType length) = 0; +}; + +/////////////////////////////////////////////////////////////////////////////// +// GenericSchemaDocument + +//! JSON schema document. +/*! + A JSON schema document is a compiled version of a JSON schema. + It is basically a tree of internal::Schema. + + \note This is an immutable class (i.e. its instance cannot be modified after construction). + \tparam ValueT Type of JSON value (e.g. \c Value ), which also determine the encoding. + \tparam Allocator Allocator type for allocating memory of this document. +*/ +template +class GenericSchemaDocument { +public: + typedef ValueT ValueType; + typedef IGenericRemoteSchemaDocumentProvider IRemoteSchemaDocumentProviderType; + typedef Allocator AllocatorType; + typedef typename ValueType::EncodingType EncodingType; + typedef typename EncodingType::Ch Ch; + typedef internal::Schema SchemaType; + typedef GenericPointer PointerType; + friend class internal::Schema; + template + friend class GenericSchemaValidator; + + //! Constructor. + /*! + Compile a JSON document into schema document. + + \param document A JSON document as source. + \param remoteProvider An optional remote schema document provider for resolving remote reference. Can be null. + \param allocator An optional allocator instance for allocating memory. Can be null. + */ + explicit GenericSchemaDocument(const ValueType& document, IRemoteSchemaDocumentProviderType* remoteProvider = 0, Allocator* allocator = 0) : + remoteProvider_(remoteProvider), + allocator_(allocator), + ownAllocator_(), + root_(), + schemaMap_(allocator, kInitialSchemaMapSize), + schemaRef_(allocator, kInitialSchemaRefSize) + { + if (!allocator_) + ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator()); + + // Generate root schema, it will call CreateSchema() to create sub-schemas, + // And call AddRefSchema() if there are $ref. + CreateSchemaRecursive(&root_, PointerType(), document, document); + + // Resolve $ref + while (!schemaRef_.Empty()) { + SchemaRefEntry* refEntry = schemaRef_.template Pop(1); + if (const SchemaType* s = GetSchema(refEntry->target)) { + if (refEntry->schema) + *refEntry->schema = s; + + // Create entry in map if not exist + if (!GetSchema(refEntry->source)) { + new (schemaMap_.template Push()) SchemaEntry(refEntry->source, const_cast(s), false, allocator_); + } + } + refEntry->~SchemaRefEntry(); + } + + RAPIDJSON_ASSERT(root_ != 0); + + schemaRef_.ShrinkToFit(); // Deallocate all memory for ref + } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + //! Move constructor in C++11 + GenericSchemaDocument(GenericSchemaDocument&& rhs) RAPIDJSON_NOEXCEPT : + remoteProvider_(rhs.remoteProvider_), + allocator_(rhs.allocator_), + ownAllocator_(rhs.ownAllocator_), + root_(rhs.root_), + schemaMap_(std::move(rhs.schemaMap_)), + schemaRef_(std::move(rhs.schemaRef_)) + { + rhs.remoteProvider_ = 0; + rhs.allocator_ = 0; + rhs.ownAllocator_ = 0; + } +#endif + + //! Destructor + ~GenericSchemaDocument() { + while (!schemaMap_.Empty()) + schemaMap_.template Pop(1)->~SchemaEntry(); + + RAPIDJSON_DELETE(ownAllocator_); + } + + //! Get the root schema. + const SchemaType& GetRoot() const { return *root_; } + +private: + //! Prohibit copying + GenericSchemaDocument(const GenericSchemaDocument&); + //! Prohibit assignment + GenericSchemaDocument& operator=(const GenericSchemaDocument&); + + struct SchemaRefEntry { + SchemaRefEntry(const PointerType& s, const PointerType& t, const SchemaType** outSchema, Allocator *allocator) : source(s, allocator), target(t, allocator), schema(outSchema) {} + PointerType source; + PointerType target; + const SchemaType** schema; + }; + + struct SchemaEntry { + SchemaEntry(const PointerType& p, SchemaType* s, bool o, Allocator* allocator) : pointer(p, allocator), schema(s), owned(o) {} + ~SchemaEntry() { + if (owned) { + schema->~SchemaType(); + Allocator::Free(schema); + } + } + PointerType pointer; + SchemaType* schema; + bool owned; + }; + + void CreateSchemaRecursive(const SchemaType** schema, const PointerType& pointer, const ValueType& v, const ValueType& document) { + if (schema) + *schema = SchemaType::GetTypeless(); + + if (v.GetType() == kObjectType) { + const SchemaType* s = GetSchema(pointer); + if (!s) + CreateSchema(schema, pointer, v, document); + + for (typename ValueType::ConstMemberIterator itr = v.MemberBegin(); itr != v.MemberEnd(); ++itr) + CreateSchemaRecursive(0, pointer.Append(itr->name, allocator_), itr->value, document); + } + else if (v.GetType() == kArrayType) + for (SizeType i = 0; i < v.Size(); i++) + CreateSchemaRecursive(0, pointer.Append(i, allocator_), v[i], document); + } + + void CreateSchema(const SchemaType** schema, const PointerType& pointer, const ValueType& v, const ValueType& document) { + RAPIDJSON_ASSERT(pointer.IsValid()); + if (v.IsObject()) { + if (!HandleRefSchema(pointer, schema, v, document)) { + SchemaType* s = new (allocator_->Malloc(sizeof(SchemaType))) SchemaType(this, pointer, v, document, allocator_); + new (schemaMap_.template Push()) SchemaEntry(pointer, s, true, allocator_); + if (schema) + *schema = s; + } + } + } + + bool HandleRefSchema(const PointerType& source, const SchemaType** schema, const ValueType& v, const ValueType& document) { + static const Ch kRefString[] = { '$', 'r', 'e', 'f', '\0' }; + static const ValueType kRefValue(kRefString, 4); + + typename ValueType::ConstMemberIterator itr = v.FindMember(kRefValue); + if (itr == v.MemberEnd()) + return false; + + if (itr->value.IsString()) { + SizeType len = itr->value.GetStringLength(); + if (len > 0) { + const Ch* s = itr->value.GetString(); + SizeType i = 0; + while (i < len && s[i] != '#') // Find the first # + i++; + + if (i > 0) { // Remote reference, resolve immediately + if (remoteProvider_) { + if (const GenericSchemaDocument* remoteDocument = remoteProvider_->GetRemoteDocument(s, i - 1)) { + PointerType pointer(&s[i], len - i, allocator_); + if (pointer.IsValid()) { + if (const SchemaType* sc = remoteDocument->GetSchema(pointer)) { + if (schema) + *schema = sc; + return true; + } + } + } + } + } + else if (s[i] == '#') { // Local reference, defer resolution + PointerType pointer(&s[i], len - i, allocator_); + if (pointer.IsValid()) { + if (const ValueType* nv = pointer.Get(document)) + if (HandleRefSchema(source, schema, *nv, document)) + return true; + + new (schemaRef_.template Push()) SchemaRefEntry(source, pointer, schema, allocator_); + return true; + } + } + } + } + return false; + } + + const SchemaType* GetSchema(const PointerType& pointer) const { + for (const SchemaEntry* target = schemaMap_.template Bottom(); target != schemaMap_.template End(); ++target) + if (pointer == target->pointer) + return target->schema; + return 0; + } + + PointerType GetPointer(const SchemaType* schema) const { + for (const SchemaEntry* target = schemaMap_.template Bottom(); target != schemaMap_.template End(); ++target) + if (schema == target->schema) + return target->pointer; + return PointerType(); + } + + static const size_t kInitialSchemaMapSize = 64; + static const size_t kInitialSchemaRefSize = 64; + + IRemoteSchemaDocumentProviderType* remoteProvider_; + Allocator *allocator_; + Allocator *ownAllocator_; + const SchemaType* root_; //!< Root schema. + internal::Stack schemaMap_; // Stores created Pointer -> Schemas + internal::Stack schemaRef_; // Stores Pointer from $ref and schema which holds the $ref +}; + +//! GenericSchemaDocument using Value type. +typedef GenericSchemaDocument SchemaDocument; +//! IGenericRemoteSchemaDocumentProvider using SchemaDocument. +typedef IGenericRemoteSchemaDocumentProvider IRemoteSchemaDocumentProvider; + +/////////////////////////////////////////////////////////////////////////////// +// GenericSchemaValidator + +//! JSON Schema Validator. +/*! + A SAX style JSON schema validator. + It uses a \c GenericSchemaDocument to validate SAX events. + It delegates the incoming SAX events to an output handler. + The default output handler does nothing. + It can be reused multiple times by calling \c Reset(). + + \tparam SchemaDocumentType Type of schema document. + \tparam OutputHandler Type of output handler. Default handler does nothing. + \tparam StateAllocator Allocator for storing the internal validation states. +*/ +template < + typename SchemaDocumentType, + typename OutputHandler = BaseReaderHandler, + typename StateAllocator = CrtAllocator> +class GenericSchemaValidator : + public internal::ISchemaStateFactory, + public internal::ISchemaValidator +{ +public: + typedef typename SchemaDocumentType::SchemaType SchemaType; + typedef typename SchemaDocumentType::PointerType PointerType; + typedef typename SchemaType::EncodingType EncodingType; + typedef typename EncodingType::Ch Ch; + + //! Constructor without output handler. + /*! + \param schemaDocument The schema document to conform to. + \param allocator Optional allocator for storing internal validation states. + \param schemaStackCapacity Optional initial capacity of schema path stack. + \param documentStackCapacity Optional initial capacity of document path stack. + */ + GenericSchemaValidator( + const SchemaDocumentType& schemaDocument, + StateAllocator* allocator = 0, + size_t schemaStackCapacity = kDefaultSchemaStackCapacity, + size_t documentStackCapacity = kDefaultDocumentStackCapacity) + : + schemaDocument_(&schemaDocument), + root_(schemaDocument.GetRoot()), + outputHandler_(GetNullHandler()), + stateAllocator_(allocator), + ownStateAllocator_(0), + schemaStack_(allocator, schemaStackCapacity), + documentStack_(allocator, documentStackCapacity), + valid_(true) +#if RAPIDJSON_SCHEMA_VERBOSE + , depth_(0) +#endif + { + } + + //! Constructor with output handler. + /*! + \param schemaDocument The schema document to conform to. + \param allocator Optional allocator for storing internal validation states. + \param schemaStackCapacity Optional initial capacity of schema path stack. + \param documentStackCapacity Optional initial capacity of document path stack. + */ + GenericSchemaValidator( + const SchemaDocumentType& schemaDocument, + OutputHandler& outputHandler, + StateAllocator* allocator = 0, + size_t schemaStackCapacity = kDefaultSchemaStackCapacity, + size_t documentStackCapacity = kDefaultDocumentStackCapacity) + : + schemaDocument_(&schemaDocument), + root_(schemaDocument.GetRoot()), + outputHandler_(outputHandler), + stateAllocator_(allocator), + ownStateAllocator_(0), + schemaStack_(allocator, schemaStackCapacity), + documentStack_(allocator, documentStackCapacity), + valid_(true) +#if RAPIDJSON_SCHEMA_VERBOSE + , depth_(0) +#endif + { + } + + //! Destructor. + ~GenericSchemaValidator() { + Reset(); + RAPIDJSON_DELETE(ownStateAllocator_); + } + + //! Reset the internal states. + void Reset() { + while (!schemaStack_.Empty()) + PopSchema(); + documentStack_.Clear(); + valid_ = true; + } + + //! Checks whether the current state is valid. + // Implementation of ISchemaValidator + virtual bool IsValid() const { return valid_; } + + //! Gets the JSON pointer pointed to the invalid schema. + PointerType GetInvalidSchemaPointer() const { + return schemaStack_.Empty() ? PointerType() : schemaDocument_->GetPointer(&CurrentSchema()); + } + + //! Gets the keyword of invalid schema. + const Ch* GetInvalidSchemaKeyword() const { + return schemaStack_.Empty() ? 0 : CurrentContext().invalidKeyword; + } + + //! Gets the JSON pointer pointed to the invalid value. + PointerType GetInvalidDocumentPointer() const { + return documentStack_.Empty() ? PointerType() : PointerType(documentStack_.template Bottom(), documentStack_.GetSize() / sizeof(Ch)); + } + +#if RAPIDJSON_SCHEMA_VERBOSE +#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_() \ +RAPIDJSON_MULTILINEMACRO_BEGIN\ + *documentStack_.template Push() = '\0';\ + documentStack_.template Pop(1);\ + internal::PrintInvalidDocument(documentStack_.template Bottom());\ +RAPIDJSON_MULTILINEMACRO_END +#else +#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_() +#endif + +#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_(method, arg1)\ + if (!valid_) return false; \ + if (!BeginValue() || !CurrentSchema().method arg1) {\ + RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_();\ + return valid_ = false;\ + } + +#define RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(method, arg2)\ + for (Context* context = schemaStack_.template Bottom(); context != schemaStack_.template End(); context++) {\ + if (context->hasher)\ + static_cast(context->hasher)->method arg2;\ + if (context->validators)\ + for (SizeType i_ = 0; i_ < context->validatorCount; i_++)\ + static_cast(context->validators[i_])->method arg2;\ + if (context->patternPropertiesValidators)\ + for (SizeType i_ = 0; i_ < context->patternPropertiesValidatorCount; i_++)\ + static_cast(context->patternPropertiesValidators[i_])->method arg2;\ + } + +#define RAPIDJSON_SCHEMA_HANDLE_END_(method, arg2)\ + return valid_ = EndValue() && outputHandler_.method arg2 + +#define RAPIDJSON_SCHEMA_HANDLE_VALUE_(method, arg1, arg2) \ + RAPIDJSON_SCHEMA_HANDLE_BEGIN_ (method, arg1);\ + RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(method, arg2);\ + RAPIDJSON_SCHEMA_HANDLE_END_ (method, arg2) + + bool Null() { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Null, (CurrentContext() ), ( )); } + bool Bool(bool b) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Bool, (CurrentContext(), b), (b)); } + bool Int(int i) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Int, (CurrentContext(), i), (i)); } + bool Uint(unsigned u) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Uint, (CurrentContext(), u), (u)); } + bool Int64(int64_t i) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Int64, (CurrentContext(), i), (i)); } + bool Uint64(uint64_t u) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Uint64, (CurrentContext(), u), (u)); } + bool Double(double d) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Double, (CurrentContext(), d), (d)); } + bool RawNumber(const Ch* str, SizeType length, bool copy) + { RAPIDJSON_SCHEMA_HANDLE_VALUE_(String, (CurrentContext(), str, length, copy), (str, length, copy)); } + bool String(const Ch* str, SizeType length, bool copy) + { RAPIDJSON_SCHEMA_HANDLE_VALUE_(String, (CurrentContext(), str, length, copy), (str, length, copy)); } + + bool StartObject() { + RAPIDJSON_SCHEMA_HANDLE_BEGIN_(StartObject, (CurrentContext())); + RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(StartObject, ()); + return valid_ = outputHandler_.StartObject(); + } + + bool Key(const Ch* str, SizeType len, bool copy) { + if (!valid_) return false; + AppendToken(str, len); + if (!CurrentSchema().Key(CurrentContext(), str, len, copy)) return valid_ = false; + RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(Key, (str, len, copy)); + return valid_ = outputHandler_.Key(str, len, copy); + } + + bool EndObject(SizeType memberCount) { + if (!valid_) return false; + RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(EndObject, (memberCount)); + if (!CurrentSchema().EndObject(CurrentContext(), memberCount)) return valid_ = false; + RAPIDJSON_SCHEMA_HANDLE_END_(EndObject, (memberCount)); + } + + bool StartArray() { + RAPIDJSON_SCHEMA_HANDLE_BEGIN_(StartArray, (CurrentContext())); + RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(StartArray, ()); + return valid_ = outputHandler_.StartArray(); + } + + bool EndArray(SizeType elementCount) { + if (!valid_) return false; + RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(EndArray, (elementCount)); + if (!CurrentSchema().EndArray(CurrentContext(), elementCount)) return valid_ = false; + RAPIDJSON_SCHEMA_HANDLE_END_(EndArray, (elementCount)); + } + +#undef RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_ +#undef RAPIDJSON_SCHEMA_HANDLE_BEGIN_ +#undef RAPIDJSON_SCHEMA_HANDLE_PARALLEL_ +#undef RAPIDJSON_SCHEMA_HANDLE_VALUE_ + + // Implementation of ISchemaStateFactory + virtual ISchemaValidator* CreateSchemaValidator(const SchemaType& root) { + return new (GetStateAllocator().Malloc(sizeof(GenericSchemaValidator))) GenericSchemaValidator(*schemaDocument_, root, +#if RAPIDJSON_SCHEMA_VERBOSE + depth_ + 1, +#endif + &GetStateAllocator()); + } + + virtual void DestroySchemaValidator(ISchemaValidator* validator) { + GenericSchemaValidator* v = static_cast(validator); + v->~GenericSchemaValidator(); + StateAllocator::Free(v); + } + + virtual void* CreateHasher() { + return new (GetStateAllocator().Malloc(sizeof(HasherType))) HasherType(&GetStateAllocator()); + } + + virtual uint64_t GetHashCode(void* hasher) { + return static_cast(hasher)->GetHashCode(); + } + + virtual void DestroryHasher(void* hasher) { + HasherType* h = static_cast(hasher); + h->~HasherType(); + StateAllocator::Free(h); + } + + virtual void* MallocState(size_t size) { + return GetStateAllocator().Malloc(size); + } + + virtual void FreeState(void* p) { + return StateAllocator::Free(p); + } + +private: + typedef typename SchemaType::Context Context; + typedef GenericValue, StateAllocator> HashCodeArray; + typedef internal::Hasher HasherType; + + GenericSchemaValidator( + const SchemaDocumentType& schemaDocument, + const SchemaType& root, +#if RAPIDJSON_SCHEMA_VERBOSE + unsigned depth, +#endif + StateAllocator* allocator = 0, + size_t schemaStackCapacity = kDefaultSchemaStackCapacity, + size_t documentStackCapacity = kDefaultDocumentStackCapacity) + : + schemaDocument_(&schemaDocument), + root_(root), + outputHandler_(GetNullHandler()), + stateAllocator_(allocator), + ownStateAllocator_(0), + schemaStack_(allocator, schemaStackCapacity), + documentStack_(allocator, documentStackCapacity), + valid_(true) +#if RAPIDJSON_SCHEMA_VERBOSE + , depth_(depth) +#endif + { + } + + StateAllocator& GetStateAllocator() { + if (!stateAllocator_) + stateAllocator_ = ownStateAllocator_ = RAPIDJSON_NEW(StateAllocator()); + return *stateAllocator_; + } + + bool BeginValue() { + if (schemaStack_.Empty()) + PushSchema(root_); + else { + if (CurrentContext().inArray) + internal::TokenHelper, Ch>::AppendIndexToken(documentStack_, CurrentContext().arrayElementIndex); + + if (!CurrentSchema().BeginValue(CurrentContext())) + return false; + + SizeType count = CurrentContext().patternPropertiesSchemaCount; + const SchemaType** sa = CurrentContext().patternPropertiesSchemas; + typename Context::PatternValidatorType patternValidatorType = CurrentContext().valuePatternValidatorType; + bool valueUniqueness = CurrentContext().valueUniqueness; + if (CurrentContext().valueSchema) + PushSchema(*CurrentContext().valueSchema); + + if (count > 0) { + CurrentContext().objectPatternValidatorType = patternValidatorType; + ISchemaValidator**& va = CurrentContext().patternPropertiesValidators; + SizeType& validatorCount = CurrentContext().patternPropertiesValidatorCount; + va = static_cast(MallocState(sizeof(ISchemaValidator*) * count)); + for (SizeType i = 0; i < count; i++) + va[validatorCount++] = CreateSchemaValidator(*sa[i]); + } + + CurrentContext().arrayUniqueness = valueUniqueness; + } + return true; + } + + bool EndValue() { + if (!CurrentSchema().EndValue(CurrentContext())) + return false; + +#if RAPIDJSON_SCHEMA_VERBOSE + GenericStringBuffer sb; + schemaDocument_->GetPointer(&CurrentSchema()).Stringify(sb); + + *documentStack_.template Push() = '\0'; + documentStack_.template Pop(1); + internal::PrintValidatorPointers(depth_, sb.GetString(), documentStack_.template Bottom()); +#endif + + uint64_t h = CurrentContext().arrayUniqueness ? static_cast(CurrentContext().hasher)->GetHashCode() : 0; + + PopSchema(); + + if (!schemaStack_.Empty()) { + Context& context = CurrentContext(); + if (context.valueUniqueness) { + HashCodeArray* a = static_cast(context.arrayElementHashCodes); + if (!a) + CurrentContext().arrayElementHashCodes = a = new (GetStateAllocator().Malloc(sizeof(HashCodeArray))) HashCodeArray(kArrayType); + for (typename HashCodeArray::ConstValueIterator itr = a->Begin(); itr != a->End(); ++itr) + if (itr->GetUint64() == h) + RAPIDJSON_INVALID_KEYWORD_RETURN(SchemaType::GetUniqueItemsString()); + a->PushBack(h, GetStateAllocator()); + } + } + + // Remove the last token of document pointer + while (!documentStack_.Empty() && *documentStack_.template Pop(1) != '/') + ; + + return true; + } + + void AppendToken(const Ch* str, SizeType len) { + documentStack_.template Reserve(1 + len * 2); // worst case all characters are escaped as two characters + *documentStack_.template PushUnsafe() = '/'; + for (SizeType i = 0; i < len; i++) { + if (str[i] == '~') { + *documentStack_.template PushUnsafe() = '~'; + *documentStack_.template PushUnsafe() = '0'; + } + else if (str[i] == '/') { + *documentStack_.template PushUnsafe() = '~'; + *documentStack_.template PushUnsafe() = '1'; + } + else + *documentStack_.template PushUnsafe() = str[i]; + } + } + + RAPIDJSON_FORCEINLINE void PushSchema(const SchemaType& schema) { new (schemaStack_.template Push()) Context(*this, &schema); } + + RAPIDJSON_FORCEINLINE void PopSchema() { + Context* c = schemaStack_.template Pop(1); + if (HashCodeArray* a = static_cast(c->arrayElementHashCodes)) { + a->~HashCodeArray(); + StateAllocator::Free(a); + } + c->~Context(); + } + + const SchemaType& CurrentSchema() const { return *schemaStack_.template Top()->schema; } + Context& CurrentContext() { return *schemaStack_.template Top(); } + const Context& CurrentContext() const { return *schemaStack_.template Top(); } + + static OutputHandler& GetNullHandler() { + static OutputHandler nullHandler; + return nullHandler; + } + + static const size_t kDefaultSchemaStackCapacity = 1024; + static const size_t kDefaultDocumentStackCapacity = 256; + const SchemaDocumentType* schemaDocument_; + const SchemaType& root_; + OutputHandler& outputHandler_; + StateAllocator* stateAllocator_; + StateAllocator* ownStateAllocator_; + internal::Stack schemaStack_; //!< stack to store the current path of schema (BaseSchemaType *) + internal::Stack documentStack_; //!< stack to store the current path of validating document (Ch) + bool valid_; +#if RAPIDJSON_SCHEMA_VERBOSE + unsigned depth_; +#endif +}; + +typedef GenericSchemaValidator SchemaValidator; + +/////////////////////////////////////////////////////////////////////////////// +// SchemaValidatingReader + +//! A helper class for parsing with validation. +/*! + This helper class is a functor, designed as a parameter of \ref GenericDocument::Populate(). + + \tparam parseFlags Combination of \ref ParseFlag. + \tparam InputStream Type of input stream, implementing Stream concept. + \tparam SourceEncoding Encoding of the input stream. + \tparam SchemaDocumentType Type of schema document. + \tparam StackAllocator Allocator type for stack. +*/ +template < + unsigned parseFlags, + typename InputStream, + typename SourceEncoding, + typename SchemaDocumentType = SchemaDocument, + typename StackAllocator = CrtAllocator> +class SchemaValidatingReader { +public: + typedef typename SchemaDocumentType::PointerType PointerType; + typedef typename InputStream::Ch Ch; + + //! Constructor + /*! + \param is Input stream. + \param sd Schema document. + */ + SchemaValidatingReader(InputStream& is, const SchemaDocumentType& sd) : is_(is), sd_(sd), invalidSchemaKeyword_(), isValid_(true) {} + + template + bool operator()(Handler& handler) { + GenericReader reader; + GenericSchemaValidator validator(sd_, handler); + parseResult_ = reader.template Parse(is_, validator); + + isValid_ = validator.IsValid(); + if (isValid_) { + invalidSchemaPointer_ = PointerType(); + invalidSchemaKeyword_ = 0; + invalidDocumentPointer_ = PointerType(); + } + else { + invalidSchemaPointer_ = validator.GetInvalidSchemaPointer(); + invalidSchemaKeyword_ = validator.GetInvalidSchemaKeyword(); + invalidDocumentPointer_ = validator.GetInvalidDocumentPointer(); + } + + return parseResult_; + } + + const ParseResult& GetParseResult() const { return parseResult_; } + bool IsValid() const { return isValid_; } + const PointerType& GetInvalidSchemaPointer() const { return invalidSchemaPointer_; } + const Ch* GetInvalidSchemaKeyword() const { return invalidSchemaKeyword_; } + const PointerType& GetInvalidDocumentPointer() const { return invalidDocumentPointer_; } + +private: + InputStream& is_; + const SchemaDocumentType& sd_; + + ParseResult parseResult_; + PointerType invalidSchemaPointer_; + const Ch* invalidSchemaKeyword_; + PointerType invalidDocumentPointer_; + bool isValid_; +}; + +RAPIDJSON_NAMESPACE_END +RAPIDJSON_DIAG_POP + +#endif // RAPIDJSON_SCHEMA_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/stream.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/stream.h new file mode 100644 index 0000000..fef82c2 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/stream.h @@ -0,0 +1,179 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#include "rapidjson.h" + +#ifndef RAPIDJSON_STREAM_H_ +#define RAPIDJSON_STREAM_H_ + +#include "encodings.h" + +RAPIDJSON_NAMESPACE_BEGIN + +/////////////////////////////////////////////////////////////////////////////// +// Stream + +/*! \class rapidjson::Stream + \brief Concept for reading and writing characters. + + For read-only stream, no need to implement PutBegin(), Put(), Flush() and PutEnd(). + + For write-only stream, only need to implement Put() and Flush(). + +\code +concept Stream { + typename Ch; //!< Character type of the stream. + + //! Read the current character from stream without moving the read cursor. + Ch Peek() const; + + //! Read the current character from stream and moving the read cursor to next character. + Ch Take(); + + //! Get the current read cursor. + //! \return Number of characters read from start. + size_t Tell(); + + //! Begin writing operation at the current read pointer. + //! \return The begin writer pointer. + Ch* PutBegin(); + + //! Write a character. + void Put(Ch c); + + //! Flush the buffer. + void Flush(); + + //! End the writing operation. + //! \param begin The begin write pointer returned by PutBegin(). + //! \return Number of characters written. + size_t PutEnd(Ch* begin); +} +\endcode +*/ + +//! Provides additional information for stream. +/*! + By using traits pattern, this type provides a default configuration for stream. + For custom stream, this type can be specialized for other configuration. + See TEST(Reader, CustomStringStream) in readertest.cpp for example. +*/ +template +struct StreamTraits { + //! Whether to make local copy of stream for optimization during parsing. + /*! + By default, for safety, streams do not use local copy optimization. + Stream that can be copied fast should specialize this, like StreamTraits. + */ + enum { copyOptimization = 0 }; +}; + +//! Reserve n characters for writing to a stream. +template +inline void PutReserve(Stream& stream, size_t count) { + (void)stream; + (void)count; +} + +//! Write character to a stream, presuming buffer is reserved. +template +inline void PutUnsafe(Stream& stream, typename Stream::Ch c) { + stream.Put(c); +} + +//! Put N copies of a character to a stream. +template +inline void PutN(Stream& stream, Ch c, size_t n) { + PutReserve(stream, n); + for (size_t i = 0; i < n; i++) + PutUnsafe(stream, c); +} + +/////////////////////////////////////////////////////////////////////////////// +// StringStream + +//! Read-only string stream. +/*! \note implements Stream concept +*/ +template +struct GenericStringStream { + typedef typename Encoding::Ch Ch; + + GenericStringStream(const Ch *src) : src_(src), head_(src) {} + + Ch Peek() const { return *src_; } + Ch Take() { return *src_++; } + size_t Tell() const { return static_cast(src_ - head_); } + + Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } + void Put(Ch) { RAPIDJSON_ASSERT(false); } + void Flush() { RAPIDJSON_ASSERT(false); } + size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } + + const Ch* src_; //!< Current read position. + const Ch* head_; //!< Original head of the string. +}; + +template +struct StreamTraits > { + enum { copyOptimization = 1 }; +}; + +//! String stream with UTF8 encoding. +typedef GenericStringStream > StringStream; + +/////////////////////////////////////////////////////////////////////////////// +// InsituStringStream + +//! A read-write string stream. +/*! This string stream is particularly designed for in-situ parsing. + \note implements Stream concept +*/ +template +struct GenericInsituStringStream { + typedef typename Encoding::Ch Ch; + + GenericInsituStringStream(Ch *src) : src_(src), dst_(0), head_(src) {} + + // Read + Ch Peek() { return *src_; } + Ch Take() { return *src_++; } + size_t Tell() { return static_cast(src_ - head_); } + + // Write + void Put(Ch c) { RAPIDJSON_ASSERT(dst_ != 0); *dst_++ = c; } + + Ch* PutBegin() { return dst_ = src_; } + size_t PutEnd(Ch* begin) { return static_cast(dst_ - begin); } + void Flush() {} + + Ch* Push(size_t count) { Ch* begin = dst_; dst_ += count; return begin; } + void Pop(size_t count) { dst_ -= count; } + + Ch* src_; + Ch* dst_; + Ch* head_; +}; + +template +struct StreamTraits > { + enum { copyOptimization = 1 }; +}; + +//! Insitu string stream with UTF8 encoding. +typedef GenericInsituStringStream > InsituStringStream; + +RAPIDJSON_NAMESPACE_END + +#endif // RAPIDJSON_STREAM_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/stringbuffer.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/stringbuffer.h new file mode 100644 index 0000000..78f34d2 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/stringbuffer.h @@ -0,0 +1,117 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_STRINGBUFFER_H_ +#define RAPIDJSON_STRINGBUFFER_H_ + +#include "stream.h" +#include "internal/stack.h" + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS +#include // std::move +#endif + +#include "internal/stack.h" + +#if defined(__clang__) +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(c++98-compat) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +//! Represents an in-memory output stream. +/*! + \tparam Encoding Encoding of the stream. + \tparam Allocator type for allocating memory buffer. + \note implements Stream concept +*/ +template +class GenericStringBuffer { +public: + typedef typename Encoding::Ch Ch; + + GenericStringBuffer(Allocator* allocator = 0, size_t capacity = kDefaultCapacity) : stack_(allocator, capacity) {} + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS + GenericStringBuffer(GenericStringBuffer&& rhs) : stack_(std::move(rhs.stack_)) {} + GenericStringBuffer& operator=(GenericStringBuffer&& rhs) { + if (&rhs != this) + stack_ = std::move(rhs.stack_); + return *this; + } +#endif + + void Put(Ch c) { *stack_.template Push() = c; } + void PutUnsafe(Ch c) { *stack_.template PushUnsafe() = c; } + void Flush() {} + + void Clear() { stack_.Clear(); } + void ShrinkToFit() { + // Push and pop a null terminator. This is safe. + *stack_.template Push() = '\0'; + stack_.ShrinkToFit(); + stack_.template Pop(1); + } + + void Reserve(size_t count) { stack_.template Reserve(count); } + Ch* Push(size_t count) { return stack_.template Push(count); } + Ch* PushUnsafe(size_t count) { return stack_.template PushUnsafe(count); } + void Pop(size_t count) { stack_.template Pop(count); } + + const Ch* GetString() const { + // Push and pop a null terminator. This is safe. + *stack_.template Push() = '\0'; + stack_.template Pop(1); + + return stack_.template Bottom(); + } + + size_t GetSize() const { return stack_.GetSize(); } + + static const size_t kDefaultCapacity = 256; + mutable internal::Stack stack_; + +private: + // Prohibit copy constructor & assignment operator. + GenericStringBuffer(const GenericStringBuffer&); + GenericStringBuffer& operator=(const GenericStringBuffer&); +}; + +//! String buffer with UTF8 encoding +typedef GenericStringBuffer > StringBuffer; + +template +inline void PutReserve(GenericStringBuffer& stream, size_t count) { + stream.Reserve(count); +} + +template +inline void PutUnsafe(GenericStringBuffer& stream, typename Encoding::Ch c) { + stream.PutUnsafe(c); +} + +//! Implement specialized version of PutN() with memset() for better performance. +template<> +inline void PutN(GenericStringBuffer >& stream, char c, size_t n) { + std::memset(stream.stack_.Push(n), c, n * sizeof(c)); +} + +RAPIDJSON_NAMESPACE_END + +#if defined(__clang__) +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_STRINGBUFFER_H_ diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/writer.h b/ServerMonitoringService/ServerMonitoringService/rapidjson/writer.h new file mode 100644 index 0000000..94f22dd --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/rapidjson/writer.h @@ -0,0 +1,610 @@ +// Tencent is pleased to support the open source community by making RapidJSON available. +// +// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. +// +// Licensed under the MIT License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// http://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +#ifndef RAPIDJSON_WRITER_H_ +#define RAPIDJSON_WRITER_H_ + +#include "stream.h" +#include "internal/stack.h" +#include "internal/strfunc.h" +#include "internal/dtoa.h" +#include "internal/itoa.h" +#include "stringbuffer.h" +#include // placement new + +#if defined(RAPIDJSON_SIMD) && defined(_MSC_VER) +#include +#pragma intrinsic(_BitScanForward) +#endif +#ifdef RAPIDJSON_SSE42 +#include +#elif defined(RAPIDJSON_SSE2) +#include +#endif + +#ifdef _MSC_VER +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(padded) +RAPIDJSON_DIAG_OFF(unreachable-code) +#endif + +RAPIDJSON_NAMESPACE_BEGIN + +/////////////////////////////////////////////////////////////////////////////// +// WriteFlag + +/*! \def RAPIDJSON_WRITE_DEFAULT_FLAGS + \ingroup RAPIDJSON_CONFIG + \brief User-defined kWriteDefaultFlags definition. + + User can define this as any \c WriteFlag combinations. +*/ +#ifndef RAPIDJSON_WRITE_DEFAULT_FLAGS +#define RAPIDJSON_WRITE_DEFAULT_FLAGS kWriteNoFlags +#endif + +//! Combination of writeFlags +enum WriteFlag { + kWriteNoFlags = 0, //!< No flags are set. + kWriteValidateEncodingFlag = 1, //!< Validate encoding of JSON strings. + kWriteNanAndInfFlag = 2, //!< Allow writing of Infinity, -Infinity and NaN. + kWriteDefaultFlags = RAPIDJSON_WRITE_DEFAULT_FLAGS //!< Default write flags. Can be customized by defining RAPIDJSON_WRITE_DEFAULT_FLAGS +}; + +//! JSON writer +/*! Writer implements the concept Handler. + It generates JSON text by events to an output os. + + User may programmatically calls the functions of a writer to generate JSON text. + + On the other side, a writer can also be passed to objects that generates events, + + for example Reader::Parse() and Document::Accept(). + + \tparam OutputStream Type of output stream. + \tparam SourceEncoding Encoding of source string. + \tparam TargetEncoding Encoding of output stream. + \tparam StackAllocator Type of allocator for allocating memory of stack. + \note implements Handler concept +*/ +template, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags> +class Writer { +public: + typedef typename SourceEncoding::Ch Ch; + + static const int kDefaultMaxDecimalPlaces = 324; + + //! Constructor + /*! \param os Output stream. + \param stackAllocator User supplied allocator. If it is null, it will create a private one. + \param levelDepth Initial capacity of stack. + */ + explicit + Writer(OutputStream& os, StackAllocator* stackAllocator = 0, size_t levelDepth = kDefaultLevelDepth) : + os_(&os), level_stack_(stackAllocator, levelDepth * sizeof(Level)), maxDecimalPlaces_(kDefaultMaxDecimalPlaces), hasRoot_(false) {} + + explicit + Writer(StackAllocator* allocator = 0, size_t levelDepth = kDefaultLevelDepth) : + os_(0), level_stack_(allocator, levelDepth * sizeof(Level)), maxDecimalPlaces_(kDefaultMaxDecimalPlaces), hasRoot_(false) {} + + //! Reset the writer with a new stream. + /*! + This function reset the writer with a new stream and default settings, + in order to make a Writer object reusable for output multiple JSONs. + + \param os New output stream. + \code + Writer writer(os1); + writer.StartObject(); + // ... + writer.EndObject(); + + writer.Reset(os2); + writer.StartObject(); + // ... + writer.EndObject(); + \endcode + */ + void Reset(OutputStream& os) { + os_ = &os; + hasRoot_ = false; + level_stack_.Clear(); + } + + //! Checks whether the output is a complete JSON. + /*! + A complete JSON has a complete root object or array. + */ + bool IsComplete() const { + return hasRoot_ && level_stack_.Empty(); + } + + int GetMaxDecimalPlaces() const { + return maxDecimalPlaces_; + } + + //! Sets the maximum number of decimal places for double output. + /*! + This setting truncates the output with specified number of decimal places. + + For example, + + \code + writer.SetMaxDecimalPlaces(3); + writer.StartArray(); + writer.Double(0.12345); // "0.123" + writer.Double(0.0001); // "0.0" + writer.Double(1.234567890123456e30); // "1.234567890123456e30" (do not truncate significand for positive exponent) + writer.Double(1.23e-4); // "0.0" (do truncate significand for negative exponent) + writer.EndArray(); + \endcode + + The default setting does not truncate any decimal places. You can restore to this setting by calling + \code + writer.SetMaxDecimalPlaces(Writer::kDefaultMaxDecimalPlaces); + \endcode + */ + void SetMaxDecimalPlaces(int maxDecimalPlaces) { + maxDecimalPlaces_ = maxDecimalPlaces; + } + + /*!@name Implementation of Handler + \see Handler + */ + //@{ + + bool Null() { Prefix(kNullType); return EndValue(WriteNull()); } + bool Bool(bool b) { Prefix(b ? kTrueType : kFalseType); return EndValue(WriteBool(b)); } + bool Int(int i) { Prefix(kNumberType); return EndValue(WriteInt(i)); } + bool Uint(unsigned u) { Prefix(kNumberType); return EndValue(WriteUint(u)); } + bool Int64(int64_t i64) { Prefix(kNumberType); return EndValue(WriteInt64(i64)); } + bool Uint64(uint64_t u64) { Prefix(kNumberType); return EndValue(WriteUint64(u64)); } + + //! Writes the given \c double value to the stream + /*! + \param d The value to be written. + \return Whether it is succeed. + */ + bool Double(double d) { Prefix(kNumberType); return EndValue(WriteDouble(d)); } + + bool RawNumber(const Ch* str, SizeType length, bool copy = false) { + (void)copy; + Prefix(kNumberType); + return EndValue(WriteString(str, length)); + } + + bool String(const Ch* str, SizeType length, bool copy = false) { + (void)copy; + Prefix(kStringType); + return EndValue(WriteString(str, length)); + } + +#if RAPIDJSON_HAS_STDSTRING + bool String(const std::basic_string& str) { + return String(str.data(), SizeType(str.size())); + } +#endif + + bool StartObject() { + Prefix(kObjectType); + new (level_stack_.template Push()) Level(false); + return WriteStartObject(); + } + + bool Key(const Ch* str, SizeType length, bool copy = false) { return String(str, length, copy); } + + bool EndObject(SizeType memberCount = 0) { + (void)memberCount; + RAPIDJSON_ASSERT(level_stack_.GetSize() >= sizeof(Level)); + RAPIDJSON_ASSERT(!level_stack_.template Top()->inArray); + level_stack_.template Pop(1); + return EndValue(WriteEndObject()); + } + + bool StartArray() { + Prefix(kArrayType); + new (level_stack_.template Push()) Level(true); + return WriteStartArray(); + } + + bool EndArray(SizeType elementCount = 0) { + (void)elementCount; + RAPIDJSON_ASSERT(level_stack_.GetSize() >= sizeof(Level)); + RAPIDJSON_ASSERT(level_stack_.template Top()->inArray); + level_stack_.template Pop(1); + return EndValue(WriteEndArray()); + } + //@} + + /*! @name Convenience extensions */ + //@{ + + //! Simpler but slower overload. + bool String(const Ch* str) { return String(str, internal::StrLen(str)); } + bool Key(const Ch* str) { return Key(str, internal::StrLen(str)); } + + //@} + + //! Write a raw JSON value. + /*! + For user to write a stringified JSON as a value. + + \param json A well-formed JSON value. It should not contain null character within [0, length - 1] range. + \param length Length of the json. + \param type Type of the root of json. + */ + bool RawValue(const Ch* json, size_t length, Type type) { Prefix(type); return EndValue(WriteRawValue(json, length)); } + +protected: + //! Information for each nested level + struct Level { + Level(bool inArray_) : valueCount(0), inArray(inArray_) {} + size_t valueCount; //!< number of values in this level + bool inArray; //!< true if in array, otherwise in object + }; + + static const size_t kDefaultLevelDepth = 32; + + bool WriteNull() { + PutReserve(*os_, 4); + PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'u'); PutUnsafe(*os_, 'l'); PutUnsafe(*os_, 'l'); return true; + } + + bool WriteBool(bool b) { + if (b) { + PutReserve(*os_, 4); + PutUnsafe(*os_, 't'); PutUnsafe(*os_, 'r'); PutUnsafe(*os_, 'u'); PutUnsafe(*os_, 'e'); + } + else { + PutReserve(*os_, 5); + PutUnsafe(*os_, 'f'); PutUnsafe(*os_, 'a'); PutUnsafe(*os_, 'l'); PutUnsafe(*os_, 's'); PutUnsafe(*os_, 'e'); + } + return true; + } + + bool WriteInt(int i) { + char buffer[11]; + const char* end = internal::i32toa(i, buffer); + PutReserve(*os_, static_cast(end - buffer)); + for (const char* p = buffer; p != end; ++p) + PutUnsafe(*os_, static_cast(*p)); + return true; + } + + bool WriteUint(unsigned u) { + char buffer[10]; + const char* end = internal::u32toa(u, buffer); + PutReserve(*os_, static_cast(end - buffer)); + for (const char* p = buffer; p != end; ++p) + PutUnsafe(*os_, static_cast(*p)); + return true; + } + + bool WriteInt64(int64_t i64) { + char buffer[21]; + const char* end = internal::i64toa(i64, buffer); + PutReserve(*os_, static_cast(end - buffer)); + for (const char* p = buffer; p != end; ++p) + PutUnsafe(*os_, static_cast(*p)); + return true; + } + + bool WriteUint64(uint64_t u64) { + char buffer[20]; + char* end = internal::u64toa(u64, buffer); + PutReserve(*os_, static_cast(end - buffer)); + for (char* p = buffer; p != end; ++p) + PutUnsafe(*os_, static_cast(*p)); + return true; + } + + bool WriteDouble(double d) { + if (internal::Double(d).IsNanOrInf()) { + if (!(writeFlags & kWriteNanAndInfFlag)) + return false; + if (internal::Double(d).IsNan()) { + PutReserve(*os_, 3); + PutUnsafe(*os_, 'N'); PutUnsafe(*os_, 'a'); PutUnsafe(*os_, 'N'); + return true; + } + if (internal::Double(d).Sign()) { + PutReserve(*os_, 9); + PutUnsafe(*os_, '-'); + } + else + PutReserve(*os_, 8); + PutUnsafe(*os_, 'I'); PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'f'); + PutUnsafe(*os_, 'i'); PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'i'); PutUnsafe(*os_, 't'); PutUnsafe(*os_, 'y'); + return true; + } + + char buffer[25]; + char* end = internal::dtoa(d, buffer, maxDecimalPlaces_); + PutReserve(*os_, static_cast(end - buffer)); + for (char* p = buffer; p != end; ++p) + PutUnsafe(*os_, static_cast(*p)); + return true; + } + + bool WriteString(const Ch* str, SizeType length) { + static const typename TargetEncoding::Ch hexDigits[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; + static const char escape[256] = { +#define Z16 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + //0 1 2 3 4 5 6 7 8 9 A B C D E F + 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'b', 't', 'n', 'u', 'f', 'r', 'u', 'u', // 00 + 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', // 10 + 0, 0, '"', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 + Z16, Z16, // 30~4F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'\\', 0, 0, 0, // 50 + Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16 // 60~FF +#undef Z16 + }; + + if (TargetEncoding::supportUnicode) + PutReserve(*os_, 2 + length * 6); // "\uxxxx..." + else + PutReserve(*os_, 2 + length * 12); // "\uxxxx\uyyyy..." + + PutUnsafe(*os_, '\"'); + GenericStringStream is(str); + while (ScanWriteUnescapedString(is, length)) { + const Ch c = is.Peek(); + if (!TargetEncoding::supportUnicode && static_cast(c) >= 0x80) { + // Unicode escaping + unsigned codepoint; + if (RAPIDJSON_UNLIKELY(!SourceEncoding::Decode(is, &codepoint))) + return false; + PutUnsafe(*os_, '\\'); + PutUnsafe(*os_, 'u'); + if (codepoint <= 0xD7FF || (codepoint >= 0xE000 && codepoint <= 0xFFFF)) { + PutUnsafe(*os_, hexDigits[(codepoint >> 12) & 15]); + PutUnsafe(*os_, hexDigits[(codepoint >> 8) & 15]); + PutUnsafe(*os_, hexDigits[(codepoint >> 4) & 15]); + PutUnsafe(*os_, hexDigits[(codepoint ) & 15]); + } + else { + RAPIDJSON_ASSERT(codepoint >= 0x010000 && codepoint <= 0x10FFFF); + // Surrogate pair + unsigned s = codepoint - 0x010000; + unsigned lead = (s >> 10) + 0xD800; + unsigned trail = (s & 0x3FF) + 0xDC00; + PutUnsafe(*os_, hexDigits[(lead >> 12) & 15]); + PutUnsafe(*os_, hexDigits[(lead >> 8) & 15]); + PutUnsafe(*os_, hexDigits[(lead >> 4) & 15]); + PutUnsafe(*os_, hexDigits[(lead ) & 15]); + PutUnsafe(*os_, '\\'); + PutUnsafe(*os_, 'u'); + PutUnsafe(*os_, hexDigits[(trail >> 12) & 15]); + PutUnsafe(*os_, hexDigits[(trail >> 8) & 15]); + PutUnsafe(*os_, hexDigits[(trail >> 4) & 15]); + PutUnsafe(*os_, hexDigits[(trail ) & 15]); + } + } + else if ((sizeof(Ch) == 1 || static_cast(c) < 256) && RAPIDJSON_UNLIKELY(escape[static_cast(c)])) { + is.Take(); + PutUnsafe(*os_, '\\'); + PutUnsafe(*os_, static_cast(escape[static_cast(c)])); + if (escape[static_cast(c)] == 'u') { + PutUnsafe(*os_, '0'); + PutUnsafe(*os_, '0'); + PutUnsafe(*os_, hexDigits[static_cast(c) >> 4]); + PutUnsafe(*os_, hexDigits[static_cast(c) & 0xF]); + } + } + else if (RAPIDJSON_UNLIKELY(!(writeFlags & kWriteValidateEncodingFlag ? + Transcoder::Validate(is, *os_) : + Transcoder::TranscodeUnsafe(is, *os_)))) + return false; + } + PutUnsafe(*os_, '\"'); + return true; + } + + bool ScanWriteUnescapedString(GenericStringStream& is, size_t length) { + return RAPIDJSON_LIKELY(is.Tell() < length); + } + + bool WriteStartObject() { os_->Put('{'); return true; } + bool WriteEndObject() { os_->Put('}'); return true; } + bool WriteStartArray() { os_->Put('['); return true; } + bool WriteEndArray() { os_->Put(']'); return true; } + + bool WriteRawValue(const Ch* json, size_t length) { + PutReserve(*os_, length); + for (size_t i = 0; i < length; i++) { + RAPIDJSON_ASSERT(json[i] != '\0'); + PutUnsafe(*os_, json[i]); + } + return true; + } + + void Prefix(Type type) { + (void)type; + if (RAPIDJSON_LIKELY(level_stack_.GetSize() != 0)) { // this value is not at root + Level* level = level_stack_.template Top(); + if (level->valueCount > 0) { + if (level->inArray) + os_->Put(','); // add comma if it is not the first element in array + else // in object + os_->Put((level->valueCount % 2 == 0) ? ',' : ':'); + } + if (!level->inArray && level->valueCount % 2 == 0) + RAPIDJSON_ASSERT(type == kStringType); // if it's in object, then even number should be a name + level->valueCount++; + } + else { + RAPIDJSON_ASSERT(!hasRoot_); // Should only has one and only one root. + hasRoot_ = true; + } + } + + // Flush the value if it is the top level one. + bool EndValue(bool ret) { + if (RAPIDJSON_UNLIKELY(level_stack_.Empty())) // end of json text + os_->Flush(); + return ret; + } + + OutputStream* os_; + internal::Stack level_stack_; + int maxDecimalPlaces_; + bool hasRoot_; + +private: + // Prohibit copy constructor & assignment operator. + Writer(const Writer&); + Writer& operator=(const Writer&); +}; + +// Full specialization for StringStream to prevent memory copying + +template<> +inline bool Writer::WriteInt(int i) { + char *buffer = os_->Push(11); + const char* end = internal::i32toa(i, buffer); + os_->Pop(static_cast(11 - (end - buffer))); + return true; +} + +template<> +inline bool Writer::WriteUint(unsigned u) { + char *buffer = os_->Push(10); + const char* end = internal::u32toa(u, buffer); + os_->Pop(static_cast(10 - (end - buffer))); + return true; +} + +template<> +inline bool Writer::WriteInt64(int64_t i64) { + char *buffer = os_->Push(21); + const char* end = internal::i64toa(i64, buffer); + os_->Pop(static_cast(21 - (end - buffer))); + return true; +} + +template<> +inline bool Writer::WriteUint64(uint64_t u) { + char *buffer = os_->Push(20); + const char* end = internal::u64toa(u, buffer); + os_->Pop(static_cast(20 - (end - buffer))); + return true; +} + +template<> +inline bool Writer::WriteDouble(double d) { + if (internal::Double(d).IsNanOrInf()) { + // Note: This code path can only be reached if (RAPIDJSON_WRITE_DEFAULT_FLAGS & kWriteNanAndInfFlag). + if (!(kWriteDefaultFlags & kWriteNanAndInfFlag)) + return false; + if (internal::Double(d).IsNan()) { + PutReserve(*os_, 3); + PutUnsafe(*os_, 'N'); PutUnsafe(*os_, 'a'); PutUnsafe(*os_, 'N'); + return true; + } + if (internal::Double(d).Sign()) { + PutReserve(*os_, 9); + PutUnsafe(*os_, '-'); + } + else + PutReserve(*os_, 8); + PutUnsafe(*os_, 'I'); PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'f'); + PutUnsafe(*os_, 'i'); PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'i'); PutUnsafe(*os_, 't'); PutUnsafe(*os_, 'y'); + return true; + } + + char *buffer = os_->Push(25); + char* end = internal::dtoa(d, buffer, maxDecimalPlaces_); + os_->Pop(static_cast(25 - (end - buffer))); + return true; +} + +#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42) +template<> +inline bool Writer::ScanWriteUnescapedString(StringStream& is, size_t length) { + if (length < 16) + return RAPIDJSON_LIKELY(is.Tell() < length); + + if (!RAPIDJSON_LIKELY(is.Tell() < length)) + return false; + + const char* p = is.src_; + const char* end = is.head_ + length; + const char* nextAligned = reinterpret_cast((reinterpret_cast(p) + 15) & static_cast(~15)); + const char* endAligned = reinterpret_cast(reinterpret_cast(end) & static_cast(~15)); + if (nextAligned > end) + return true; + + while (p != nextAligned) + if (*p < 0x20 || *p == '\"' || *p == '\\') { + is.src_ = p; + return RAPIDJSON_LIKELY(is.Tell() < length); + } + else + os_->PutUnsafe(*p++); + + // The rest of string using SIMD + static const char dquote[16] = { '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"' }; + static const char bslash[16] = { '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\' }; + static const char space[16] = { 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19 }; + const __m128i dq = _mm_loadu_si128(reinterpret_cast(&dquote[0])); + const __m128i bs = _mm_loadu_si128(reinterpret_cast(&bslash[0])); + const __m128i sp = _mm_loadu_si128(reinterpret_cast(&space[0])); + + for (; p != endAligned; p += 16) { + const __m128i s = _mm_load_si128(reinterpret_cast(p)); + const __m128i t1 = _mm_cmpeq_epi8(s, dq); + const __m128i t2 = _mm_cmpeq_epi8(s, bs); + const __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); // s < 0x20 <=> max(s, 0x19) == 0x19 + const __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3); + unsigned short r = static_cast(_mm_movemask_epi8(x)); + if (RAPIDJSON_UNLIKELY(r != 0)) { // some of characters is escaped + SizeType len; +#ifdef _MSC_VER // Find the index of first escaped + unsigned long offset; + _BitScanForward(&offset, r); + len = offset; +#else + len = static_cast(__builtin_ffs(r) - 1); +#endif + char* q = reinterpret_cast(os_->PushUnsafe(len)); + for (size_t i = 0; i < len; i++) + q[i] = p[i]; + + p += len; + break; + } + _mm_storeu_si128(reinterpret_cast<__m128i *>(os_->PushUnsafe(16)), s); + } + + is.src_ = p; + return RAPIDJSON_LIKELY(is.Tell() < length); +} +#endif // defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42) + +RAPIDJSON_NAMESPACE_END + +#ifdef _MSC_VER +RAPIDJSON_DIAG_POP +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif + +#endif // RAPIDJSON_RAPIDJSON_H_ From 97499b3382048da34982c647b22c447164501342 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 17:03:49 +0900 Subject: [PATCH 44/84] Update README.md --- README.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/README.md b/README.md index f8222fd..5edc285 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,66 @@ --- +## List Collected by Agent +#### **Cpu** +>###### CpuUsage +>###### CpuIdle +>###### CpuModel +#### **Memory** +>##### MemoryLoadPercent +>##### MemoryUsedByte +>##### MemoryFreeByte +>##### MemoryTotalByte +#### **System** +>##### UserName +>##### ComputerName +>##### OsVersionName +#### **Disk** +>##### Path +>##### Name +>##### FileFormat +>##### UsedBytes +>##### TotalBytes +>##### FreeBytes +>##### Type +>##### DiskPerformance +>##### ReadSec +>##### WriteSec +>##### DiskCount +#### **Process** +>##### PID +>##### CommandLine +>##### Name +>##### Path +>##### Owner +>##### CreateTime +>##### HandleCount +>##### ThreadCount +>##### MemoryUsage +>##### CpuUsage +>##### TotalThreadCount +#### **Network Connection Info** +>##### ProtocolType +>##### LocalEndpoint +>>##### IPV4 +>>##### IPV6 +>>##### Port +>##### RemoteEndpoint +>>##### IPV4 +>>##### IPV6 +>>##### Port +>##### State +>##### ProcessID +>##### CreateTime +>##### OwnerInfo +>##### NetworkConnectionCount +#### **Network Adapter Info** +>##### AdapterCount + +--- + +## Network Protocol + #### SMS Agent -> (TCP) #### (TCP) Data Server -> (WebSocket) #### (WebSocket) Web Server From 0d7b8395859bd4aa1732ed9ba2891e663699f4e7 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 17:04:14 +0900 Subject: [PATCH 45/84] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 5edc285..94c7a96 100644 --- a/README.md +++ b/README.md @@ -66,8 +66,6 @@ #### **Network Adapter Info** >##### AdapterCount ---- - ## Network Protocol #### SMS Agent -> (TCP) @@ -78,4 +76,5 @@ ##### Cross-platform support be expected. Currently, only Windows is supported. +## Info [![npm](https://img.shields.io/badge/email-bg0820%40naver.com-red.svg)]() From 8ea2d6032d4825549b3b40f6ea4308019107f175 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 17:04:36 +0900 Subject: [PATCH 46/84] Update README.md --- README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/README.md b/README.md index 94c7a96..4ff557e 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ #### > Data Server #### > Web Server (Visualization) ### - +##### Cross-platform support be expected. Currently, only Windows is supported. --- ## List Collected by Agent @@ -72,9 +72,5 @@ #### (TCP) Data Server -> (WebSocket) #### (WebSocket) Web Server - - -##### Cross-platform support be expected. Currently, only Windows is supported. - ## Info [![npm](https://img.shields.io/badge/email-bg0820%40naver.com-red.svg)]() From 00e62a9fe3636521bfb71b300a83c44cdfbcc9a6 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 17:44:40 +0900 Subject: [PATCH 47/84] :bug: Fixed Error Process getMemoryUsage handle null check add --- .../data/DataManager.hpp | 4 + .../process/Process.cpp | 78 ++++++++++--------- 2 files changed, 45 insertions(+), 37 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index 08d2308..118d4ba 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -12,7 +12,11 @@ #include "../system/SystemOS.hpp" #include "../util/TQTimer.hpp" #include "../util/StopWatch.hpp" +#include "../rapidjson/document.h" +#include "../rapidjson/stringbuffer.h" +#include "../rapidjson/writer.h" +using namespace rapidjson; using namespace std; typedef struct system_info diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index df82357..49985fb 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -334,65 +334,69 @@ int Process::getNetworkUsage(double &val) int Process::getMemoryUsage(DWORD &val) { - int nResult = 1; + DWORD workingSetPages[1024 * 128]; // 512KB + DWORD pageSize = 0x1000; + + DWORD sharedPages = 0; + DWORD privatePages = 0; + DWORD pageTablePages = 0; - DWORD dWorkingSetPages[1024 * 128]; // 512KB - DWORD dPageSize = 0x1000; - DWORD dSharedPages = 0; - DWORD dPrivatePages = 0; - DWORD dPageTablePages = 0; + if (this->handle == NULL) + return 0; - if (!QueryWorkingSet(this->handle, dWorkingSetPages, sizeof(dWorkingSetPages))) - nResult = 0; + char szBuffer[MAX_PATH * 4]; - DWORD dPages = dWorkingSetPages[0]; + if (!QueryWorkingSet(this->handle, workingSetPages, sizeof(workingSetPages))) + return 0; - qsort(&dWorkingSetPages[1], dPages, sizeof(DWORD), Compare); + DWORD pages = workingSetPages[0]; + qsort(&workingSetPages[1], pages, sizeof(DWORD), Compare); - for (DWORD i = 1; i <= dPages; i++) + for (DWORD i = 1; i <= pageSize; i++) { - DWORD dCurrentPageStatus = 0; - DWORD dCurrentPageAddress; - DWORD dNextPageAddress; - DWORD dNextPageFlags; - DWORD dPageAddress = dWorkingSetPages[i] & 0xFFFFF000; - DWORD dPageFlags = dWorkingSetPages[i] & 0x00000FFF; - - while (i <= dPages) // iterate all pages + DWORD currentPageStatus = 0; + DWORD currentPageAddress; + DWORD nextPageAddress; + DWORD nextPageFlags; + DWORD pageAddress = workingSetPages[i] & 0xFFFFF000; + DWORD pageFlags = workingSetPages[i] & 0x00000FFF; + + while (i <= pages) // iterate all pages { - dCurrentPageStatus++; + currentPageStatus++; - if (i == dPages) //if last page + if (i == pages) //if last page break; - dCurrentPageAddress = dWorkingSetPages[i] & 0xFFFFF000; - dNextPageAddress = dWorkingSetPages[i + 1] & 0xFFFFF000; - dNextPageFlags = dWorkingSetPages[i + 1] & 0x00000FFF; + currentPageAddress = workingSetPages[i] & 0xFFFFF000; + nextPageAddress = workingSetPages[i + 1] & 0xFFFFF000; + nextPageFlags = workingSetPages[i + 1] & 0x00000FFF; - //decide whether iterate further or exit(this is non-contiguous page or have different flags) - if ((dNextPageAddress == (dCurrentPageAddress + dPageSize)) && (dNextPageFlags == dPageFlags)) + //decide whether iterate further or exit + //(this is non-contiguous page or have different flags) + if ((nextPageAddress == (currentPageAddress + pageSize)) && (nextPageFlags == pageFlags)) i++; else break; } - if ((dPageAddress < 0xC0000000) || (dPageAddress > 0xE0000000)) + if ((pageAddress < 0xC0000000) || (pageAddress > 0xE0000000)) { - if (dPageFlags & 0x100) // this is shared one - dSharedPages += dCurrentPageStatus; - else // private one - dPrivatePages += dCurrentPageStatus; + if (pageFlags & 0x100) // this is shared one + sharedPages += currentPageStatus; + + else // private one + privatePages += currentPageStatus; } else - dPageTablePages += dCurrentPageStatus; //page table region + pageTablePages += currentPageStatus; //page table region } - DWORD dTotal = dPages; - DWORD dShared = dSharedPages; + DWORD totalMemory = pages * 4; + DWORD sharedMemory = sharedPages * 4; + DWORD privateMemory = totalMemory - sharedMemory; - val = (dTotal - dShared) * 4; //ref - - return nResult; + val = privateMemory; //ref } int Process::getCpuUsage(double &val) From f20dc6adcdee092e690a3f27c5e1d5a461e0b4f7 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 18:27:25 +0900 Subject: [PATCH 48/84] :bug: Fixed Error DataManager Class delete when Class Destructor --- .../data/DataManager.cpp | 27 +++++++++++++++---- .../data/DataManager.hpp | 18 ++++++++----- 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index c3cc766..5478a9d 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -1,5 +1,19 @@ #include "DataManager.hpp" +int main() +{ + // ޸ +#ifdef _DEBUG + _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); + // ޸ ã + // _CrtSetBreakAlloc(165); +#endif + + DataManager dataManager =DataManager(); + system("pause"); +} + + void DataManager::Update() { StopWatch stopWatch; @@ -13,8 +27,11 @@ void DataManager::Update() { for (int i = 0; i < systemInfo->processCount; i++) { - delete systemInfo->process[i]; - systemInfo->process[i] = nullptr; + if (systemInfo->process[i]) + { + delete systemInfo->process[i]; + systemInfo->process[i] = nullptr; + } } delete[] systemInfo->process; @@ -39,9 +56,9 @@ void DataManager::Update() DWORD handleCount; int toTalCount, currentCount; systemInfo->process[i]->getCpuUsage(cpuVal); - systemInfo->process[i]->getMemoryUsage(memoryVal); - systemInfo->process[i]->getHandleCount(handleCount); - systemInfo->process[i]->getThreadCount(toTalCount, currentCount); + //systemInfo->process[i]->getMemoryUsage(memoryVal); + //systemInfo->process[i]->getHandleCount(handleCount); + //systemInfo->process[i]->getThreadCount(toTalCount, currentCount); /*cout << "Owner : " << systemInfo->process[i]->getOwner() << endl; cout << "Name : " << systemInfo->process[i]->getName() << endl; diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index 118d4ba..1eca18b 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -90,18 +90,22 @@ class DataManager if (systemInfo) { - // ~SystemDiskIO() /* - if (systemInfo->disk) - { + ~SystemDiskIO() delete[] systemInfo->disk; - systemInfo->disk = nullptr; - }*/ + */ if (systemInfo->process) { - for (int i = 0; iprocessCount; i++) - delete systemInfo->process[i]; + for (int i = 0; i < systemInfo->processCount; i++) + { + if (systemInfo->process[i]) + { + delete systemInfo->process[i]; + systemInfo->process[i] = nullptr; + } + } + delete[] systemInfo->process; systemInfo->process = nullptr; } From ab850c8f1c46aa2e29940eca6d31abd1d19f5744 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 18:41:19 +0900 Subject: [PATCH 49/84] Update README.md --- README.md | 128 +++++++++++++++++++++++++++++------------------------- 1 file changed, 69 insertions(+), 59 deletions(-) diff --git a/README.md b/README.md index 4ff557e..3df0756 100644 --- a/README.md +++ b/README.md @@ -1,70 +1,74 @@ # SMS - Server Monitoring Service ### 현재 이 프로젝트는 개발중 입니다. -### (this project is not a finished project.) -### Server Monitoring Service -#### > SMS Agent -#### > Data Server -#### > Web Server (Visualization) +### (this project is not a finished) + +### **Server Monitoring Service** +>#### SMS Agent +>#### Data Server +>#### Web Server (Visualization) ### +##### 크로스 플랫폼 지원 예정입니다. 현재는 윈도우만 지원중 ##### Cross-platform support be expected. Currently, only Windows is supported. + --- ## List Collected by Agent -#### **Cpu** ->###### CpuUsage ->###### CpuIdle ->###### CpuModel -#### **Memory** ->##### MemoryLoadPercent ->##### MemoryUsedByte ->##### MemoryFreeByte ->##### MemoryTotalByte -#### **System** ->##### UserName ->##### ComputerName ->##### OsVersionName -#### **Disk** ->##### Path ->##### Name ->##### FileFormat ->##### UsedBytes ->##### TotalBytes ->##### FreeBytes ->##### Type ->##### DiskPerformance ->##### ReadSec ->##### WriteSec ->##### DiskCount -#### **Process** ->##### PID ->##### CommandLine ->##### Name ->##### Path ->##### Owner ->##### CreateTime ->##### HandleCount ->##### ThreadCount ->##### MemoryUsage ->##### CpuUsage ->##### TotalThreadCount -#### **Network Connection Info** ->##### ProtocolType ->##### LocalEndpoint ->>##### IPV4 ->>##### IPV6 ->>##### Port ->##### RemoteEndpoint ->>##### IPV4 ->>##### IPV6 ->>##### Port ->##### State ->##### ProcessID ->##### CreateTime ->##### OwnerInfo ->##### NetworkConnectionCount -#### **Network Adapter Info** ->##### AdapterCount + +* Cpu + * CpuUsage + * CpuIdle + * CpuModel +* Memory + * MemoryLoadPercent + * MemoryUsedByte + * MemoryFreeByte + * MemoryTotalByte +* System Info + * UserName + * ComputerName + * OsVersionName +* Disk + * Path + * Name + * FileFormat + * UsedBytes + * TotalBytes + * FreeBytes + * Type + * DiskPerformance + * ReadSec + * WriteSec + * DiskCount +* Process + * PID + * CommandLine + * Name + * Path + * Owner + * CreateTime + * HandleCount + * ThreadCount + * MemoryUsage + * CpuUsage + * TotalThreadCount +* Network Connection Info + * ProtocolType + * LocalEndpoint + * IPV4 + * IPV6 + * Port + * RemoteEndpoint + * IPV4 + * IPV6 + * Port + * State + * ProcessID + * CreateTime + * OwnerInfo + * NetworkConnectionCount +* Network Adapter Info + * AdapterCount ## Network Protocol @@ -72,5 +76,11 @@ #### (TCP) Data Server -> (WebSocket) #### (WebSocket) Web Server +## Library +| Library Name | Link | License | +| :---------------: | :-----------------: | :-------------------: | +| RapidJson | | | + + ## Info [![npm](https://img.shields.io/badge/email-bg0820%40naver.com-red.svg)]() From 045965305cb067ad46f7914b4c317929122a48fd Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 18:42:44 +0900 Subject: [PATCH 50/84] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3df0756..201ad06 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ # SMS - Server Monitoring Service -### 현재 이 프로젝트는 개발중 입니다. -### (this project is not a finished) -### **Server Monitoring Service** +### **Server Monitoring Service (SMS)** >#### SMS Agent >#### Data Server >#### Web Server (Visualization) -### +--- +##### 현재 이 프로젝트는 개발중 입니다. +##### this project is not a finished. ##### 크로스 플랫폼 지원 예정입니다. 현재는 윈도우만 지원중 ##### Cross-platform support be expected. Currently, only Windows is supported. From 39b53a313efe397af157f49d41c01e3d3dbe11c5 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 18:43:00 +0900 Subject: [PATCH 51/84] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 201ad06..8f67ab9 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,6 @@ ##### 크로스 플랫폼 지원 예정입니다. 현재는 윈도우만 지원중 ##### Cross-platform support be expected. Currently, only Windows is supported. ---- - ## List Collected by Agent * Cpu From a305e7baa3630909639ad69935a284e0787af710 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 20:34:07 +0900 Subject: [PATCH 52/84] :construction: Add a Comment --- .../ServerMonitoringService.vcxproj | 8 ++++++-- .../process/Process.cpp | 20 +++++++++++++------ 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj index 7ceed6a..112485f 100644 --- a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj +++ b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj @@ -74,8 +74,11 @@ Level3 Disabled - true + false + + HighestAvailable + @@ -95,11 +98,12 @@ MaxSpeed true true - true + false true true + HighestAvailable diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 49985fb..aa41440 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -332,6 +332,10 @@ int Process::getNetworkUsage(double &val) return 1; } +/* + val = kbyte + Not working properly in operate on 64bit system +*/ int Process::getMemoryUsage(DWORD &val) { DWORD workingSetPages[1024 * 128]; // 512KB @@ -342,12 +346,10 @@ int Process::getMemoryUsage(DWORD &val) DWORD pageTablePages = 0; if (this->handle == NULL) - return 0; - - char szBuffer[MAX_PATH * 4]; + return -1; if (!QueryWorkingSet(this->handle, workingSetPages, sizeof(workingSetPages))) - return 0; + return -2; DWORD pages = workingSetPages[0]; qsort(&workingSetPages[1], pages, sizeof(DWORD), Compare); @@ -358,8 +360,8 @@ int Process::getMemoryUsage(DWORD &val) DWORD currentPageAddress; DWORD nextPageAddress; DWORD nextPageFlags; - DWORD pageAddress = workingSetPages[i] & 0xFFFFF000; - DWORD pageFlags = workingSetPages[i] & 0x00000FFF; + ULONGLONG pageAddress = workingSetPages[i] & 0xFFFFF000; + ULONGLONG pageFlags = workingSetPages[i] & 0x00000FFF; while (i <= pages) // iterate all pages { @@ -396,7 +398,13 @@ int Process::getMemoryUsage(DWORD &val) DWORD sharedMemory = sharedPages * 4; DWORD privateMemory = totalMemory - sharedMemory; + cout << "totalMemory : " << totalMemory << endl; + cout << "sharedMemory : " << sharedMemory << endl; + cout << "privateMemory : " << privateMemory << endl; + val = privateMemory; //ref + + return 1; } int Process::getCpuUsage(double &val) From fa3bace4eddde71f20689706d8a4c1f91270dc2a Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 23:19:49 +0900 Subject: [PATCH 53/84] :hammer: Code Refactoring : :zap: Process Thread Count function Now only one call --- .../data/DataManager.cpp | 19 +++-- .../process/Process.cpp | 62 +++------------- .../process/Process.hpp | 2 - .../process/ProcessList.cpp | 71 ++++++++++++++++++- .../process/ProcessList.hpp | 16 +++-- 5 files changed, 99 insertions(+), 71 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 5478a9d..0e224ed 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -1,5 +1,5 @@ #include "DataManager.hpp" - +/* int main() { // ޸ @@ -9,10 +9,10 @@ int main() // _CrtSetBreakAlloc(165); #endif - DataManager dataManager =DataManager(); + DataManager dataManager = DataManager(); system("pause"); } - +*/ void DataManager::Update() { @@ -56,14 +56,19 @@ void DataManager::Update() DWORD handleCount; int toTalCount, currentCount; systemInfo->process[i]->getCpuUsage(cpuVal); - //systemInfo->process[i]->getMemoryUsage(memoryVal); - //systemInfo->process[i]->getHandleCount(handleCount); + systemInfo->process[i]->getMemoryUsage(memoryVal); + systemInfo->process[i]->getHandleCount(handleCount); //systemInfo->process[i]->getThreadCount(toTalCount, currentCount); - /*cout << "Owner : " << systemInfo->process[i]->getOwner() << endl; + /* cout << "Owner : " << systemInfo->process[i]->getOwner() << endl; cout << "Name : " << systemInfo->process[i]->getName() << endl; cout << "Path : " << systemInfo->process[i]->getPath() << endl; cout << "Cmd : " << systemInfo->process[i]->getCommandLine() << endl; + cout << "Cpu Usage : " << cpuVal << endl; + cout << "Memory Usage : " << memoryVal / 1024.0 << "MB" << endl; + cout << "Handle Count : " << handleCount << endl; + cout << "Thread Count : " << currentCount << endl; + cout << "Total Thread Count : " << toTalCount << endl; cout << "=========================================" << endl<< endl;*/ } @@ -114,7 +119,7 @@ void DataManager::Start() if (this->tqTimer == NULL) { this->tqTimer = new TQTimer(std::bind(&DataManager::CallbackProc, this)); - this->tqTimer->setInterval(1000); // 1Sec + this->tqTimer->setInterval(300000); // 300Sec this->tqTimer->Start(); } } diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index aa41440..c199ff2 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -276,56 +276,6 @@ int Process::getHandleCount(DWORD &val) return 1; } -int Process::getThreadCount(int ¶mTotalThreadCount, int ¶mCurrentProcessThreadCount) -{ - HANDLE hThreadSnap = INVALID_HANDLE_VALUE; - THREADENTRY32 te32; - int totalThreadCount = 0; - int processThreadCount = 0; - - // Take a snapshot of all running threads - hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); - - if (hThreadSnap == INVALID_HANDLE_VALUE) - return 0; - - // Fill in the size of the structure before using it. - te32.dwSize = sizeof(THREADENTRY32); - - // Retrieve information about the first thread, - // and exit if unsuccessful - if (!Thread32First(hThreadSnap, &te32)) - { - if (hThreadSnap != INVALID_HANDLE_VALUE) - CloseHandle(hThreadSnap); // Must clean up the snapshot object! - return 0; - } - - // Now walk the thread list of the system, - // and display information about each thread - // associated with the specified process - do // Thread32First - { - totalThreadCount++; - if (te32.th32OwnerProcessID == this->pid) - { - processThreadCount++; - //printf(TEXT("\n THREAD ID = 0x%08X"), te32.th32ThreadID); - //printf(TEXT("\n base priority = %d"), te32.tpBasePri); - //printf(TEXT("\n delta priority = %d"), te32.tpDeltaPri); - } - } while (Thread32Next(hThreadSnap, &te32)); - - // Don't forget to clean up the snapshot object. - if (hThreadSnap != INVALID_HANDLE_VALUE) - CloseHandle(hThreadSnap); - - paramTotalThreadCount = totalThreadCount; - paramCurrentProcessThreadCount = processThreadCount; - - return 1; -} - int Process::getNetworkUsage(double &val) { // TODO : @@ -338,6 +288,14 @@ int Process::getNetworkUsage(double &val) */ int Process::getMemoryUsage(DWORD &val) { + /*#if _WIN32 || _WIN64 + #if _WIN64 + // TODO : 64Bit Compile + #else + // TODO : 32Bit Compile + #endif + #endif*/ + DWORD workingSetPages[1024 * 128]; // 512KB DWORD pageSize = 0x1000; @@ -398,10 +356,6 @@ int Process::getMemoryUsage(DWORD &val) DWORD sharedMemory = sharedPages * 4; DWORD privateMemory = totalMemory - sharedMemory; - cout << "totalMemory : " << totalMemory << endl; - cout << "sharedMemory : " << sharedMemory << endl; - cout << "privateMemory : " << privateMemory << endl; - val = privateMemory; //ref return 1; diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index 6f078ec..ad1b1c9 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -9,7 +9,6 @@ #include #include -#include #include #include #include "../util/StopWatch.hpp" @@ -105,7 +104,6 @@ class Process TCHAR* getOwner(); HICON getIcon(BOOLEAN LargeIcon); int getHandleCount(DWORD &val); - int getThreadCount(int ¶mTotalThreadCount, int ¶mCurrentProcessThreadCount); int getNetworkUsage(double &val); int getMemoryUsage(DWORD &val); int getCpuUsage(double &val); diff --git a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp index b7b83e6..609ed86 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp @@ -9,7 +9,7 @@ void ProcessList::Update() EnumProcesses(this->processList, cb, &cbNeeded); - if (cb == cbNeeded) + if (cb == cbNeeded) // ProcessList array space lack { if (this->processList) { @@ -24,10 +24,77 @@ void ProcessList::Update() { this->processListSize = cbNeeded; break; - } + } } } +int ProcessList::getThreadCount() +{ + int nResult = 1; + HANDLE hThreadSnap = INVALID_HANDLE_VALUE; + THREADENTRY32 te32; + + hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); + + if (hThreadSnap == INVALID_HANDLE_VALUE) + nResult = 0; + + // Fill in the size of the structure before using it. + te32.dwSize = sizeof(THREADENTRY32); + + // Retrieve information about the first thread, + // and exit if unsuccessful + if (!Thread32First(hThreadSnap, &te32)) + { + if (hThreadSnap != INVALID_HANDLE_VALUE) + CloseHandle(hThreadSnap); // Must clean up the snapshot object! + nResult = 0; + } + + // Now walk the thread list of the system, + // and display information about each thread + // associated with the specified process + do // Thread32First + { + int pid = te32.th32OwnerProcessID; + if (isContainsKey(pid)) // pid exist, ϴ + { + threadCounting.find(pid)->second++; // +1 + } + else // ʴ + { + threadCounting.insert(unordered_map::value_type(pid, 1)); // first found = 1 + } + + //printf(TEXT("\n THREAD ID = 0x%08X"), te32.th32ThreadID); + //printf(TEXT("\n base priority = %d"), te32.tpBasePri); + //printf(TEXT("\n delta priority = %d"), te32.tpDeltaPri); + } while (Thread32Next(hThreadSnap, &te32)); + + // Don't forget to clean up the snapshot object. + if (hThreadSnap != INVALID_HANDLE_VALUE) + CloseHandle(hThreadSnap); + + return nResult; +} + +BOOLEAN ProcessList::isContainsKey(int paramPID) +{ + if (threadCounting.find(paramPID) == threadCounting.end()) + return FALSE; + else + return TRUE; +} + +int ProcessList::getProcessThreadCount(const int paramPID) +{ + int threadCount = 0; + + if (isContainsKey(paramPID)) + threadCount = threadCounting.find(paramPID)->second; + + return threadCount; +} int ProcessList::getCount() { diff --git a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp index 35a37db..57c4d9c 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp @@ -4,6 +4,8 @@ #include #include #include +#include +#include #pragma comment(lib, "psapi.lib") @@ -14,15 +16,18 @@ typedef unsigned long DWORD; class ProcessList { private: - int processListCount = 0; + int processListCount = 128; // += 128 DWORD *processList; DWORD processListSize = NULL; + unordered_map threadCounting; +private: + int getThreadCount(); + BOOLEAN isContainsKey(int paramPID); public: ProcessList() { - //processList.reserve(128); - processListCount = 128; processList = new DWORD[processListCount]; + getThreadCount(); } ~ProcessList() @@ -36,9 +41,8 @@ class ProcessList void Update(); // process list update int getCount(); // update -> return value is processList count int getPID(const int i); // return value is num i to process PID value - // TODO: function Add - // getProcessUser, getProcessStatus, getProcessNetworkSend, - // getProcessNetworkReceive, getProcessDescription + int getProcessThreadCount(const int paramPID); + }; #endif \ No newline at end of file From 8ebebedcdc177838f93154e03301d6fad5ce6e27 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 23:22:28 +0900 Subject: [PATCH 54/84] :lock: Replaced a hash_map as unordered_map --- .../ServerMonitoringService Server/data/ClientManager.cpp | 2 +- .../ServerMonitoringService Server/data/ClientManager.hpp | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService Server/data/ClientManager.cpp b/ServerMonitoringService/ServerMonitoringService Server/data/ClientManager.cpp index f3c4488..d4f620c 100644 --- a/ServerMonitoringService/ServerMonitoringService Server/data/ClientManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService Server/data/ClientManager.cpp @@ -15,7 +15,7 @@ Client* ClientManager::add(SOCKADDR_IN paramAddr, SOCKET paramClientSocket) client->recvBytes = 0; client->sendBytes = 0; - clientList.insert(hash_map::value_type(ip, client)); + clientList.insert(unordered_map::value_type(ip, client)); string str = Util::format("Client Connected [%s], Count : %d", ip.c_str(), getCount()); Log::printLog(str); diff --git a/ServerMonitoringService/ServerMonitoringService Server/data/ClientManager.hpp b/ServerMonitoringService/ServerMonitoringService Server/data/ClientManager.hpp index da5916a..d2fbe78 100644 --- a/ServerMonitoringService/ServerMonitoringService Server/data/ClientManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService Server/data/ClientManager.hpp @@ -5,15 +5,14 @@ #include "../util/Log.hpp" #include -#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1 -#include +#include using namespace std; class ClientManager { private: - hash_map clientList; + unordered_map clientList; int clientCount = 0; public: Client* add(SOCKADDR_IN paramAddr, SOCKET paramClientSocket); From c01ddc57d2778067c3ef44b54a06e831db23d50d Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sat, 15 Jul 2017 23:27:10 +0900 Subject: [PATCH 55/84] :sparkles: Add a getTotalThreadCount function --- .../ServerMonitoringService/process/ProcessList.cpp | 5 +++++ .../ServerMonitoringService/process/ProcessList.hpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp index 609ed86..65cc780 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp @@ -96,6 +96,11 @@ int ProcessList::getProcessThreadCount(const int paramPID) return threadCount; } +int ProcessList::getTotalThreadCount() +{ + return this->threadCounting.size(); +} + int ProcessList::getCount() { if (processListSize != NULL) diff --git a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp index 57c4d9c..a33216d 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp @@ -42,7 +42,7 @@ class ProcessList int getCount(); // update -> return value is processList count int getPID(const int i); // return value is num i to process PID value int getProcessThreadCount(const int paramPID); - + int getTotalThreadCount(); }; #endif \ No newline at end of file From 743c8d4d881af01f5a291f44f5d7fc795a08734f Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sun, 16 Jul 2017 01:17:06 +0900 Subject: [PATCH 56/84] :zap: Improve a Process getCpuUsage function, :sparkles: microDelay function add --- .../ServerMonitoringService/data/DataManager.cpp | 16 ++++++++-------- .../ServerMonitoringService/process/Process.cpp | 6 +++--- .../ServerMonitoringService/process/Process.hpp | 1 + .../ServerMonitoringService/util/Util.cpp | 8 +++++++- .../ServerMonitoringService/util/Util.hpp | 7 ++++--- 5 files changed, 23 insertions(+), 15 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 0e224ed..ccc13dd 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -54,21 +54,21 @@ void DataManager::Update() double cpuVal; DWORD memoryVal; DWORD handleCount; - int toTalCount, currentCount; - systemInfo->process[i]->getCpuUsage(cpuVal); - systemInfo->process[i]->getMemoryUsage(memoryVal); + systemInfo->process[i]->getCpuUsage(cpuVal); // 1.7 Sec + // systemInfo->process[i]->getMemoryUsage(memoryVal); // 0.6 Sec systemInfo->process[i]->getHandleCount(handleCount); - //systemInfo->process[i]->getThreadCount(toTalCount, currentCount); + processListObj.getProcessThreadCount(pid); + processListObj.getTotalThreadCount(); - /* cout << "Owner : " << systemInfo->process[i]->getOwner() << endl; + /*cout << "Owner : " << systemInfo->process[i]->getOwner() << endl; cout << "Name : " << systemInfo->process[i]->getName() << endl; cout << "Path : " << systemInfo->process[i]->getPath() << endl; cout << "Cmd : " << systemInfo->process[i]->getCommandLine() << endl; cout << "Cpu Usage : " << cpuVal << endl; cout << "Memory Usage : " << memoryVal / 1024.0 << "MB" << endl; cout << "Handle Count : " << handleCount << endl; - cout << "Thread Count : " << currentCount << endl; - cout << "Total Thread Count : " << toTalCount << endl; + cout << "Thread Count : " << processListObj.getProcessThreadCount(pid) << endl; + cout << "Total Thread Count : " << processListObj.getTotalThreadCount() << endl; cout << "=========================================" << endl<< endl;*/ } @@ -119,7 +119,7 @@ void DataManager::Start() if (this->tqTimer == NULL) { this->tqTimer = new TQTimer(std::bind(&DataManager::CallbackProc, this)); - this->tqTimer->setInterval(300000); // 300Sec + this->tqTimer->setInterval(1500); // 5Sec this->tqTimer->Start(); } } diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index c199ff2..15e59f1 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -397,13 +397,13 @@ int Process::getCpuUsage(double &val) LastPCounter = qpcLastInt; LastCycleTime = CycleTime; - if (count > 3) + if (count >= 2) { val = Usage; break; } - - Sleep(1); // QueryPerformanceCounter Function Resolution is 1 microsecond + + Util::microDelay(30); // QueryPerformanceCounter Function Resolution is 1 microsecond count++; } diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index ad1b1c9..3322e23 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -12,6 +12,7 @@ #include #include #include "../util/StopWatch.hpp" +#include "../util/Util.hpp" #include diff --git a/ServerMonitoringService/ServerMonitoringService/util/Util.cpp b/ServerMonitoringService/ServerMonitoringService/util/Util.cpp index 18b19c8..8f7572b 100644 --- a/ServerMonitoringService/ServerMonitoringService/util/Util.cpp +++ b/ServerMonitoringService/ServerMonitoringService/util/Util.cpp @@ -66,4 +66,10 @@ string Util::getLocalIp() string Util::getStringToAddr(SOCKADDR_IN paramAddr) { return Util::format("%s:%d", inet_ntoa(paramAddr.sin_addr), ntohs(paramAddr.sin_port)); -} \ No newline at end of file +} + +void Util::microDelay(ULONG time) +{ + time_point start = high_resolution_clock::now(); + while ((high_resolution_clock::now() - start).count() / 1000.0 < time); +} diff --git a/ServerMonitoringService/ServerMonitoringService/util/Util.hpp b/ServerMonitoringService/ServerMonitoringService/util/Util.hpp index b527c83..8dd652e 100644 --- a/ServerMonitoringService/ServerMonitoringService/util/Util.hpp +++ b/ServerMonitoringService/ServerMonitoringService/util/Util.hpp @@ -3,14 +3,14 @@ #include #include -#include #include #include -#include +#include +#include #include using namespace std; - +using namespace chrono; class Util { public: @@ -19,6 +19,7 @@ class Util static string getLocalIp(); static string getStringToAddr(SOCKADDR_IN paramAddr); static void stringReplace(string& subject, const string& search, const string& replace); + static void microDelay(ULONG time); }; #endif \ No newline at end of file From dda5f47ec9f904af1567a491d0825a745ccf60cf Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sun, 16 Jul 2017 20:04:59 +0900 Subject: [PATCH 57/84] :lock: Add a Process initFileNamePath function in nResult check --- .../ServerMonitoringService/process/Process.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 15e59f1..0f79257 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -33,6 +33,9 @@ void Process::initFileNamePath() else nResult = -4; + if (nResult != 1) + return; + this->name = new TCHAR[MAX_PATH]; this->path = new TCHAR[MAX_PATH]; strcpy_s(this->name, MAX_PATH, szProcessName); From aab35a4b26bf61e6f93bc3e4e34b9ba0ba87a0bb Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sun, 16 Jul 2017 20:50:39 +0900 Subject: [PATCH 58/84] :fire: Remove a getCpuIdle function --- .../ServerMonitoringService/system/SystemCPU.cpp | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemCPU.cpp b/ServerMonitoringService/ServerMonitoringService/system/SystemCPU.cpp index cd09232..03096f2 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemCPU.cpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemCPU.cpp @@ -46,18 +46,6 @@ int SystemCpu::getUsage(double &val) return 1; } -// 100 - total = IDLE CPU Usage -int SystemCpu::getIdleUsage(double &val) -{ - double curUsage; - if (getUsage(curUsage) == 0) - return 0; - - val = 100.0 - curUsage; - - return 1; -} - // TIME DIFF FUNC ULONGLONG SystemCpu::SubtractTimes(const FILETIME one, const FILETIME two) { From 410920abc3ef7d59f3a12f3a7939d0620d76c289 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sun, 16 Jul 2017 20:51:45 +0900 Subject: [PATCH 59/84] :fire: Remove a getIdleUsage function in header --- .../data/DataManager.cpp | 155 +++++++++++++++++- .../data/DataManager.hpp | 2 +- .../system/SystemCPU.hpp | 1 - 3 files changed, 153 insertions(+), 5 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index ccc13dd..a741aed 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -1,5 +1,5 @@ #include "DataManager.hpp" -/* + int main() { // ޸ @@ -10,15 +10,161 @@ int main() #endif DataManager dataManager = DataManager(); + system("pause"); } -*/ + +void DataManager::jsonUpdate() +{ + // json object create + Document json; + Document::AllocatorType &alloc = json.GetAllocator(); + json.SetObject(); + + // json Cpu + json.AddMember("CpuUsage", systemInfo->cpuUsageVal, alloc); + json.AddMember("CpuIdle", systemInfo->cpuIdleVal, alloc); + string strCpuModel = systemInfo->cpuModel; + Value vCpuModel(strCpuModel.c_str(), strCpuModel.size(), alloc); + + json.AddMember("CpuModel", vCpuModel, alloc); + // json Memory + /*json.AddMember("MemoryLoadPercent", systemInfo->memoryLoadPercent, alloc); + json.AddMember("MemoryUsedByte", systemInfo->memoryUsedByte, alloc); + json.AddMember("MemoryFreeByte", systemInfo->memoryFreeByte, alloc); + json.AddMember("MemoryTotalByte", systemInfo->memoryTotalByte, alloc);*/ + + // json System Info +/* string strUserName = systemInfo->userName; + string strComputerName = systemInfo->computerName; + string strOSVerisonName = systemInfo->osVersion; + + json.AddMember("UserName", strUserName, alloc); + json.AddMember("ComputerName", strComputerName, alloc); + json.AddMember("OSVersionName", strOSVerisonName, alloc);*/ + + // json Disk list + Value jsonDiskList(kArrayType); + Value jsonDisk(kObjectType); + jsonDisk.AddMember("Path", "C:\\", alloc); + jsonDisk.AddMember("Name", "C:\\", alloc); + jsonDisk.AddMember("FileFormat", "C:\\", alloc); + jsonDisk.AddMember("UsedBytes", "C:\\", alloc); + jsonDisk.AddMember("TotalBytes", "C:\\", alloc); + jsonDisk.AddMember("FreeBytes", "C:\\", alloc); + jsonDisk.AddMember("Type", "C:\\", alloc); + + Value jsonDiskPerformance(kObjectType); + jsonDiskPerformance.AddMember("BytesRead", 123, alloc); + jsonDiskPerformance.AddMember("BytesWritten", 31, alloc); + jsonDiskPerformance.AddMember("ReadTime", 123, alloc); + jsonDiskPerformance.AddMember("WriteTime", 123, alloc); + jsonDiskPerformance.AddMember("IdleTime", 1234, alloc); + jsonDiskPerformance.AddMember("ReadCount", 1234, alloc); + jsonDiskPerformance.AddMember("WriteCount", 1234, alloc); + jsonDiskPerformance.AddMember("QueueDepth", 1234, alloc); + jsonDiskPerformance.AddMember("SplitCount", 1234, alloc); + jsonDiskPerformance.AddMember("QueryTime", 1234, alloc); + jsonDiskPerformance.AddMember("StorageDeviceNumber", 2, alloc); + jsonDiskPerformance.AddMember("StorageManagerName", "Name", alloc); + jsonDisk.AddMember("DiskPerformance", jsonDiskPerformance, alloc); + + jsonDisk.AddMember("ReadSec", 123, alloc); + jsonDisk.AddMember("WriteSec", 1234, alloc); + jsonDisk.AddMember("DiskCount", 1234, alloc); + jsonDiskList.PushBack(jsonDisk, alloc); + json.AddMember("Disk List", jsonDiskList, alloc); + + Value jsonProcessList(kArrayType); + Value jsonProcess(kObjectType); + jsonProcess.AddMember("PID", 123, alloc); + jsonProcess.AddMember("CommandLine", 123, alloc); + jsonProcess.AddMember("Name", 123, alloc); + jsonProcess.AddMember("Path", 123, alloc); + jsonProcess.AddMember("Owner", 123, alloc); + jsonProcess.AddMember("CreateTime", 123, alloc); + jsonProcess.AddMember("HandleCount", 123, alloc); + jsonProcess.AddMember("ThreadCount", 123, alloc); + jsonProcess.AddMember("MemoryUsage", 123, alloc); + jsonProcess.AddMember("CpuUsage", 123, alloc); + jsonProcessList.PushBack(jsonProcess, alloc); + json.AddMember("Process List", jsonProcessList, alloc); + json.AddMember("TotalThreadCount", 2145, alloc); + + Value jsonNetworkConnectionList(kArrayType); + Value jsonNetworkConnection(kObjectType); + jsonNetworkConnection.AddMember("ProtocolType", 2, alloc); + + Value jsonLocalEndpoint(kObjectType); + jsonLocalEndpoint.AddMember("IPV4", 123, alloc); + jsonLocalEndpoint.AddMember("IPV6", 123, alloc); + jsonLocalEndpoint.AddMember("Port", 123, alloc); + jsonNetworkConnection.AddMember("LocalEndpoint", jsonLocalEndpoint, alloc); + + Value jsonRemoteEndpoint(kObjectType); + jsonRemoteEndpoint.AddMember("IPV4", 123, alloc); + jsonRemoteEndpoint.AddMember("IPV6", 123, alloc); + jsonRemoteEndpoint.AddMember("Port", 123, alloc); + jsonNetworkConnection.AddMember("RemoteEndpoint", jsonRemoteEndpoint, alloc); + + jsonNetworkConnection.AddMember("State", 2, alloc); + jsonNetworkConnection.AddMember("ProcessID", 2, alloc); + jsonNetworkConnection.AddMember("CreateTime", 2, alloc); + jsonNetworkConnection.AddMember("OwnerInfo", 2, alloc); + jsonNetworkConnectionList.PushBack(jsonNetworkConnection, alloc); + json.AddMember("NetworkConnection List", jsonNetworkConnectionList, alloc); + json.AddMember("NetworkConnectionCount", 2, alloc); + + + Value jsonAdapterInfoList(kArrayType); + Value jsonAdapterInfo(kObjectType); + jsonAdapterInfo.AddMember("ComboIndex", 2, alloc); + jsonAdapterInfo.AddMember("AdapterName", 2, alloc); + jsonAdapterInfo.AddMember("Description", 2, alloc); + jsonAdapterInfo.AddMember("AddressLength", 2, alloc); + jsonAdapterInfo.AddMember("Address", 2, alloc); + jsonAdapterInfo.AddMember("Index", 2, alloc); + jsonAdapterInfo.AddMember("Type", 2, alloc); + jsonAdapterInfo.AddMember("DhcpEnabled", 2, alloc); + jsonAdapterInfo.AddMember("CurrentIpAddress", 2, alloc); + // IP List + Value jsonIpAddressList(kArrayType); + Value jsonIpAddress(kObjectType); + jsonIpAddress.AddMember("IP", "123.123.123.123", alloc); + jsonIpAddressList.PushBack(jsonIpAddress, alloc); + jsonAdapterInfo.AddMember("IpAddressList", jsonIpAddressList, alloc); + + // Gateway List + Value jsonGatewayList(kArrayType); + Value jsonGateway(kObjectType); + jsonGateway.AddMember("IP", "123.123.123.123", alloc); + jsonGatewayList.PushBack(jsonGateway, alloc); + jsonAdapterInfo.AddMember("GatewayList", jsonGatewayList, alloc); + + jsonAdapterInfo.AddMember("DhcpServer", "LIST", alloc); + jsonAdapterInfo.AddMember("HaveWins", FALSE, alloc); + jsonAdapterInfo.AddMember("PrimaryWinsServer", "123.123.123.123", alloc); + jsonAdapterInfo.AddMember("SecondaryWinsServer", "123.123.123.123", alloc); + jsonAdapterInfo.AddMember("LeaseObtained", "2017-07-12 12:23:43", alloc); + jsonAdapterInfo.AddMember("LeaseExpires", "2017-07-12 12:23:43", alloc); + + jsonAdapterInfoList.PushBack(jsonAdapterInfo, alloc); + json.AddMember("AdapterInfo List", jsonAdapterInfoList, alloc); + + json.AddMember("AdapterCount", 2, alloc); + +/* StringBuffer buffer; + Writer writer(buffer); + json.Accept(writer); + + std::cout << buffer.GetString() << std::endl;*/ +} void DataManager::Update() { StopWatch stopWatch; stopWatch.Start(); - + // ProcessList Update processListObj.Update(); @@ -104,6 +250,9 @@ void DataManager::Update() systemNetwork.getConnectionTable(systemInfo->networkConnection, systemInfo->networkConnectionCount); systemNetwork.getInterfaces(systemInfo->adapterInfo, systemInfo->adapterCount); + // Json Update + jsonUpdate(); + stopWatch.Stop(); stopWatch.secPrint(); } diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index 1eca18b..a6aed15 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -58,9 +58,9 @@ class DataManager SystemNetwork systemNetwork; SystemOS systemOS; - private: void Update(); + void jsonUpdate(); void Start(); void Stop(); void CallbackProc(); diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemCPU.hpp b/ServerMonitoringService/ServerMonitoringService/system/SystemCPU.hpp index 167d87f..22db0de 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemCPU.hpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemCPU.hpp @@ -12,7 +12,6 @@ class SystemCpu ULONGLONG SubtractTimes(FILETIME one, FILETIME two); public: int getUsage(double &val); - int getIdleUsage(double &val); TCHAR* getCpuModeInfo(); //int getSysUsage(double &val); }; From 04d1e76c55d5639e68e83c356162544e7c2a69db Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sun, 16 Jul 2017 20:55:55 +0900 Subject: [PATCH 60/84] :construction: Add a jsonWrite --- .../ServerMonitoringService/data/DataManager.cpp | 6 +++--- .../ServerMonitoringService/data/DataManager.hpp | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index a741aed..6bd365e 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -26,13 +26,13 @@ void DataManager::jsonUpdate() json.AddMember("CpuIdle", systemInfo->cpuIdleVal, alloc); string strCpuModel = systemInfo->cpuModel; Value vCpuModel(strCpuModel.c_str(), strCpuModel.size(), alloc); - json.AddMember("CpuModel", vCpuModel, alloc); + // json Memory - /*json.AddMember("MemoryLoadPercent", systemInfo->memoryLoadPercent, alloc); + json.AddMember("MemoryLoadPercent", systemInfo->memoryLoadPercent, alloc); json.AddMember("MemoryUsedByte", systemInfo->memoryUsedByte, alloc); json.AddMember("MemoryFreeByte", systemInfo->memoryFreeByte, alloc); - json.AddMember("MemoryTotalByte", systemInfo->memoryTotalByte, alloc);*/ + json.AddMember("MemoryTotalByte", systemInfo->memoryTotalByte, alloc); // json System Info /* string strUserName = systemInfo->userName; diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index a6aed15..f5e6379 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -84,7 +84,6 @@ class DataManager ~DataManager() { - cout << "~DataManager()" << endl; systemDiskIO.Stop(); this->Stop(); From 4e9e386802b7259063d0a592f48315bf434a82b8 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sun, 16 Jul 2017 21:06:33 +0900 Subject: [PATCH 61/84] :construction: Replace a type changed DWORD -> ULONG, DWORDLONG -> ULONGLONG, systemInfo->cpuIdleVal = (100.0 - systemInfo->cpuUsageVal); --- .../data/DataManager.cpp | 24 +++++++++++++------ .../data/DataManager.hpp | 8 +++---- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 6bd365e..2861e10 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -25,23 +25,33 @@ void DataManager::jsonUpdate() json.AddMember("CpuUsage", systemInfo->cpuUsageVal, alloc); json.AddMember("CpuIdle", systemInfo->cpuIdleVal, alloc); string strCpuModel = systemInfo->cpuModel; - Value vCpuModel(strCpuModel.c_str(), strCpuModel.size(), alloc); + Value vCpuModel(kStringType); + vCpuModel.SetString(strCpuModel.c_str(), strCpuModel.size(), alloc); json.AddMember("CpuModel", vCpuModel, alloc); // json Memory - json.AddMember("MemoryLoadPercent", systemInfo->memoryLoadPercent, alloc); + //json.AddMember("MemoryLoadPercent", systemInfo->memoryLoadPercent, alloc); json.AddMember("MemoryUsedByte", systemInfo->memoryUsedByte, alloc); json.AddMember("MemoryFreeByte", systemInfo->memoryFreeByte, alloc); json.AddMember("MemoryTotalByte", systemInfo->memoryTotalByte, alloc); // json System Info -/* string strUserName = systemInfo->userName; + Value vUserName(kStringType); + Value vComputerName(kStringType); + Value vOSVersionName(kStringType); + + string strUserName = systemInfo->userName; + vUserName.SetString(strUserName.c_str(), strUserName.size(), alloc); + string strComputerName = systemInfo->computerName; + vComputerName.SetString(strComputerName.c_str(), strComputerName.size(), alloc); + string strOSVerisonName = systemInfo->osVersion; + vOSVersionName.SetString(strOSVerisonName.c_str(), strOSVerisonName.size(), alloc); - json.AddMember("UserName", strUserName, alloc); - json.AddMember("ComputerName", strComputerName, alloc); - json.AddMember("OSVersionName", strOSVerisonName, alloc);*/ + json.AddMember("UserName", vUserName, alloc); + json.AddMember("ComputerName", vComputerName, alloc); + json.AddMember("OSVersionName", vOSVersionName, alloc); // json Disk list Value jsonDiskList(kArrayType); @@ -220,7 +230,7 @@ void DataManager::Update() // Cpu Usage Update systemCpu.getUsage(systemInfo->cpuUsageVal); - systemCpu.getIdleUsage(systemInfo->cpuIdleVal); + systemInfo->cpuIdleVal = (100.0 - systemInfo->cpuUsageVal); // Disk Usage Update systemInfo->disk = systemDiskIO.getDiskList(systemInfo->diskCount); diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index f5e6379..0230a52 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -25,10 +25,10 @@ typedef struct system_info double cpuIdleVal; TCHAR cpuModel[1024]; - DWORD memoryLoadPercent; - DWORDLONG memoryUsedByte; - DWORDLONG memoryFreeByte; - DWORDLONG memoryTotalByte; + ULONG memoryLoadPercent; + ULONGLONG memoryUsedByte; + ULONGLONG memoryFreeByte; + ULONGLONG memoryTotalByte; TCHAR userName[MAX_PATH]; TCHAR computerName[MAX_PATH]; From aab8748730b3ab21ee4a1a67ef89fd28f047fc2d Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sun, 16 Jul 2017 21:13:51 +0900 Subject: [PATCH 62/84] :alien: Replace a memoryLoadPercent function param variable type change --- .../ServerMonitoringService/system/SystemMemory.cpp | 2 +- .../ServerMonitoringService/system/SystemMemory.hpp | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.cpp b/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.cpp index 73588f0..45a2879 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.cpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.cpp @@ -10,7 +10,7 @@ int SystemMemory::memoryCall() return 1; } -int SystemMemory::getLoadPercent(DWORD &val) +int SystemMemory::getLoadPercent(int &val) { if (!memoryCall()) return 0; diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.hpp b/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.hpp index 474f78c..348ebad 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.hpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemMemory.hpp @@ -3,8 +3,6 @@ #include -typedef unsigned long DWORD; - class SystemMemory { private: @@ -12,7 +10,7 @@ class SystemMemory private: int memoryCall(); public: - int getLoadPercent(DWORD &val); + int getLoadPercent(int &val); int getUsedByte(DWORDLONG &val); int getTotalByte(DWORDLONG &val); int getFreeByte(DWORDLONG &val); From f51958cc4cd7e1b82a03d34c6b44698dfce4f9f9 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Sun, 16 Jul 2017 22:34:49 +0900 Subject: [PATCH 63/84] :lock: Replace a strcpy -> strcpy_s and remove a memcpy function --- .../process/Process.cpp | 13 +++++--- .../system/SystemOS.cpp | 31 +++++++++++++------ 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 0f79257..8a580ef 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -38,6 +38,8 @@ void Process::initFileNamePath() this->name = new TCHAR[MAX_PATH]; this->path = new TCHAR[MAX_PATH]; + memset(this->name, NULL, MAX_PATH); + memset(this->path, NULL, MAX_PATH); strcpy_s(this->name, MAX_PATH, szProcessName); strcpy_s(this->path, MAX_PATH, szProcessPath); } @@ -119,11 +121,14 @@ void Process::initOwner() if (!LookupAccountSidA(0, tokenUser->User.Sid, name, &nlen, dom, &dlen, (PSID_NAME_USE)&iUse)) nResult = -3; - this->owner = new TCHAR[MAX_PATH]; + int len = dlen + nlen + 2; // Last Null char + '/' + this->owner = new TCHAR[len]; + memset(this->owner, NULL, len); + // copy info to our static buffer - strcpy_s(this->owner, MAX_PATH, dom); - strcat_s(this->owner, MAX_PATH, "/"); - strcat_s(this->owner, MAX_PATH, name); + strcpy_s(this->owner, len, dom); + strcat_s(this->owner, len, "/"); + strcat_s(this->owner, len, name); if (tokenHandle) diff --git a/ServerMonitoringService/ServerMonitoringService/system/SystemOS.cpp b/ServerMonitoringService/ServerMonitoringService/system/SystemOS.cpp index 405cde7..ac60cb3 100644 --- a/ServerMonitoringService/ServerMonitoringService/system/SystemOS.cpp +++ b/ServerMonitoringService/ServerMonitoringService/system/SystemOS.cpp @@ -1,6 +1,8 @@ #include "SystemOS.hpp" -// When you are finished with the TCHAR, be sure to delete it. +/* + When you are finished with the TCHAR, be sure to delete it. +*/ int SystemOS::initUserName(TCHAR *&val) { TCHAR charBuf[BUFFER_SIZE]; @@ -9,13 +11,17 @@ int SystemOS::initUserName(TCHAR *&val) if (!GetUserName(charBuf, &bufCharSize)) // GetUserName Func Failed return value is ZERO return 0; - val = new TCHAR[bufCharSize]; - memcpy(val, charBuf, bufCharSize); + int len = bufCharSize + 1; // Last Null char + val = new TCHAR[len]; + memset(val, NULL, len); + strcpy_s(val, len, charBuf); return 1; } -// When you are finished with the TCHAR, be sure to delete it. +/* +When you are finished with the TCHAR, be sure to delete it. +*/ int SystemOS::initComputerName(TCHAR *&val) { TCHAR charBuf[BUFFER_SIZE]; @@ -24,16 +30,19 @@ int SystemOS::initComputerName(TCHAR *&val) if (!GetComputerName(charBuf, &bufCharSize)) // GetComputerName Func Failed return value is ZERO return 0; - val = new TCHAR[bufCharSize]; - memcpy(val, charBuf, bufCharSize); + int len = bufCharSize + 1; // Last Null char + val = new TCHAR[len]; + memset(val, NULL, len); + strcpy_s(val, len, charBuf); return 1; } -// When you are finished with the TCHAR, be sure to delete it. +/* +When you are finished with the TCHAR, be sure to delete it. +*/ int SystemOS::initOSVersionName(TCHAR *&val) { - //Software\\Microsoft\\Windows NT\\CurrentVersio HKEY key; TCHAR data[1024]; DWORD dwSize; @@ -47,8 +56,10 @@ int SystemOS::initOSVersionName(TCHAR *&val) RegCloseKey(key); - val = new TCHAR[1024]; - memcpy(val, data, sizeof(data) / sizeof(TCHAR)); + int len = dwSize + 1; // Last Null char + val = new TCHAR[len]; + memset(val, NULL, len); + strcpy_s(val, len, data); return 1; } From 8fd0562a459b9c0a96a8e0ee1846660c27ddc58c Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Mon, 17 Jul 2017 00:30:57 +0900 Subject: [PATCH 64/84] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 8f67ab9..4f9de9e 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,8 @@ | :---------------: | :-----------------: | :-------------------: | | RapidJson | | | +## Commit Message +https://gitmoji.carloscuesta.me/ ## Info [![npm](https://img.shields.io/badge/email-bg0820%40naver.com-red.svg)]() From c80614786481d8a7bfde21254dc739b11e67002f Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Mon, 17 Jul 2017 00:31:04 +0900 Subject: [PATCH 65/84] :hammer: Code refactoring, :ambulance: Memory Leak Solved --- .../process/Process.cpp | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 8a580ef..9475bd9 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -69,15 +69,18 @@ void Process::initCommandLine() if (!ReadProcessMemory(this->handle, commandLine.Buffer, commandLineContents, commandLine.Length, NULL)) nResult = -3; - int size = commandLine.Length / 2; - TCHAR *strCommandLine = new TCHAR[size + 1]; - memset(strCommandLine, NULL, size + 1); - - // char <-> w_char compatibility - for (int i = 0; i < commandLine.Length; i++) + if (nResult == 1) { - if (commandLineContents[i] != NULL) - strCommandLine[i / 2] = commandLineContents[i]; + int size = (commandLine.Length / 2) + 1; // Last Null Char + this->commandLine = new TCHAR[size]; + memset(this->commandLine, NULL, size); + + // char <-> w_char compatibility + for (int i = 0; i < commandLine.Length; i++) + { + if (commandLineContents[i] != NULL) + this->commandLine[i / 2] = commandLineContents[i]; + } } if (commandLineContents) @@ -85,12 +88,6 @@ void Process::initCommandLine() delete[] commandLineContents; commandLineContents = nullptr; } - - if (nResult != 1) - return; - // throw nResult; - - this->commandLine = strCommandLine; } void Process::initOwner() @@ -130,7 +127,6 @@ void Process::initOwner() strcat_s(this->owner, len, "/"); strcat_s(this->owner, len, name); - if (tokenHandle) CloseHandle(tokenHandle); } @@ -410,7 +406,7 @@ int Process::getCpuUsage(double &val) val = Usage; break; } - + Util::microDelay(30); // QueryPerformanceCounter Function Resolution is 1 microsecond count++; From e565426624492dc5a880ff169d98a21de4155045 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Mon, 17 Jul 2017 01:10:36 +0900 Subject: [PATCH 66/84] :art: Moved a getHwnd function in Process class as ProcessList class, :zap: now just one call function --- .../process/Process.cpp | 20 +---- .../process/Process.hpp | 3 +- .../process/ProcessList.cpp | 89 ++++++++++++++++--- .../process/ProcessList.hpp | 14 ++- 4 files changed, 89 insertions(+), 37 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 9475bd9..1ce6658 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -155,23 +155,6 @@ void Process::initCreateTime() this->createTime = tmTime; } -HWND Process::getHwndFromPid() -{ - HWND hWnd = FindWindow(NULL, NULL); - while (hWnd != NULL) - { - if (GetParent(hWnd) == NULL) { - DWORD dwProcId; - GetWindowThreadProcessId(hWnd, &dwProcId); - - if (this->pid == dwProcId) - return hWnd; - } - hWnd = GetWindow(hWnd, GW_HWNDNEXT); - } - return NULL; -} - // When you are finished with the handle, be sure to close it using the CloseHandle function. HANDLE Process::getHandleFromPid() { @@ -249,10 +232,9 @@ HICON Process::getIcon(BOOLEAN LargeIcon) return NULL; } -BOOLEAN Process::isRunning() +BOOLEAN Process::isRunning(const HWND hWnd) { DWORD_PTR dw = 0; - HWND hWnd = getHwndFromPid(); // TimeOut 2sec if (SendMessageTimeout(hWnd, NULL, NULL, NULL, SMTO_NORMAL, 2000, &dw)) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index 3322e23..c9a5727 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -43,7 +43,6 @@ class Process TCHAR *owner = NULL; tm createTime = { 0 }; private: - HWND getHwndFromPid(); HANDLE getHandleFromPid(); void initFileNamePath(); void initOwner(); @@ -97,7 +96,7 @@ class Process */ } - BOOLEAN isRunning(); + BOOLEAN isRunning(const HWND hWnd); DWORD getPid(); TCHAR* getName(); TCHAR* getPath(); diff --git a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp index 65cc780..2bca6bf 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp @@ -1,6 +1,27 @@ #include "ProcessList.hpp" +int main() +{ + + ProcessList processList; + + cout << processList.getProcessHwnd(3692) << endl; + system("pause"); +} + void ProcessList::Update() +{ + // Clear(); + hWndList.clear(); + threadCounting.clear(); + + // Update + getProcessList(); + getThreadCount(); + getHwndList(); +} + +void ProcessList::getProcessList() { while (true) { @@ -27,9 +48,12 @@ void ProcessList::Update() } } } +#include "../util/StopWatch.hpp" int ProcessList::getThreadCount() { + StopWatch sw; + sw.Start(); int nResult = 1; HANDLE hThreadSnap = INVALID_HANDLE_VALUE; THREADENTRY32 te32; @@ -37,7 +61,7 @@ int ProcessList::getThreadCount() hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); if (hThreadSnap == INVALID_HANDLE_VALUE) - nResult = 0; + nResult = -1; // Fill in the size of the structure before using it. te32.dwSize = sizeof(THREADENTRY32); @@ -48,7 +72,7 @@ int ProcessList::getThreadCount() { if (hThreadSnap != INVALID_HANDLE_VALUE) CloseHandle(hThreadSnap); // Must clean up the snapshot object! - nResult = 0; + nResult = -2; } // Now walk the thread list of the system, @@ -57,14 +81,10 @@ int ProcessList::getThreadCount() do // Thread32First { int pid = te32.th32OwnerProcessID; - if (isContainsKey(pid)) // pid exist, ϴ - { + if (isContainsKey(MAP_THREADCOUNT, pid)) // pid exist, ϴ threadCounting.find(pid)->second++; // +1 - } else // ʴ - { threadCounting.insert(unordered_map::value_type(pid, 1)); // first found = 1 - } //printf(TEXT("\n THREAD ID = 0x%08X"), te32.th32ThreadID); //printf(TEXT("\n base priority = %d"), te32.tpBasePri); @@ -75,32 +95,75 @@ int ProcessList::getThreadCount() if (hThreadSnap != INVALID_HANDLE_VALUE) CloseHandle(hThreadSnap); + sw.Stop(); + sw.milliPrint(); + return nResult; } -BOOLEAN ProcessList::isContainsKey(int paramPID) +void ProcessList::getHwndList() { - if (threadCounting.find(paramPID) == threadCounting.end()) - return FALSE; - else - return TRUE; + HWND hWnd = FindWindow(NULL, NULL); + while (hWnd != NULL) + { + if (GetParent(hWnd) == NULL) { + DWORD dwProcId; + GetWindowThreadProcessId(hWnd, &dwProcId); + + int pid = dwProcId; + hWndList.insert(unordered_map::value_type(pid, hWnd)); + } + hWnd = GetWindow(hWnd, GW_HWNDNEXT); + } } int ProcessList::getProcessThreadCount(const int paramPID) { int threadCount = 0; - if (isContainsKey(paramPID)) + if (isContainsKey(MAP_THREADCOUNT, paramPID)) threadCount = threadCounting.find(paramPID)->second; return threadCount; } +HWND ProcessList::getProcessHwnd(const int paramPID) +{ + HWND hWnd = NULL; + + if (isContainsKey(MAP_HWNDLIST, paramPID)) + hWnd = hWndList.find(paramPID)->second; + + return hWnd; +} + int ProcessList::getTotalThreadCount() { return this->threadCounting.size(); } +int ProcessList::getTotalHwndCount() +{ + return this->hWndList.size(); +} + +BOOLEAN ProcessList::isContainsKey(const int mapType, int paramPID) +{ + if (mapType == MAP_THREADCOUNT) + { + if (threadCounting.find(paramPID) == threadCounting.end()) + return FALSE; + else + return TRUE; + } + else if(mapType == MAP_HWNDLIST) + { + if (hWndList.find(paramPID) == hWndList.end()) + return FALSE; + else + return TRUE; + } +} int ProcessList::getCount() { if (processListSize != NULL) diff --git a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp index a33216d..89c0bc6 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.hpp @@ -11,7 +11,8 @@ using namespace std; -typedef unsigned long DWORD; +#define MAP_THREADCOUNT 1 +#define MAP_HWNDLIST 2 class ProcessList { @@ -19,15 +20,20 @@ class ProcessList int processListCount = 128; // += 128 DWORD *processList; DWORD processListSize = NULL; + unordered_map threadCounting; + unordered_map hWndList; private: + void getProcessList(); int getThreadCount(); - BOOLEAN isContainsKey(int paramPID); + void getHwndList(); + // template - Very Slow + BOOLEAN isContainsKey(const int mapType, int paramPID); public: ProcessList() { processList = new DWORD[processListCount]; - getThreadCount(); + Update(); } ~ProcessList() @@ -42,7 +48,9 @@ class ProcessList int getCount(); // update -> return value is processList count int getPID(const int i); // return value is num i to process PID value int getProcessThreadCount(const int paramPID); + HWND getProcessHwnd(const int paramPID); int getTotalThreadCount(); + int getTotalHwndCount(); }; #endif \ No newline at end of file From a705a57fc8c14f4921bc7a5584fe02d2cf3f802e Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Mon, 17 Jul 2017 01:23:27 +0900 Subject: [PATCH 67/84] :fire: Removed a main function is ProcessList class --- .../ServerMonitoringService/process/ProcessList.cpp | 9 --------- 1 file changed, 9 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp index 2bca6bf..a1aabf0 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp @@ -1,14 +1,5 @@ #include "ProcessList.hpp" -int main() -{ - - ProcessList processList; - - cout << processList.getProcessHwnd(3692) << endl; - system("pause"); -} - void ProcessList::Update() { // Clear(); From ee28f8eb6afe18cd09df202af36325b50b2bee2c Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Mon, 17 Jul 2017 01:24:47 +0900 Subject: [PATCH 68/84] :fire: Removed a Stopwatch --- .../ServerMonitoringService/process/ProcessList.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp index a1aabf0..dfa3254 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/ProcessList.cpp @@ -39,12 +39,9 @@ void ProcessList::getProcessList() } } } -#include "../util/StopWatch.hpp" int ProcessList::getThreadCount() { - StopWatch sw; - sw.Start(); int nResult = 1; HANDLE hThreadSnap = INVALID_HANDLE_VALUE; THREADENTRY32 te32; @@ -86,9 +83,6 @@ int ProcessList::getThreadCount() if (hThreadSnap != INVALID_HANDLE_VALUE) CloseHandle(hThreadSnap); - sw.Stop(); - sw.milliPrint(); - return nResult; } From d302487cf52915a267db93245ce3cf97ab934b40 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Mon, 17 Jul 2017 02:40:38 +0900 Subject: [PATCH 69/84] :sparkles: Add a getCreateTime function --- .../ServerMonitoringService/process/Process.cpp | 15 +++++++++++++++ .../ServerMonitoringService/process/Process.hpp | 1 + 2 files changed, 16 insertions(+) diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 1ce6658..068d3ba 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -133,6 +133,9 @@ void Process::initOwner() void Process::initCreateTime() { + if (this->handle == NULL) + return; + FILETIME createTime, exitTime, kernelTime, userTime; FILETIME localFileTime; SYSTEMTIME sysTime; @@ -202,6 +205,18 @@ TCHAR * Process::getOwner() return ""; } +string Process::getCreateTime() +{ + if (this->handle == NULL) + return ""; + + tm t = this->createTime; + string str = Util::format("%04d-%02d-%02d %02d:%02d:%02d", + t.tm_year + 1900, t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec); + + return str; +} + HICON Process::getIcon(BOOLEAN LargeIcon) { /* diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index c9a5727..3b7e1e6 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -102,6 +102,7 @@ class Process TCHAR* getPath(); TCHAR* getCommandLine(); TCHAR* getOwner(); + string getCreateTime(); HICON getIcon(BOOLEAN LargeIcon); int getHandleCount(DWORD &val); int getNetworkUsage(double &val); From 0ea65c406bb18ddf978417278778993a4f4bcb5d Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Mon, 17 Jul 2017 04:32:10 +0900 Subject: [PATCH 70/84] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4f9de9e..a817cc1 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ ##### 현재 이 프로젝트는 개발중 입니다. ##### this project is not a finished. ##### 크로스 플랫폼 지원 예정입니다. 현재는 윈도우만 지원중 -##### Cross-platform support be expected. Currently, only Windows is supported. +##### Cross-platform support is being planned. Currently, only Windows is supported. ## List Collected by Agent From f2dd79824cbca3b5b610957a56fbdc624ab5523c Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Mon, 17 Jul 2017 04:33:16 +0900 Subject: [PATCH 71/84] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a817cc1..117e360 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ >#### Web Server (Visualization) --- ##### 현재 이 프로젝트는 개발중 입니다. -##### this project is not a finished. +##### this project is work in progress. ##### 크로스 플랫폼 지원 예정입니다. 현재는 윈도우만 지원중 ##### Cross-platform support is being planned. Currently, only Windows is supported. From 6ccb1f82b1f8373dbd9ea1f3042120d844df8a79 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Mon, 17 Jul 2017 09:29:57 +0900 Subject: [PATCH 72/84] :sparkles: Add a Json Write --- .../data/DataManager.cpp | 183 +++++++++++------- .../data/DataManager.hpp | 5 +- 2 files changed, 117 insertions(+), 71 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 2861e10..f27d127 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -6,7 +6,7 @@ int main() #ifdef _DEBUG _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); // ޸ ã - // _CrtSetBreakAlloc(165); + // _CrtSetBreakAlloc(1243); #endif DataManager dataManager = DataManager(); @@ -14,6 +14,101 @@ int main() system("pause"); } +Value DataManager::getJsonDiskList(Document::AllocatorType &alloc) +{ + Value jsonDiskList(kArrayType); + for (int i = 0; i < systemInfo->diskCount; i++) + { + Disk disk = systemInfo->disk[i]; + + Value jsonDisk(kObjectType); + string strDiskPath = disk.path; + Value vDiskPath(strDiskPath.c_str(), strDiskPath.size(), alloc); + string strDiskName = disk.name; + Value vDiskName(strDiskPath.c_str(), strDiskPath.size(), alloc); + string strDiskFileFormat = disk.fileFormat; + Value vDiskFileFormat(strDiskPath.c_str(), strDiskPath.size(), alloc); + jsonDisk.AddMember("Path", vDiskPath, alloc); + jsonDisk.AddMember("Name", vDiskName, alloc); + jsonDisk.AddMember("FileFormat", vDiskFileFormat, alloc); + jsonDisk.AddMember("UsedBytes", disk.usedBytes, alloc); + jsonDisk.AddMember("TotalBytes", disk.totalBytes, alloc); + jsonDisk.AddMember("FreeBytes", disk.freeBytes, alloc); + jsonDisk.AddMember("Type", disk.type, alloc); + + DISK_PERFORMANCE diskPerformance = disk.curDiskPerformance; + Value jsonDiskPerformance(kObjectType); + jsonDiskPerformance.AddMember("BytesRead", diskPerformance.BytesRead.QuadPart, alloc); + jsonDiskPerformance.AddMember("BytesWritten", diskPerformance.BytesWritten.QuadPart, alloc); + jsonDiskPerformance.AddMember("ReadTime", diskPerformance.ReadTime.QuadPart, alloc); + jsonDiskPerformance.AddMember("WriteTime", diskPerformance.WriteTime.QuadPart, alloc); + jsonDiskPerformance.AddMember("IdleTime", diskPerformance.IdleTime.QuadPart, alloc); + // DWORD > UINT + jsonDiskPerformance.AddMember("ReadCount", (UINT)diskPerformance.ReadCount, alloc); + jsonDiskPerformance.AddMember("WriteCount", (UINT)diskPerformance.WriteCount, alloc); + jsonDiskPerformance.AddMember("QueueDepth", (UINT)diskPerformance.QueueDepth, alloc); + jsonDiskPerformance.AddMember("SplitCount", (UINT)diskPerformance.SplitCount, alloc); + jsonDiskPerformance.AddMember("QueryTime", diskPerformance.QueryTime.QuadPart, alloc); + jsonDiskPerformance.AddMember("StorageDeviceNumber", (UINT)diskPerformance.StorageDeviceNumber, alloc); + /* Remove + wstring ws(diskPerformance.StorageManagerName); + cout << ws.c_str() << endl; + Value vDiskPerformanceManagerName(wsConvert.c_str(), wsConvert.size(), alloc); + jsonDiskPerformance.AddMember("StorageManagerName", "D", alloc); + */ + + jsonDisk.AddMember("DiskPerformance", jsonDiskPerformance, alloc); + jsonDisk.AddMember("ReadSec", disk.readSec, alloc); + jsonDisk.AddMember("WriteSec", disk.writeSec, alloc); + jsonDiskList.PushBack(jsonDisk, alloc); + } + + return jsonDiskList; +} + +Value DataManager::getJsonProcessList(Document::AllocatorType &alloc) +{ + Value jsonProcessList(kArrayType); + + for (int i = 0; i < systemInfo->processCount; i++) + { + Process *process = systemInfo->process[i]; + Value jsonProcess(kObjectType); + jsonProcess.AddMember("PID", (UINT)process->getPid(), alloc); + + // string strCommmand = process->getCommandLine(); + //Value vCommand(strCommmand.c_str(), strCommmand.size(), alloc); + string strName = process->getName(); + Value vName(strName.c_str(), strName.size(), alloc); + // string strPath = process->getPath(); + //Value vPath(strPath.c_str(), strPath.size(), alloc); + string strOwner = process->getOwner(); + Value vOwner(strOwner.c_str(), strOwner.size(), alloc); + + //jsonProcess.AddMember("CommandLine", vCommand, alloc); + jsonProcess.AddMember("Name", vName, alloc); + //jsonProcess.AddMember("Path", vPath, alloc); + jsonProcess.AddMember("Owner", vOwner, alloc); + DWORD handleCount; + double cpuUsage; + process->getHandleCount(handleCount); + process->getCpuUsage(cpuUsage); + int threadCount = processListObj.getProcessThreadCount(process->getPid()); + HWND hWnd = processListObj.getProcessHwnd(process->getPid()); + string strCreateTime = process->getCreateTime(); + Value vCreateTime(strCreateTime.c_str(), strCreateTime.size(), alloc); + jsonProcess.AddMember("CreateTime", vCreateTime, alloc); + jsonProcess.AddMember("HandleCount", (UINT)handleCount, alloc); + jsonProcess.AddMember("ThreadCount", threadCount, alloc); + //jsonProcess.AddMember("MemoryUsage", 123, alloc); + jsonProcess.AddMember("CpuUsage", cpuUsage, alloc); + jsonProcess.AddMember("Running", process->isRunning(hWnd), alloc); + jsonProcessList.PushBack(jsonProcess, alloc); + } + + return jsonProcessList; +} + void DataManager::jsonUpdate() { // json object create @@ -25,82 +120,35 @@ void DataManager::jsonUpdate() json.AddMember("CpuUsage", systemInfo->cpuUsageVal, alloc); json.AddMember("CpuIdle", systemInfo->cpuIdleVal, alloc); string strCpuModel = systemInfo->cpuModel; - Value vCpuModel(kStringType); - vCpuModel.SetString(strCpuModel.c_str(), strCpuModel.size(), alloc); + Value vCpuModel(strCpuModel.c_str(), strCpuModel.size(), alloc); json.AddMember("CpuModel", vCpuModel, alloc); // json Memory - //json.AddMember("MemoryLoadPercent", systemInfo->memoryLoadPercent, alloc); + json.AddMember("MemoryLoadPercent", systemInfo->memoryLoadPercent, alloc); json.AddMember("MemoryUsedByte", systemInfo->memoryUsedByte, alloc); json.AddMember("MemoryFreeByte", systemInfo->memoryFreeByte, alloc); json.AddMember("MemoryTotalByte", systemInfo->memoryTotalByte, alloc); // json System Info - Value vUserName(kStringType); - Value vComputerName(kStringType); - Value vOSVersionName(kStringType); - string strUserName = systemInfo->userName; - vUserName.SetString(strUserName.c_str(), strUserName.size(), alloc); - string strComputerName = systemInfo->computerName; - vComputerName.SetString(strComputerName.c_str(), strComputerName.size(), alloc); - string strOSVerisonName = systemInfo->osVersion; - vOSVersionName.SetString(strOSVerisonName.c_str(), strOSVerisonName.size(), alloc); - + Value vUserName(strUserName.c_str(), strUserName.size(), alloc); + Value vComputerName(strComputerName.c_str(), strComputerName.size(), alloc); + Value vOSVersionName(strOSVerisonName.c_str(), strOSVerisonName.size(), alloc); json.AddMember("UserName", vUserName, alloc); json.AddMember("ComputerName", vComputerName, alloc); json.AddMember("OSVersionName", vOSVersionName, alloc); - // json Disk list - Value jsonDiskList(kArrayType); - Value jsonDisk(kObjectType); - jsonDisk.AddMember("Path", "C:\\", alloc); - jsonDisk.AddMember("Name", "C:\\", alloc); - jsonDisk.AddMember("FileFormat", "C:\\", alloc); - jsonDisk.AddMember("UsedBytes", "C:\\", alloc); - jsonDisk.AddMember("TotalBytes", "C:\\", alloc); - jsonDisk.AddMember("FreeBytes", "C:\\", alloc); - jsonDisk.AddMember("Type", "C:\\", alloc); - - Value jsonDiskPerformance(kObjectType); - jsonDiskPerformance.AddMember("BytesRead", 123, alloc); - jsonDiskPerformance.AddMember("BytesWritten", 31, alloc); - jsonDiskPerformance.AddMember("ReadTime", 123, alloc); - jsonDiskPerformance.AddMember("WriteTime", 123, alloc); - jsonDiskPerformance.AddMember("IdleTime", 1234, alloc); - jsonDiskPerformance.AddMember("ReadCount", 1234, alloc); - jsonDiskPerformance.AddMember("WriteCount", 1234, alloc); - jsonDiskPerformance.AddMember("QueueDepth", 1234, alloc); - jsonDiskPerformance.AddMember("SplitCount", 1234, alloc); - jsonDiskPerformance.AddMember("QueryTime", 1234, alloc); - jsonDiskPerformance.AddMember("StorageDeviceNumber", 2, alloc); - jsonDiskPerformance.AddMember("StorageManagerName", "Name", alloc); - jsonDisk.AddMember("DiskPerformance", jsonDiskPerformance, alloc); - - jsonDisk.AddMember("ReadSec", 123, alloc); - jsonDisk.AddMember("WriteSec", 1234, alloc); - jsonDisk.AddMember("DiskCount", 1234, alloc); - jsonDiskList.PushBack(jsonDisk, alloc); - json.AddMember("Disk List", jsonDiskList, alloc); + // json Disk List + json.AddMember("Disk List", getJsonDiskList(alloc), alloc); + json.AddMember("DiskCount", systemInfo->diskCount, alloc); - Value jsonProcessList(kArrayType); - Value jsonProcess(kObjectType); - jsonProcess.AddMember("PID", 123, alloc); - jsonProcess.AddMember("CommandLine", 123, alloc); - jsonProcess.AddMember("Name", 123, alloc); - jsonProcess.AddMember("Path", 123, alloc); - jsonProcess.AddMember("Owner", 123, alloc); - jsonProcess.AddMember("CreateTime", 123, alloc); - jsonProcess.AddMember("HandleCount", 123, alloc); - jsonProcess.AddMember("ThreadCount", 123, alloc); - jsonProcess.AddMember("MemoryUsage", 123, alloc); - jsonProcess.AddMember("CpuUsage", 123, alloc); - jsonProcessList.PushBack(jsonProcess, alloc); - json.AddMember("Process List", jsonProcessList, alloc); - json.AddMember("TotalThreadCount", 2145, alloc); + // json Process List + json.AddMember("Process List", getJsonProcessList(alloc), alloc); + json.AddMember("TotalThreadCount", processListObj.getTotalThreadCount(), alloc); + // json Network Connection List Value jsonNetworkConnectionList(kArrayType); Value jsonNetworkConnection(kObjectType); jsonNetworkConnection.AddMember("ProtocolType", 2, alloc); @@ -163,7 +211,8 @@ void DataManager::jsonUpdate() json.AddMember("AdapterCount", 2, alloc); -/* StringBuffer buffer; + /* + StringBuffer buffer; Writer writer(buffer); json.Accept(writer); @@ -183,7 +232,7 @@ void DataManager::Update() { for (int i = 0; i < systemInfo->processCount; i++) { - if (systemInfo->process[i]) + if (systemInfo->process[i] != NULL) { delete systemInfo->process[i]; systemInfo->process[i] = nullptr; @@ -202,19 +251,15 @@ void DataManager::Update() { int pid = processListObj.getPID(i); systemInfo->process[i] = new Process(pid); - systemInfo->process[i]->getOwner(); - systemInfo->process[i]->getName(); - systemInfo->process[i]->getPath(); - systemInfo->process[i]->getCommandLine(); - double cpuVal; + /*double cpuVal; DWORD memoryVal; DWORD handleCount; systemInfo->process[i]->getCpuUsage(cpuVal); // 1.7 Sec // systemInfo->process[i]->getMemoryUsage(memoryVal); // 0.6 Sec systemInfo->process[i]->getHandleCount(handleCount); processListObj.getProcessThreadCount(pid); - processListObj.getTotalThreadCount(); + processListObj.getTotalThreadCount();*/ /*cout << "Owner : " << systemInfo->process[i]->getOwner() << endl; cout << "Name : " << systemInfo->process[i]->getName() << endl; @@ -278,7 +323,7 @@ void DataManager::Start() if (this->tqTimer == NULL) { this->tqTimer = new TQTimer(std::bind(&DataManager::CallbackProc, this)); - this->tqTimer->setInterval(1500); // 5Sec + this->tqTimer->setInterval(1000); // 5Sec this->tqTimer->Start(); } } diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index 0230a52..752194a 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -25,7 +25,7 @@ typedef struct system_info double cpuIdleVal; TCHAR cpuModel[1024]; - ULONG memoryLoadPercent; + int memoryLoadPercent; ULONGLONG memoryUsedByte; ULONGLONG memoryFreeByte; ULONGLONG memoryTotalByte; @@ -57,9 +57,10 @@ class DataManager SystemMemory systemMemory; SystemNetwork systemNetwork; SystemOS systemOS; - private: void Update(); + Value getJsonDiskList(Document::AllocatorType &alloc); + Value getJsonProcessList(Document::AllocatorType &alloc); void jsonUpdate(); void Start(); void Stop(); From cda2b988b686924ffec8faa91a1c7da86b19fc34 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Mon, 17 Jul 2017 20:24:21 +0900 Subject: [PATCH 73/84] :hankey: Add a comment --- .../ServerMonitoringService/data/DataManager.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index f27d127..2b0f75b 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -19,6 +19,7 @@ Value DataManager::getJsonDiskList(Document::AllocatorType &alloc) Value jsonDiskList(kArrayType); for (int i = 0; i < systemInfo->diskCount; i++) { + // exception Disk disk = systemInfo->disk[i]; Value jsonDisk(kObjectType); From c7a3dc863e7d9f6910bcb52f00f2fd6f0d42fe6b Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Mon, 17 Jul 2017 21:20:43 +0900 Subject: [PATCH 74/84] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 117e360..2a6730f 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ ## Library | Library Name | Link | License | | :---------------: | :-----------------: | :-------------------: | -| RapidJson | | | +| RapidJson | | MIT | ## Commit Message https://gitmoji.carloscuesta.me/ From 850c3824f0f717cf56631e7b37b4b53a2f06642e Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Mon, 17 Jul 2017 22:34:23 +0900 Subject: [PATCH 75/84] :truck: Move a library file, :bento: Add a lz4 compression library --- .../ServerMonitoringService.vcxproj | 72 +- .../ServerMonitoringService.vcxproj.filters | 76 +- .../data/DataManager.cpp | 24 +- .../data/DataManager.hpp | 6 +- .../ServerMonitoringService/lib/lz4/lz4.c | 1474 +++++++++++++++++ .../ServerMonitoringService/lib/lz4/lz4.h | 463 ++++++ .../{ => lib}/rapidjson/allocators.h | 0 .../{ => lib}/rapidjson/document.h | 0 .../{ => lib}/rapidjson/encodedstream.h | 0 .../{ => lib}/rapidjson/encodings.h | 0 .../{ => lib}/rapidjson/error/en.h | 0 .../{ => lib}/rapidjson/error/error.h | 0 .../{ => lib}/rapidjson/filereadstream.h | 0 .../{ => lib}/rapidjson/filewritestream.h | 0 .../{ => lib}/rapidjson/fwd.h | 0 .../{ => lib}/rapidjson/internal/biginteger.h | 0 .../{ => lib}/rapidjson/internal/diyfp.h | 0 .../{ => lib}/rapidjson/internal/dtoa.h | 0 .../{ => lib}/rapidjson/internal/ieee754.h | 0 .../{ => lib}/rapidjson/internal/itoa.h | 0 .../{ => lib}/rapidjson/internal/meta.h | 0 .../{ => lib}/rapidjson/internal/pow10.h | 0 .../{ => lib}/rapidjson/internal/regex.h | 0 .../{ => lib}/rapidjson/internal/stack.h | 0 .../{ => lib}/rapidjson/internal/strfunc.h | 0 .../{ => lib}/rapidjson/internal/strtod.h | 0 .../{ => lib}/rapidjson/internal/swap.h | 0 .../{ => lib}/rapidjson/istreamwrapper.h | 0 .../{ => lib}/rapidjson/memorybuffer.h | 0 .../{ => lib}/rapidjson/memorystream.h | 0 .../{ => lib}/rapidjson/msinttypes/inttypes.h | 0 .../{ => lib}/rapidjson/msinttypes/stdint.h | 0 .../{ => lib}/rapidjson/ostreamwrapper.h | 0 .../{ => lib}/rapidjson/pointer.h | 0 .../{ => lib}/rapidjson/prettywriter.h | 0 .../{ => lib}/rapidjson/rapidjson.h | 0 .../{ => lib}/rapidjson/reader.h | 0 .../{ => lib}/rapidjson/schema.h | 0 .../{ => lib}/rapidjson/stream.h | 0 .../{ => lib}/rapidjson/stringbuffer.h | 0 .../{ => lib}/rapidjson/writer.h | 0 .../process/Process.hpp | 1 + 42 files changed, 2031 insertions(+), 85 deletions(-) create mode 100644 ServerMonitoringService/ServerMonitoringService/lib/lz4/lz4.c create mode 100644 ServerMonitoringService/ServerMonitoringService/lib/lz4/lz4.h rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/allocators.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/document.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/encodedstream.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/encodings.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/error/en.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/error/error.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/filereadstream.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/filewritestream.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/fwd.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/internal/biginteger.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/internal/diyfp.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/internal/dtoa.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/internal/ieee754.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/internal/itoa.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/internal/meta.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/internal/pow10.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/internal/regex.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/internal/stack.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/internal/strfunc.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/internal/strtod.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/internal/swap.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/istreamwrapper.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/memorybuffer.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/memorystream.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/msinttypes/inttypes.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/msinttypes/stdint.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/ostreamwrapper.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/pointer.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/prettywriter.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/rapidjson.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/reader.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/schema.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/stream.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/stringbuffer.h (100%) rename ServerMonitoringService/ServerMonitoringService/{ => lib}/rapidjson/writer.h (100%) diff --git a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj index 112485f..8c01e08 100644 --- a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj +++ b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj @@ -123,47 +123,48 @@ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -176,6 +177,7 @@ + diff --git a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters index 06c3727..97aede7 100644 --- a/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters +++ b/ServerMonitoringService/ServerMonitoringService/ServerMonitoringService.vcxproj.filters @@ -78,109 +78,112 @@ 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + 헤더 파일 - + + 헤더 파일 + + 헤더 파일 @@ -233,5 +236,8 @@ 소스 파일 + + 소스 파일 + \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 2b0f75b..a05b35a 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -6,7 +6,7 @@ int main() #ifdef _DEBUG _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); // ޸ ã - // _CrtSetBreakAlloc(1243); + // _CrtSetBreakAlloc(147); #endif DataManager dataManager = DataManager(); @@ -19,7 +19,7 @@ Value DataManager::getJsonDiskList(Document::AllocatorType &alloc) Value jsonDiskList(kArrayType); for (int i = 0; i < systemInfo->diskCount; i++) { - // exception + // ERROR : Disk disk = systemInfo->disk[i]; Value jsonDisk(kObjectType); @@ -77,12 +77,12 @@ Value DataManager::getJsonProcessList(Document::AllocatorType &alloc) Value jsonProcess(kObjectType); jsonProcess.AddMember("PID", (UINT)process->getPid(), alloc); - // string strCommmand = process->getCommandLine(); - //Value vCommand(strCommmand.c_str(), strCommmand.size(), alloc); + // string strCommmand = process->getCommandLine(); + //Value vCommand(strCommmand.c_str(), strCommmand.size(), alloc); string strName = process->getName(); Value vName(strName.c_str(), strName.size(), alloc); - // string strPath = process->getPath(); - //Value vPath(strPath.c_str(), strPath.size(), alloc); + // string strPath = process->getPath(); + //Value vPath(strPath.c_str(), strPath.size(), alloc); string strOwner = process->getOwner(); Value vOwner(strOwner.c_str(), strOwner.size(), alloc); @@ -211,20 +211,20 @@ void DataManager::jsonUpdate() json.AddMember("AdapterInfo List", jsonAdapterInfoList, alloc); json.AddMember("AdapterCount", 2, alloc); - - /* + + StringBuffer buffer; Writer writer(buffer); json.Accept(writer); - std::cout << buffer.GetString() << std::endl;*/ + std::cout << buffer.GetSize() << std::endl; } void DataManager::Update() { StopWatch stopWatch; stopWatch.Start(); - + // ProcessList Update processListObj.Update(); @@ -239,7 +239,7 @@ void DataManager::Update() systemInfo->process[i] = nullptr; } } - + delete[] systemInfo->process; systemInfo->process = nullptr; } @@ -257,7 +257,7 @@ void DataManager::Update() DWORD memoryVal; DWORD handleCount; systemInfo->process[i]->getCpuUsage(cpuVal); // 1.7 Sec - // systemInfo->process[i]->getMemoryUsage(memoryVal); // 0.6 Sec + // systemInfo->process[i]->getMemoryUsage(memoryVal); // 0.6 Sec systemInfo->process[i]->getHandleCount(handleCount); processListObj.getProcessThreadCount(pid); processListObj.getTotalThreadCount();*/ diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index 752194a..7f32542 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -12,9 +12,9 @@ #include "../system/SystemOS.hpp" #include "../util/TQTimer.hpp" #include "../util/StopWatch.hpp" -#include "../rapidjson/document.h" -#include "../rapidjson/stringbuffer.h" -#include "../rapidjson/writer.h" +#include "../lib/rapidjson/document.h" +#include "../lib/rapidjson/stringbuffer.h" +#include "../lib/rapidjson/writer.h" using namespace rapidjson; using namespace std; diff --git a/ServerMonitoringService/ServerMonitoringService/lib/lz4/lz4.c b/ServerMonitoringService/ServerMonitoringService/lib/lz4/lz4.c new file mode 100644 index 0000000..87ec6ab --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/lib/lz4/lz4.c @@ -0,0 +1,1474 @@ +/* + LZ4 - Fast LZ compression algorithm + Copyright (C) 2011-2017, Yann Collet. + + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - LZ4 homepage : http://www.lz4.org + - LZ4 source repository : https://github.com/lz4/lz4 +*/ + + +/*-************************************ +* Tuning parameters +**************************************/ +/* + * LZ4_HEAPMODE : + * Select how default compression functions will allocate memory for their hash table, + * in memory stack (0:default, fastest), or in memory heap (1:requires malloc()). + */ +#ifndef LZ4_HEAPMODE +# define LZ4_HEAPMODE 0 +#endif + +/* + * ACCELERATION_DEFAULT : + * Select "acceleration" for LZ4_compress_fast() when parameter value <= 0 + */ +#define ACCELERATION_DEFAULT 1 + + +/*-************************************ +* CPU Feature Detection +**************************************/ +/* LZ4_FORCE_MEMORY_ACCESS + * By default, access to unaligned memory is controlled by `memcpy()`, which is safe and portable. + * Unfortunately, on some target/compiler combinations, the generated assembly is sub-optimal. + * The below switch allow to select different access method for improved performance. + * Method 0 (default) : use `memcpy()`. Safe and portable. + * Method 1 : `__packed` statement. It depends on compiler extension (ie, not portable). + * This method is safe if your compiler supports it, and *generally* as fast or faster than `memcpy`. + * Method 2 : direct access. This method is portable but violate C standard. + * It can generate buggy code on targets which assembly generation depends on alignment. + * But in some circumstances, it's the only known way to get the most performance (ie GCC + ARMv6) + * See https://fastcompression.blogspot.fr/2015/08/accessing-unaligned-memory.html for details. + * Prefer these methods in priority order (0 > 1 > 2) + */ +#ifndef LZ4_FORCE_MEMORY_ACCESS /* can be defined externally */ +# if defined(__GNUC__) && ( defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) ) +# define LZ4_FORCE_MEMORY_ACCESS 2 +# elif defined(__INTEL_COMPILER) || defined(__GNUC__) +# define LZ4_FORCE_MEMORY_ACCESS 1 +# endif +#endif + +/* + * LZ4_FORCE_SW_BITCOUNT + * Define this parameter if your target system or compiler does not support hardware bit count + */ +#if defined(_MSC_VER) && defined(_WIN32_WCE) /* Visual Studio for Windows CE does not support Hardware bit count */ +# define LZ4_FORCE_SW_BITCOUNT +#endif + + +/*-************************************ +* Dependency +**************************************/ +#include "lz4.h" +/* see also "memory routines" below */ + + +/*-************************************ +* Compiler Options +**************************************/ +#ifdef _MSC_VER /* Visual Studio */ +# define FORCE_INLINE static __forceinline +# include +# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ +# pragma warning(disable : 4293) /* disable: C4293: too large shift (32-bits) */ +#else +# if defined(__GNUC__) || defined(__clang__) +# define FORCE_INLINE static inline __attribute__((always_inline)) +# elif defined(__cplusplus) || (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) +# define FORCE_INLINE static inline +# else +# define FORCE_INLINE static +# endif +#endif /* _MSC_VER */ + +#if (defined(__GNUC__) && (__GNUC__ >= 3)) || (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 800)) || defined(__clang__) +# define expect(expr,value) (__builtin_expect ((expr),(value)) ) +#else +# define expect(expr,value) (expr) +#endif + +#define likely(expr) expect((expr) != 0, 1) +#define unlikely(expr) expect((expr) != 0, 0) + + +/*-************************************ +* Memory routines +**************************************/ +#include /* malloc, calloc, free */ +#define ALLOCATOR(n,s) calloc(n,s) +#define FREEMEM free +#include /* memset, memcpy */ +#define MEM_INIT memset + + +/*-************************************ +* Basic Types +**************************************/ +#if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) +# include + typedef uint8_t BYTE; + typedef uint16_t U16; + typedef uint32_t U32; + typedef int32_t S32; + typedef uint64_t U64; + typedef uintptr_t uptrval; +#else + typedef unsigned char BYTE; + typedef unsigned short U16; + typedef unsigned int U32; + typedef signed int S32; + typedef unsigned long long U64; + typedef size_t uptrval; /* generally true, except OpenVMS-64 */ +#endif + +#if defined(__x86_64__) + typedef U64 reg_t; /* 64-bits in x32 mode */ +#else + typedef size_t reg_t; /* 32-bits in x32 mode */ +#endif + +/*-************************************ +* Reading and writing into memory +**************************************/ +static unsigned LZ4_isLittleEndian(void) +{ + const union { U32 u; BYTE c[4]; } one = { 1 }; /* don't use static : performance detrimental */ + return one.c[0]; +} + + +#if defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==2) +/* lie to the compiler about data alignment; use with caution */ + +static U16 LZ4_read16(const void* memPtr) { return *(const U16*) memPtr; } +static U32 LZ4_read32(const void* memPtr) { return *(const U32*) memPtr; } +static reg_t LZ4_read_ARCH(const void* memPtr) { return *(const reg_t*) memPtr; } + +static void LZ4_write16(void* memPtr, U16 value) { *(U16*)memPtr = value; } +static void LZ4_write32(void* memPtr, U32 value) { *(U32*)memPtr = value; } + +#elif defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==1) + +/* __pack instructions are safer, but compiler specific, hence potentially problematic for some compilers */ +/* currently only defined for gcc and icc */ +typedef union { U16 u16; U32 u32; reg_t uArch; } __attribute__((packed)) unalign; + +static U16 LZ4_read16(const void* ptr) { return ((const unalign*)ptr)->u16; } +static U32 LZ4_read32(const void* ptr) { return ((const unalign*)ptr)->u32; } +static reg_t LZ4_read_ARCH(const void* ptr) { return ((const unalign*)ptr)->uArch; } + +static void LZ4_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; } +static void LZ4_write32(void* memPtr, U32 value) { ((unalign*)memPtr)->u32 = value; } + +#else /* safe and portable access through memcpy() */ + +static U16 LZ4_read16(const void* memPtr) +{ + U16 val; memcpy(&val, memPtr, sizeof(val)); return val; +} + +static U32 LZ4_read32(const void* memPtr) +{ + U32 val; memcpy(&val, memPtr, sizeof(val)); return val; +} + +static reg_t LZ4_read_ARCH(const void* memPtr) +{ + reg_t val; memcpy(&val, memPtr, sizeof(val)); return val; +} + +static void LZ4_write16(void* memPtr, U16 value) +{ + memcpy(memPtr, &value, sizeof(value)); +} + +static void LZ4_write32(void* memPtr, U32 value) +{ + memcpy(memPtr, &value, sizeof(value)); +} + +#endif /* LZ4_FORCE_MEMORY_ACCESS */ + + +static U16 LZ4_readLE16(const void* memPtr) +{ + if (LZ4_isLittleEndian()) { + return LZ4_read16(memPtr); + } else { + const BYTE* p = (const BYTE*)memPtr; + return (U16)((U16)p[0] + (p[1]<<8)); + } +} + +static void LZ4_writeLE16(void* memPtr, U16 value) +{ + if (LZ4_isLittleEndian()) { + LZ4_write16(memPtr, value); + } else { + BYTE* p = (BYTE*)memPtr; + p[0] = (BYTE) value; + p[1] = (BYTE)(value>>8); + } +} + +static void LZ4_copy8(void* dst, const void* src) +{ + memcpy(dst,src,8); +} + +/* customized variant of memcpy, which can overwrite up to 8 bytes beyond dstEnd */ +static void LZ4_wildCopy(void* dstPtr, const void* srcPtr, void* dstEnd) +{ + BYTE* d = (BYTE*)dstPtr; + const BYTE* s = (const BYTE*)srcPtr; + BYTE* const e = (BYTE*)dstEnd; + + do { LZ4_copy8(d,s); d+=8; s+=8; } while (d=2) +# include +# define DEBUGLOG(l, ...) { \ + if (l<=LZ4_DEBUG) { \ + fprintf(stderr, __FILE__ ": "); \ + fprintf(stderr, __VA_ARGS__); \ + fprintf(stderr, " \n"); \ + } } +#else +# define DEBUGLOG(l, ...) {} /* disabled */ +#endif + + +/*-************************************ +* Common functions +**************************************/ +static unsigned LZ4_NbCommonBytes (register reg_t val) +{ + if (LZ4_isLittleEndian()) { + if (sizeof(val)==8) { +# if defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT) + unsigned long r = 0; + _BitScanForward64( &r, (U64)val ); + return (int)(r>>3); +# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) + return (__builtin_ctzll((U64)val) >> 3); +# else + static const int DeBruijnBytePos[64] = { 0, 0, 0, 0, 0, 1, 1, 2, 0, 3, 1, 3, 1, 4, 2, 7, 0, 2, 3, 6, 1, 5, 3, 5, 1, 3, 4, 4, 2, 5, 6, 7, 7, 0, 1, 2, 3, 3, 4, 6, 2, 6, 5, 5, 3, 4, 5, 6, 7, 1, 2, 4, 6, 4, 4, 5, 7, 2, 6, 5, 7, 6, 7, 7 }; + return DeBruijnBytePos[((U64)((val & -(long long)val) * 0x0218A392CDABBD3FULL)) >> 58]; +# endif + } else /* 32 bits */ { +# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT) + unsigned long r; + _BitScanForward( &r, (U32)val ); + return (int)(r>>3); +# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) + return (__builtin_ctz((U32)val) >> 3); +# else + static const int DeBruijnBytePos[32] = { 0, 0, 3, 0, 3, 1, 3, 0, 3, 2, 2, 1, 3, 2, 0, 1, 3, 3, 1, 2, 2, 2, 2, 0, 3, 1, 2, 0, 1, 0, 1, 1 }; + return DeBruijnBytePos[((U32)((val & -(S32)val) * 0x077CB531U)) >> 27]; +# endif + } + } else /* Big Endian CPU */ { + if (sizeof(val)==8) { +# if defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT) + unsigned long r = 0; + _BitScanReverse64( &r, val ); + return (unsigned)(r>>3); +# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) + return (__builtin_clzll((U64)val) >> 3); +# else + unsigned r; + if (!(val>>32)) { r=4; } else { r=0; val>>=32; } + if (!(val>>16)) { r+=2; val>>=8; } else { val>>=24; } + r += (!val); + return r; +# endif + } else /* 32 bits */ { +# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT) + unsigned long r = 0; + _BitScanReverse( &r, (unsigned long)val ); + return (unsigned)(r>>3); +# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) + return (__builtin_clz((U32)val) >> 3); +# else + unsigned r; + if (!(val>>16)) { r=2; val>>=8; } else { r=0; val>>=24; } + r += (!val); + return r; +# endif + } + } +} + +#define STEPSIZE sizeof(reg_t) +static unsigned LZ4_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* pInLimit) +{ + const BYTE* const pStart = pIn; + + while (likely(pIn compression run slower on incompressible data */ + + +/*-************************************ +* Local Structures and types +**************************************/ +typedef enum { notLimited = 0, limitedOutput = 1 } limitedOutput_directive; +typedef enum { byPtr, byU32, byU16 } tableType_t; + +typedef enum { noDict = 0, withPrefix64k, usingExtDict } dict_directive; +typedef enum { noDictIssue = 0, dictSmall } dictIssue_directive; + +typedef enum { endOnOutputSize = 0, endOnInputSize = 1 } endCondition_directive; +typedef enum { full = 0, partial = 1 } earlyEnd_directive; + + +/*-************************************ +* Local Utils +**************************************/ +int LZ4_versionNumber (void) { return LZ4_VERSION_NUMBER; } +const char* LZ4_versionString(void) { return LZ4_VERSION_STRING; } +int LZ4_compressBound(int isize) { return LZ4_COMPRESSBOUND(isize); } +int LZ4_sizeofState() { return LZ4_STREAMSIZE; } + + +/*-****************************** +* Compression functions +********************************/ +static U32 LZ4_hash4(U32 sequence, tableType_t const tableType) +{ + if (tableType == byU16) + return ((sequence * 2654435761U) >> ((MINMATCH*8)-(LZ4_HASHLOG+1))); + else + return ((sequence * 2654435761U) >> ((MINMATCH*8)-LZ4_HASHLOG)); +} + +static U32 LZ4_hash5(U64 sequence, tableType_t const tableType) +{ + static const U64 prime5bytes = 889523592379ULL; + static const U64 prime8bytes = 11400714785074694791ULL; + const U32 hashLog = (tableType == byU16) ? LZ4_HASHLOG+1 : LZ4_HASHLOG; + if (LZ4_isLittleEndian()) + return (U32)(((sequence << 24) * prime5bytes) >> (64 - hashLog)); + else + return (U32)(((sequence >> 24) * prime8bytes) >> (64 - hashLog)); +} + +FORCE_INLINE U32 LZ4_hashPosition(const void* const p, tableType_t const tableType) +{ + if ((sizeof(reg_t)==8) && (tableType != byU16)) return LZ4_hash5(LZ4_read_ARCH(p), tableType); + return LZ4_hash4(LZ4_read32(p), tableType); +} + +static void LZ4_putPositionOnHash(const BYTE* p, U32 h, void* tableBase, tableType_t const tableType, const BYTE* srcBase) +{ + switch (tableType) + { + case byPtr: { const BYTE** hashTable = (const BYTE**)tableBase; hashTable[h] = p; return; } + case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = (U32)(p-srcBase); return; } + case byU16: { U16* hashTable = (U16*) tableBase; hashTable[h] = (U16)(p-srcBase); return; } + } +} + +FORCE_INLINE void LZ4_putPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase) +{ + U32 const h = LZ4_hashPosition(p, tableType); + LZ4_putPositionOnHash(p, h, tableBase, tableType, srcBase); +} + +static const BYTE* LZ4_getPositionOnHash(U32 h, void* tableBase, tableType_t tableType, const BYTE* srcBase) +{ + if (tableType == byPtr) { const BYTE** hashTable = (const BYTE**) tableBase; return hashTable[h]; } + if (tableType == byU32) { const U32* const hashTable = (U32*) tableBase; return hashTable[h] + srcBase; } + { const U16* const hashTable = (U16*) tableBase; return hashTable[h] + srcBase; } /* default, to ensure a return */ +} + +FORCE_INLINE const BYTE* LZ4_getPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase) +{ + U32 const h = LZ4_hashPosition(p, tableType); + return LZ4_getPositionOnHash(h, tableBase, tableType, srcBase); +} + + +/** LZ4_compress_generic() : + inlined, to ensure branches are decided at compilation time */ +FORCE_INLINE int LZ4_compress_generic( + LZ4_stream_t_internal* const cctx, + const char* const source, + char* const dest, + const int inputSize, + const int maxOutputSize, + const limitedOutput_directive outputLimited, + const tableType_t tableType, + const dict_directive dict, + const dictIssue_directive dictIssue, + const U32 acceleration) +{ + const BYTE* ip = (const BYTE*) source; + const BYTE* base; + const BYTE* lowLimit; + const BYTE* const lowRefLimit = ip - cctx->dictSize; + const BYTE* const dictionary = cctx->dictionary; + const BYTE* const dictEnd = dictionary + cctx->dictSize; + const ptrdiff_t dictDelta = dictEnd - (const BYTE*)source; + const BYTE* anchor = (const BYTE*) source; + const BYTE* const iend = ip + inputSize; + const BYTE* const mflimit = iend - MFLIMIT; + const BYTE* const matchlimit = iend - LASTLITERALS; + + BYTE* op = (BYTE*) dest; + BYTE* const olimit = op + maxOutputSize; + + U32 forwardH; + + /* Init conditions */ + if ((U32)inputSize > (U32)LZ4_MAX_INPUT_SIZE) return 0; /* Unsupported inputSize, too large (or negative) */ + switch(dict) + { + case noDict: + default: + base = (const BYTE*)source; + lowLimit = (const BYTE*)source; + break; + case withPrefix64k: + base = (const BYTE*)source - cctx->currentOffset; + lowLimit = (const BYTE*)source - cctx->dictSize; + break; + case usingExtDict: + base = (const BYTE*)source - cctx->currentOffset; + lowLimit = (const BYTE*)source; + break; + } + if ((tableType == byU16) && (inputSize>=LZ4_64Klimit)) return 0; /* Size too large (not within 64K limit) */ + if (inputSizehashTable, tableType, base); + ip++; forwardH = LZ4_hashPosition(ip, tableType); + + /* Main Loop */ + for ( ; ; ) { + ptrdiff_t refDelta = 0; + const BYTE* match; + BYTE* token; + + /* Find a match */ + { const BYTE* forwardIp = ip; + unsigned step = 1; + unsigned searchMatchNb = acceleration << LZ4_skipTrigger; + do { + U32 const h = forwardH; + ip = forwardIp; + forwardIp += step; + step = (searchMatchNb++ >> LZ4_skipTrigger); + + if (unlikely(forwardIp > mflimit)) goto _last_literals; + + match = LZ4_getPositionOnHash(h, cctx->hashTable, tableType, base); + if (dict==usingExtDict) { + if (match < (const BYTE*)source) { + refDelta = dictDelta; + lowLimit = dictionary; + } else { + refDelta = 0; + lowLimit = (const BYTE*)source; + } } + forwardH = LZ4_hashPosition(forwardIp, tableType); + LZ4_putPositionOnHash(ip, h, cctx->hashTable, tableType, base); + + } while ( ((dictIssue==dictSmall) ? (match < lowRefLimit) : 0) + || ((tableType==byU16) ? 0 : (match + MAX_DISTANCE < ip)) + || (LZ4_read32(match+refDelta) != LZ4_read32(ip)) ); + } + + /* Catch up */ + while (((ip>anchor) & (match+refDelta > lowLimit)) && (unlikely(ip[-1]==match[refDelta-1]))) { ip--; match--; } + + /* Encode Literals */ + { unsigned const litLength = (unsigned)(ip - anchor); + token = op++; + if ((outputLimited) && /* Check output buffer overflow */ + (unlikely(op + litLength + (2 + 1 + LASTLITERALS) + (litLength/255) > olimit))) + return 0; + if (litLength >= RUN_MASK) { + int len = (int)litLength-RUN_MASK; + *token = (RUN_MASK<= 255 ; len-=255) *op++ = 255; + *op++ = (BYTE)len; + } + else *token = (BYTE)(litLength< matchlimit) limit = matchlimit; + matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, limit); + ip += MINMATCH + matchCode; + if (ip==limit) { + unsigned const more = LZ4_count(ip, (const BYTE*)source, matchlimit); + matchCode += more; + ip += more; + } + } else { + matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, matchlimit); + ip += MINMATCH + matchCode; + } + + if ( outputLimited && /* Check output buffer overflow */ + (unlikely(op + (1 + LASTLITERALS) + (matchCode>>8) > olimit)) ) + return 0; + if (matchCode >= ML_MASK) { + *token += ML_MASK; + matchCode -= ML_MASK; + LZ4_write32(op, 0xFFFFFFFF); + while (matchCode >= 4*255) op+=4, LZ4_write32(op, 0xFFFFFFFF), matchCode -= 4*255; + op += matchCode / 255; + *op++ = (BYTE)(matchCode % 255); + } else + *token += (BYTE)(matchCode); + } + + anchor = ip; + + /* Test end of chunk */ + if (ip > mflimit) break; + + /* Fill table */ + LZ4_putPosition(ip-2, cctx->hashTable, tableType, base); + + /* Test next position */ + match = LZ4_getPosition(ip, cctx->hashTable, tableType, base); + if (dict==usingExtDict) { + if (match < (const BYTE*)source) { + refDelta = dictDelta; + lowLimit = dictionary; + } else { + refDelta = 0; + lowLimit = (const BYTE*)source; + } } + LZ4_putPosition(ip, cctx->hashTable, tableType, base); + if ( ((dictIssue==dictSmall) ? (match>=lowRefLimit) : 1) + && (match+MAX_DISTANCE>=ip) + && (LZ4_read32(match+refDelta)==LZ4_read32(ip)) ) + { token=op++; *token=0; goto _next_match; } + + /* Prepare next loop */ + forwardH = LZ4_hashPosition(++ip, tableType); + } + +_last_literals: + /* Encode Last Literals */ + { size_t const lastRun = (size_t)(iend - anchor); + if ( (outputLimited) && /* Check output buffer overflow */ + ((op - (BYTE*)dest) + lastRun + 1 + ((lastRun+255-RUN_MASK)/255) > (U32)maxOutputSize) ) + return 0; + if (lastRun >= RUN_MASK) { + size_t accumulator = lastRun - RUN_MASK; + *op++ = RUN_MASK << ML_BITS; + for(; accumulator >= 255 ; accumulator-=255) *op++ = 255; + *op++ = (BYTE) accumulator; + } else { + *op++ = (BYTE)(lastRun<internal_donotuse; + LZ4_resetStream((LZ4_stream_t*)state); + if (acceleration < 1) acceleration = ACCELERATION_DEFAULT; + + if (maxOutputSize >= LZ4_compressBound(inputSize)) { + if (inputSize < LZ4_64Klimit) + return LZ4_compress_generic(ctx, source, dest, inputSize, 0, notLimited, byU16, noDict, noDictIssue, acceleration); + else + return LZ4_compress_generic(ctx, source, dest, inputSize, 0, notLimited, (sizeof(void*)==8) ? byU32 : byPtr, noDict, noDictIssue, acceleration); + } else { + if (inputSize < LZ4_64Klimit) + return LZ4_compress_generic(ctx, source, dest, inputSize, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue, acceleration); + else + return LZ4_compress_generic(ctx, source, dest, inputSize, maxOutputSize, limitedOutput, (sizeof(void*)==8) ? byU32 : byPtr, noDict, noDictIssue, acceleration); + } +} + + +int LZ4_compress_fast(const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) +{ +#if (LZ4_HEAPMODE) + void* ctxPtr = ALLOCATOR(1, sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ +#else + LZ4_stream_t ctx; + void* const ctxPtr = &ctx; +#endif + + int const result = LZ4_compress_fast_extState(ctxPtr, source, dest, inputSize, maxOutputSize, acceleration); + +#if (LZ4_HEAPMODE) + FREEMEM(ctxPtr); +#endif + return result; +} + + +int LZ4_compress_default(const char* source, char* dest, int inputSize, int maxOutputSize) +{ + return LZ4_compress_fast(source, dest, inputSize, maxOutputSize, 1); +} + + +/* hidden debug function */ +/* strangely enough, gcc generates faster code when this function is uncommented, even if unused */ +int LZ4_compress_fast_force(const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) +{ + LZ4_stream_t ctx; + LZ4_resetStream(&ctx); + + if (inputSize < LZ4_64Klimit) + return LZ4_compress_generic(&ctx.internal_donotuse, source, dest, inputSize, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue, acceleration); + else + return LZ4_compress_generic(&ctx.internal_donotuse, source, dest, inputSize, maxOutputSize, limitedOutput, sizeof(void*)==8 ? byU32 : byPtr, noDict, noDictIssue, acceleration); +} + + +/*-****************************** +* *_destSize() variant +********************************/ + +static int LZ4_compress_destSize_generic( + LZ4_stream_t_internal* const ctx, + const char* const src, + char* const dst, + int* const srcSizePtr, + const int targetDstSize, + const tableType_t tableType) +{ + const BYTE* ip = (const BYTE*) src; + const BYTE* base = (const BYTE*) src; + const BYTE* lowLimit = (const BYTE*) src; + const BYTE* anchor = ip; + const BYTE* const iend = ip + *srcSizePtr; + const BYTE* const mflimit = iend - MFLIMIT; + const BYTE* const matchlimit = iend - LASTLITERALS; + + BYTE* op = (BYTE*) dst; + BYTE* const oend = op + targetDstSize; + BYTE* const oMaxLit = op + targetDstSize - 2 /* offset */ - 8 /* because 8+MINMATCH==MFLIMIT */ - 1 /* token */; + BYTE* const oMaxMatch = op + targetDstSize - (LASTLITERALS + 1 /* token */); + BYTE* const oMaxSeq = oMaxLit - 1 /* token */; + + U32 forwardH; + + + /* Init conditions */ + if (targetDstSize < 1) return 0; /* Impossible to store anything */ + if ((U32)*srcSizePtr > (U32)LZ4_MAX_INPUT_SIZE) return 0; /* Unsupported input size, too large (or negative) */ + if ((tableType == byU16) && (*srcSizePtr>=LZ4_64Klimit)) return 0; /* Size too large (not within 64K limit) */ + if (*srcSizePtrhashTable, tableType, base); + ip++; forwardH = LZ4_hashPosition(ip, tableType); + + /* Main Loop */ + for ( ; ; ) { + const BYTE* match; + BYTE* token; + + /* Find a match */ + { const BYTE* forwardIp = ip; + unsigned step = 1; + unsigned searchMatchNb = 1 << LZ4_skipTrigger; + + do { + U32 h = forwardH; + ip = forwardIp; + forwardIp += step; + step = (searchMatchNb++ >> LZ4_skipTrigger); + + if (unlikely(forwardIp > mflimit)) goto _last_literals; + + match = LZ4_getPositionOnHash(h, ctx->hashTable, tableType, base); + forwardH = LZ4_hashPosition(forwardIp, tableType); + LZ4_putPositionOnHash(ip, h, ctx->hashTable, tableType, base); + + } while ( ((tableType==byU16) ? 0 : (match + MAX_DISTANCE < ip)) + || (LZ4_read32(match) != LZ4_read32(ip)) ); + } + + /* Catch up */ + while ((ip>anchor) && (match > lowLimit) && (unlikely(ip[-1]==match[-1]))) { ip--; match--; } + + /* Encode Literal length */ + { unsigned litLength = (unsigned)(ip - anchor); + token = op++; + if (op + ((litLength+240)/255) + litLength > oMaxLit) { + /* Not enough space for a last match */ + op--; + goto _last_literals; + } + if (litLength>=RUN_MASK) { + unsigned len = litLength - RUN_MASK; + *token=(RUN_MASK<= 255 ; len-=255) *op++ = 255; + *op++ = (BYTE)len; + } + else *token = (BYTE)(litLength< oMaxMatch) { + /* Match description too long : reduce it */ + matchLength = (15-1) + (oMaxMatch-op) * 255; + } + ip += MINMATCH + matchLength; + + if (matchLength>=ML_MASK) { + *token += ML_MASK; + matchLength -= ML_MASK; + while (matchLength >= 255) { matchLength-=255; *op++ = 255; } + *op++ = (BYTE)matchLength; + } + else *token += (BYTE)(matchLength); + } + + anchor = ip; + + /* Test end of block */ + if (ip > mflimit) break; + if (op > oMaxSeq) break; + + /* Fill table */ + LZ4_putPosition(ip-2, ctx->hashTable, tableType, base); + + /* Test next position */ + match = LZ4_getPosition(ip, ctx->hashTable, tableType, base); + LZ4_putPosition(ip, ctx->hashTable, tableType, base); + if ( (match+MAX_DISTANCE>=ip) + && (LZ4_read32(match)==LZ4_read32(ip)) ) + { token=op++; *token=0; goto _next_match; } + + /* Prepare next loop */ + forwardH = LZ4_hashPosition(++ip, tableType); + } + +_last_literals: + /* Encode Last Literals */ + { size_t lastRunSize = (size_t)(iend - anchor); + if (op + 1 /* token */ + ((lastRunSize+240)/255) /* litLength */ + lastRunSize /* literals */ > oend) { + /* adapt lastRunSize to fill 'dst' */ + lastRunSize = (oend-op) - 1; + lastRunSize -= (lastRunSize+240)/255; + } + ip = anchor + lastRunSize; + + if (lastRunSize >= RUN_MASK) { + size_t accumulator = lastRunSize - RUN_MASK; + *op++ = RUN_MASK << ML_BITS; + for(; accumulator >= 255 ; accumulator-=255) *op++ = 255; + *op++ = (BYTE) accumulator; + } else { + *op++ = (BYTE)(lastRunSize<= LZ4_compressBound(*srcSizePtr)) { /* compression success is guaranteed */ + return LZ4_compress_fast_extState(state, src, dst, *srcSizePtr, targetDstSize, 1); + } else { + if (*srcSizePtr < LZ4_64Klimit) + return LZ4_compress_destSize_generic(&state->internal_donotuse, src, dst, srcSizePtr, targetDstSize, byU16); + else + return LZ4_compress_destSize_generic(&state->internal_donotuse, src, dst, srcSizePtr, targetDstSize, sizeof(void*)==8 ? byU32 : byPtr); + } +} + + +int LZ4_compress_destSize(const char* src, char* dst, int* srcSizePtr, int targetDstSize) +{ +#if (LZ4_HEAPMODE) + LZ4_stream_t* ctx = (LZ4_stream_t*)ALLOCATOR(1, sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ +#else + LZ4_stream_t ctxBody; + LZ4_stream_t* ctx = &ctxBody; +#endif + + int result = LZ4_compress_destSize_extState(ctx, src, dst, srcSizePtr, targetDstSize); + +#if (LZ4_HEAPMODE) + FREEMEM(ctx); +#endif + return result; +} + + + +/*-****************************** +* Streaming functions +********************************/ + +LZ4_stream_t* LZ4_createStream(void) +{ + LZ4_stream_t* lz4s = (LZ4_stream_t*)ALLOCATOR(8, LZ4_STREAMSIZE_U64); + LZ4_STATIC_ASSERT(LZ4_STREAMSIZE >= sizeof(LZ4_stream_t_internal)); /* A compilation error here means LZ4_STREAMSIZE is not large enough */ + LZ4_resetStream(lz4s); + return lz4s; +} + +void LZ4_resetStream (LZ4_stream_t* LZ4_stream) +{ + MEM_INIT(LZ4_stream, 0, sizeof(LZ4_stream_t)); +} + +int LZ4_freeStream (LZ4_stream_t* LZ4_stream) +{ + FREEMEM(LZ4_stream); + return (0); +} + + +#define HASH_UNIT sizeof(reg_t) +int LZ4_loadDict (LZ4_stream_t* LZ4_dict, const char* dictionary, int dictSize) +{ + LZ4_stream_t_internal* dict = &LZ4_dict->internal_donotuse; + const BYTE* p = (const BYTE*)dictionary; + const BYTE* const dictEnd = p + dictSize; + const BYTE* base; + + if ((dict->initCheck) || (dict->currentOffset > 1 GB)) /* Uninitialized structure, or reuse overflow */ + LZ4_resetStream(LZ4_dict); + + if (dictSize < (int)HASH_UNIT) { + dict->dictionary = NULL; + dict->dictSize = 0; + return 0; + } + + if ((dictEnd - p) > 64 KB) p = dictEnd - 64 KB; + dict->currentOffset += 64 KB; + base = p - dict->currentOffset; + dict->dictionary = p; + dict->dictSize = (U32)(dictEnd - p); + dict->currentOffset += dict->dictSize; + + while (p <= dictEnd-HASH_UNIT) { + LZ4_putPosition(p, dict->hashTable, byU32, base); + p+=3; + } + + return dict->dictSize; +} + + +static void LZ4_renormDictT(LZ4_stream_t_internal* LZ4_dict, const BYTE* src) +{ + if ((LZ4_dict->currentOffset > 0x80000000) || + ((uptrval)LZ4_dict->currentOffset > (uptrval)src)) { /* address space overflow */ + /* rescale hash table */ + U32 const delta = LZ4_dict->currentOffset - 64 KB; + const BYTE* dictEnd = LZ4_dict->dictionary + LZ4_dict->dictSize; + int i; + for (i=0; ihashTable[i] < delta) LZ4_dict->hashTable[i]=0; + else LZ4_dict->hashTable[i] -= delta; + } + LZ4_dict->currentOffset = 64 KB; + if (LZ4_dict->dictSize > 64 KB) LZ4_dict->dictSize = 64 KB; + LZ4_dict->dictionary = dictEnd - LZ4_dict->dictSize; + } +} + + +int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream, const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) +{ + LZ4_stream_t_internal* streamPtr = &LZ4_stream->internal_donotuse; + const BYTE* const dictEnd = streamPtr->dictionary + streamPtr->dictSize; + + const BYTE* smallest = (const BYTE*) source; + if (streamPtr->initCheck) return 0; /* Uninitialized structure detected */ + if ((streamPtr->dictSize>0) && (smallest>dictEnd)) smallest = dictEnd; + LZ4_renormDictT(streamPtr, smallest); + if (acceleration < 1) acceleration = ACCELERATION_DEFAULT; + + /* Check overlapping input/dictionary space */ + { const BYTE* sourceEnd = (const BYTE*) source + inputSize; + if ((sourceEnd > streamPtr->dictionary) && (sourceEnd < dictEnd)) { + streamPtr->dictSize = (U32)(dictEnd - sourceEnd); + if (streamPtr->dictSize > 64 KB) streamPtr->dictSize = 64 KB; + if (streamPtr->dictSize < 4) streamPtr->dictSize = 0; + streamPtr->dictionary = dictEnd - streamPtr->dictSize; + } + } + + /* prefix mode : source data follows dictionary */ + if (dictEnd == (const BYTE*)source) { + int result; + if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, withPrefix64k, dictSmall, acceleration); + else + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, withPrefix64k, noDictIssue, acceleration); + streamPtr->dictSize += (U32)inputSize; + streamPtr->currentOffset += (U32)inputSize; + return result; + } + + /* external dictionary mode */ + { int result; + if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, usingExtDict, dictSmall, acceleration); + else + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, usingExtDict, noDictIssue, acceleration); + streamPtr->dictionary = (const BYTE*)source; + streamPtr->dictSize = (U32)inputSize; + streamPtr->currentOffset += (U32)inputSize; + return result; + } +} + + +/* Hidden debug function, to force external dictionary mode */ +int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* dest, int inputSize) +{ + LZ4_stream_t_internal* streamPtr = &LZ4_dict->internal_donotuse; + int result; + const BYTE* const dictEnd = streamPtr->dictionary + streamPtr->dictSize; + + const BYTE* smallest = dictEnd; + if (smallest > (const BYTE*) source) smallest = (const BYTE*) source; + LZ4_renormDictT(streamPtr, smallest); + + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, 0, notLimited, byU32, usingExtDict, noDictIssue, 1); + + streamPtr->dictionary = (const BYTE*)source; + streamPtr->dictSize = (U32)inputSize; + streamPtr->currentOffset += (U32)inputSize; + + return result; +} + + +/*! LZ4_saveDict() : + * If previously compressed data block is not guaranteed to remain available at its memory location, + * save it into a safer place (char* safeBuffer). + * Note : you don't need to call LZ4_loadDict() afterwards, + * dictionary is immediately usable, you can therefore call LZ4_compress_fast_continue(). + * Return : saved dictionary size in bytes (necessarily <= dictSize), or 0 if error. + */ +int LZ4_saveDict (LZ4_stream_t* LZ4_dict, char* safeBuffer, int dictSize) +{ + LZ4_stream_t_internal* const dict = &LZ4_dict->internal_donotuse; + const BYTE* const previousDictEnd = dict->dictionary + dict->dictSize; + + if ((U32)dictSize > 64 KB) dictSize = 64 KB; /* useless to define a dictionary > 64 KB */ + if ((U32)dictSize > dict->dictSize) dictSize = dict->dictSize; + + memmove(safeBuffer, previousDictEnd - dictSize, dictSize); + + dict->dictionary = (const BYTE*)safeBuffer; + dict->dictSize = (U32)dictSize; + + return dictSize; +} + + + +/*-***************************** +* Decompression functions +*******************************/ +/*! LZ4_decompress_generic() : + * This generic decompression function cover all use cases. + * It shall be instantiated several times, using different sets of directives + * Note that it is important this generic function is really inlined, + * in order to remove useless branches during compilation optimization. + */ +FORCE_INLINE int LZ4_decompress_generic( + const char* const source, + char* const dest, + int inputSize, + int outputSize, /* If endOnInput==endOnInputSize, this value is the max size of Output Buffer. */ + + int endOnInput, /* endOnOutputSize, endOnInputSize */ + int partialDecoding, /* full, partial */ + int targetOutputSize, /* only used if partialDecoding==partial */ + int dict, /* noDict, withPrefix64k, usingExtDict */ + const BYTE* const lowPrefix, /* == dest when no prefix */ + const BYTE* const dictStart, /* only if dict==usingExtDict */ + const size_t dictSize /* note : = 0 if noDict */ + ) +{ + /* Local Variables */ + const BYTE* ip = (const BYTE*) source; + const BYTE* const iend = ip + inputSize; + + BYTE* op = (BYTE*) dest; + BYTE* const oend = op + outputSize; + BYTE* cpy; + BYTE* oexit = op + targetOutputSize; + const BYTE* const lowLimit = lowPrefix - dictSize; + + const BYTE* const dictEnd = (const BYTE*)dictStart + dictSize; + const unsigned dec32table[] = {0, 1, 2, 1, 4, 4, 4, 4}; + const int dec64table[] = {0, 0, 0, -1, 0, 1, 2, 3}; + + const int safeDecode = (endOnInput==endOnInputSize); + const int checkOffset = ((safeDecode) && (dictSize < (int)(64 KB))); + + + /* Special cases */ + if ((partialDecoding) && (oexit > oend-MFLIMIT)) oexit = oend-MFLIMIT; /* targetOutputSize too high => decode everything */ + if ((endOnInput) && (unlikely(outputSize==0))) return ((inputSize==1) && (*ip==0)) ? 0 : -1; /* Empty output buffer */ + if ((!endOnInput) && (unlikely(outputSize==0))) return (*ip==0?1:-1); + + /* Main Loop : decode sequences */ + while (1) { + size_t length; + const BYTE* match; + size_t offset; + + /* get literal length */ + unsigned const token = *ip++; + if ((length=(token>>ML_BITS)) == RUN_MASK) { + unsigned s; + do { + s = *ip++; + length += s; + } while ( likely(endOnInput ? ip(partialDecoding?oexit:oend-MFLIMIT)) || (ip+length>iend-(2+1+LASTLITERALS))) ) + || ((!endOnInput) && (cpy>oend-WILDCOPYLENGTH)) ) + { + if (partialDecoding) { + if (cpy > oend) goto _output_error; /* Error : write attempt beyond end of output buffer */ + if ((endOnInput) && (ip+length > iend)) goto _output_error; /* Error : read attempt beyond end of input buffer */ + } else { + if ((!endOnInput) && (cpy != oend)) goto _output_error; /* Error : block decoding must stop exactly there */ + if ((endOnInput) && ((ip+length != iend) || (cpy > oend))) goto _output_error; /* Error : input must be consumed */ + } + memcpy(op, ip, length); + ip += length; + op += length; + break; /* Necessarily EOF, due to parsing restrictions */ + } + LZ4_wildCopy(op, ip, cpy); + ip += length; op = cpy; + + /* get offset */ + offset = LZ4_readLE16(ip); ip+=2; + match = op - offset; + if ((checkOffset) && (unlikely(match < lowLimit))) goto _output_error; /* Error : offset outside buffers */ + LZ4_write32(op, (U32)offset); /* costs ~1%; silence an msan warning when offset==0 */ + + /* get matchlength */ + length = token & ML_MASK; + if (length == ML_MASK) { + unsigned s; + do { + s = *ip++; + if ((endOnInput) && (ip > iend-LASTLITERALS)) goto _output_error; + length += s; + } while (s==255); + if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)op)) goto _output_error; /* overflow detection */ + } + length += MINMATCH; + + /* check external dictionary */ + if ((dict==usingExtDict) && (match < lowPrefix)) { + if (unlikely(op+length > oend-LASTLITERALS)) goto _output_error; /* doesn't respect parsing restriction */ + + if (length <= (size_t)(lowPrefix-match)) { + /* match can be copied as a single segment from external dictionary */ + memmove(op, dictEnd - (lowPrefix-match), length); + op += length; + } else { + /* match encompass external dictionary and current block */ + size_t const copySize = (size_t)(lowPrefix-match); + size_t const restSize = length - copySize; + memcpy(op, dictEnd - copySize, copySize); + op += copySize; + if (restSize > (size_t)(op-lowPrefix)) { /* overlap copy */ + BYTE* const endOfMatch = op + restSize; + const BYTE* copyFrom = lowPrefix; + while (op < endOfMatch) *op++ = *copyFrom++; + } else { + memcpy(op, lowPrefix, restSize); + op += restSize; + } } + continue; + } + + /* copy match within block */ + cpy = op + length; + if (unlikely(offset<8)) { + const int dec64 = dec64table[offset]; + op[0] = match[0]; + op[1] = match[1]; + op[2] = match[2]; + op[3] = match[3]; + match += dec32table[offset]; + memcpy(op+4, match, 4); + match -= dec64; + } else { LZ4_copy8(op, match); match+=8; } + op += 8; + + if (unlikely(cpy>oend-12)) { + BYTE* const oCopyLimit = oend-(WILDCOPYLENGTH-1); + if (cpy > oend-LASTLITERALS) goto _output_error; /* Error : last LASTLITERALS bytes must be literals (uncompressed) */ + if (op < oCopyLimit) { + LZ4_wildCopy(op, match, oCopyLimit); + match += oCopyLimit - op; + op = oCopyLimit; + } + while (op16) LZ4_wildCopy(op+8, match+8, cpy); + } + op=cpy; /* correction */ + } + + /* end of decoding */ + if (endOnInput) + return (int) (((char*)op)-dest); /* Nb of output bytes decoded */ + else + return (int) (((const char*)ip)-source); /* Nb of input bytes read */ + + /* Overflow error detected */ +_output_error: + return (int) (-(((const char*)ip)-source))-1; +} + + +int LZ4_decompress_safe(const char* source, char* dest, int compressedSize, int maxDecompressedSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxDecompressedSize, endOnInputSize, full, 0, noDict, (BYTE*)dest, NULL, 0); +} + +int LZ4_decompress_safe_partial(const char* source, char* dest, int compressedSize, int targetOutputSize, int maxDecompressedSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxDecompressedSize, endOnInputSize, partial, targetOutputSize, noDict, (BYTE*)dest, NULL, 0); +} + +int LZ4_decompress_fast(const char* source, char* dest, int originalSize) +{ + return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, full, 0, withPrefix64k, (BYTE*)(dest - 64 KB), NULL, 64 KB); +} + + +/*===== streaming decompression functions =====*/ + +/* + * If you prefer dynamic allocation methods, + * LZ4_createStreamDecode() + * provides a pointer (void*) towards an initialized LZ4_streamDecode_t structure. + */ +LZ4_streamDecode_t* LZ4_createStreamDecode(void) +{ + LZ4_streamDecode_t* lz4s = (LZ4_streamDecode_t*) ALLOCATOR(1, sizeof(LZ4_streamDecode_t)); + return lz4s; +} + +int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream) +{ + FREEMEM(LZ4_stream); + return 0; +} + +/*! + * LZ4_setStreamDecode() : + * Use this function to instruct where to find the dictionary. + * This function is not necessary if previous data is still available where it was decoded. + * Loading a size of 0 is allowed (same effect as no dictionary). + * Return : 1 if OK, 0 if error + */ +int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize) +{ + LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; + lz4sd->prefixSize = (size_t) dictSize; + lz4sd->prefixEnd = (const BYTE*) dictionary + dictSize; + lz4sd->externalDict = NULL; + lz4sd->extDictSize = 0; + return 1; +} + +/* +*_continue() : + These decoding functions allow decompression of multiple blocks in "streaming" mode. + Previously decoded blocks must still be available at the memory position where they were decoded. + If it's not possible, save the relevant part of decoded data into a safe buffer, + and indicate where it stands using LZ4_setStreamDecode() +*/ +int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxOutputSize) +{ + LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; + int result; + + if (lz4sd->prefixEnd == (BYTE*)dest) { + result = LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, + endOnInputSize, full, 0, + usingExtDict, lz4sd->prefixEnd - lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize += result; + lz4sd->prefixEnd += result; + } else { + lz4sd->extDictSize = lz4sd->prefixSize; + lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize; + result = LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, + endOnInputSize, full, 0, + usingExtDict, (BYTE*)dest, lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize = result; + lz4sd->prefixEnd = (BYTE*)dest + result; + } + + return result; +} + +int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int originalSize) +{ + LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; + int result; + + if (lz4sd->prefixEnd == (BYTE*)dest) { + result = LZ4_decompress_generic(source, dest, 0, originalSize, + endOnOutputSize, full, 0, + usingExtDict, lz4sd->prefixEnd - lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize += originalSize; + lz4sd->prefixEnd += originalSize; + } else { + lz4sd->extDictSize = lz4sd->prefixSize; + lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize; + result = LZ4_decompress_generic(source, dest, 0, originalSize, + endOnOutputSize, full, 0, + usingExtDict, (BYTE*)dest, lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize = originalSize; + lz4sd->prefixEnd = (BYTE*)dest + originalSize; + } + + return result; +} + + +/* +Advanced decoding functions : +*_usingDict() : + These decoding functions work the same as "_continue" ones, + the dictionary must be explicitly provided within parameters +*/ + +FORCE_INLINE int LZ4_decompress_usingDict_generic(const char* source, char* dest, int compressedSize, int maxOutputSize, int safe, const char* dictStart, int dictSize) +{ + if (dictSize==0) + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, noDict, (BYTE*)dest, NULL, 0); + if (dictStart+dictSize == dest) { + if (dictSize >= (int)(64 KB - 1)) + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, withPrefix64k, (BYTE*)dest-64 KB, NULL, 0); + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, noDict, (BYTE*)dest-dictSize, NULL, 0); + } + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, usingExtDict, (BYTE*)dest, (const BYTE*)dictStart, dictSize); +} + +int LZ4_decompress_safe_usingDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize) +{ + return LZ4_decompress_usingDict_generic(source, dest, compressedSize, maxOutputSize, 1, dictStart, dictSize); +} + +int LZ4_decompress_fast_usingDict(const char* source, char* dest, int originalSize, const char* dictStart, int dictSize) +{ + return LZ4_decompress_usingDict_generic(source, dest, 0, originalSize, 0, dictStart, dictSize); +} + +/* debug function */ +int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, full, 0, usingExtDict, (BYTE*)dest, (const BYTE*)dictStart, dictSize); +} + + +/*=************************************************* +* Obsolete Functions +***************************************************/ +/* obsolete compression functions */ +int LZ4_compress_limitedOutput(const char* source, char* dest, int inputSize, int maxOutputSize) { return LZ4_compress_default(source, dest, inputSize, maxOutputSize); } +int LZ4_compress(const char* source, char* dest, int inputSize) { return LZ4_compress_default(source, dest, inputSize, LZ4_compressBound(inputSize)); } +int LZ4_compress_limitedOutput_withState (void* state, const char* src, char* dst, int srcSize, int dstSize) { return LZ4_compress_fast_extState(state, src, dst, srcSize, dstSize, 1); } +int LZ4_compress_withState (void* state, const char* src, char* dst, int srcSize) { return LZ4_compress_fast_extState(state, src, dst, srcSize, LZ4_compressBound(srcSize), 1); } +int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_stream, const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_fast_continue(LZ4_stream, src, dst, srcSize, maxDstSize, 1); } +int LZ4_compress_continue (LZ4_stream_t* LZ4_stream, const char* source, char* dest, int inputSize) { return LZ4_compress_fast_continue(LZ4_stream, source, dest, inputSize, LZ4_compressBound(inputSize), 1); } + +/* +These function names are deprecated and should no longer be used. +They are only provided here for compatibility with older user programs. +- LZ4_uncompress is totally equivalent to LZ4_decompress_fast +- LZ4_uncompress_unknownOutputSize is totally equivalent to LZ4_decompress_safe +*/ +int LZ4_uncompress (const char* source, char* dest, int outputSize) { return LZ4_decompress_fast(source, dest, outputSize); } +int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize) { return LZ4_decompress_safe(source, dest, isize, maxOutputSize); } + + +/* Obsolete Streaming functions */ + +int LZ4_sizeofStreamState() { return LZ4_STREAMSIZE; } + +static void LZ4_init(LZ4_stream_t* lz4ds, BYTE* base) +{ + MEM_INIT(lz4ds, 0, sizeof(LZ4_stream_t)); + lz4ds->internal_donotuse.bufferStart = base; +} + +int LZ4_resetStreamState(void* state, char* inputBuffer) +{ + if ((((uptrval)state) & 3) != 0) return 1; /* Error : pointer is not aligned on 4-bytes boundary */ + LZ4_init((LZ4_stream_t*)state, (BYTE*)inputBuffer); + return 0; +} + +void* LZ4_create (char* inputBuffer) +{ + LZ4_stream_t* lz4ds = (LZ4_stream_t*)ALLOCATOR(8, sizeof(LZ4_stream_t)); + LZ4_init (lz4ds, (BYTE*)inputBuffer); + return lz4ds; +} + +char* LZ4_slideInputBuffer (void* LZ4_Data) +{ + LZ4_stream_t_internal* ctx = &((LZ4_stream_t*)LZ4_Data)->internal_donotuse; + int dictSize = LZ4_saveDict((LZ4_stream_t*)LZ4_Data, (char*)ctx->bufferStart, 64 KB); + return (char*)(ctx->bufferStart + dictSize); +} + +/* Obsolete streaming decompression functions */ + +int LZ4_decompress_safe_withPrefix64k(const char* source, char* dest, int compressedSize, int maxOutputSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, full, 0, withPrefix64k, (BYTE*)dest - 64 KB, NULL, 64 KB); +} + +int LZ4_decompress_fast_withPrefix64k(const char* source, char* dest, int originalSize) +{ + return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, full, 0, withPrefix64k, (BYTE*)dest - 64 KB, NULL, 64 KB); +} + +#endif /* LZ4_COMMONDEFS_ONLY */ diff --git a/ServerMonitoringService/ServerMonitoringService/lib/lz4/lz4.h b/ServerMonitoringService/ServerMonitoringService/lib/lz4/lz4.h new file mode 100644 index 0000000..5b6bc92 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/lib/lz4/lz4.h @@ -0,0 +1,463 @@ +/* + * LZ4 - Fast LZ compression algorithm + * Header File + * Copyright (C) 2011-2017, Yann Collet. + + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - LZ4 homepage : http://www.lz4.org + - LZ4 source repository : https://github.com/lz4/lz4 +*/ +#if defined (__cplusplus) +extern "C" { +#endif + +#ifndef LZ4_H_2983827168210 +#define LZ4_H_2983827168210 + +/* --- Dependency --- */ +#include /* size_t */ + + +/** + Introduction + + LZ4 is lossless compression algorithm, providing compression speed at 400 MB/s per core, + scalable with multi-cores CPU. It features an extremely fast decoder, with speed in + multiple GB/s per core, typically reaching RAM speed limits on multi-core systems. + + The LZ4 compression library provides in-memory compression and decompression functions. + Compression can be done in: + - a single step (described as Simple Functions) + - a single step, reusing a context (described in Advanced Functions) + - unbounded multiple steps (described as Streaming compression) + + lz4.h provides block compression functions. It gives full buffer control to user. + Decompressing an lz4-compressed block also requires metadata (such as compressed size). + Each application is free to encode such metadata in whichever way it wants. + + An additional format, called LZ4 frame specification (doc/lz4_Frame_format.md), + take care of encoding standard metadata alongside LZ4-compressed blocks. + If your application requires interoperability, it's recommended to use it. + A library is provided to take care of it, see lz4frame.h. +*/ + +/*^*************************************************************** +* Export parameters +*****************************************************************/ +/* +* LZ4_DLL_EXPORT : +* Enable exporting of functions when building a Windows DLL +* LZ4LIB_API : +* Control library symbols visibility. +*/ +#if defined(LZ4_DLL_EXPORT) && (LZ4_DLL_EXPORT==1) +# define LZ4LIB_API __declspec(dllexport) +#elif defined(LZ4_DLL_IMPORT) && (LZ4_DLL_IMPORT==1) +# define LZ4LIB_API __declspec(dllimport) /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/ +#elif defined(__GNUC__) && (__GNUC__ >= 4) +# define LZ4LIB_API __attribute__ ((__visibility__ ("default"))) +#else +# define LZ4LIB_API +#endif + + +/*------ Version ------*/ +#define LZ4_VERSION_MAJOR 1 /* for breaking interface changes */ +#define LZ4_VERSION_MINOR 8 /* for new (non-breaking) interface capabilities */ +#define LZ4_VERSION_RELEASE 0 /* for tweaks, bug-fixes, or development */ + +#define LZ4_VERSION_NUMBER (LZ4_VERSION_MAJOR *100*100 + LZ4_VERSION_MINOR *100 + LZ4_VERSION_RELEASE) + +#define LZ4_LIB_VERSION LZ4_VERSION_MAJOR.LZ4_VERSION_MINOR.LZ4_VERSION_RELEASE +#define LZ4_QUOTE(str) #str +#define LZ4_EXPAND_AND_QUOTE(str) LZ4_QUOTE(str) +#define LZ4_VERSION_STRING LZ4_EXPAND_AND_QUOTE(LZ4_LIB_VERSION) + +LZ4LIB_API int LZ4_versionNumber (void); /**< library version number; to be used when checking dll version */ +LZ4LIB_API const char* LZ4_versionString (void); /**< library version string; to be used when checking dll version */ + + +/*-************************************ +* Tuning parameter +**************************************/ +/*! + * LZ4_MEMORY_USAGE : + * Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.) + * Increasing memory usage improves compression ratio + * Reduced memory usage can improve speed, due to cache effect + * Default value is 14, for 16KB, which nicely fits into Intel x86 L1 cache + */ +#ifndef LZ4_MEMORY_USAGE +# define LZ4_MEMORY_USAGE 14 +#endif + +/*-************************************ +* Simple Functions +**************************************/ +/*! LZ4_compress_default() : + Compresses 'sourceSize' bytes from buffer 'source' + into already allocated 'dest' buffer of size 'maxDestSize'. + Compression is guaranteed to succeed if 'maxDestSize' >= LZ4_compressBound(sourceSize). + It also runs faster, so it's a recommended setting. + If the function cannot compress 'source' into a more limited 'dest' budget, + compression stops *immediately*, and the function result is zero. + As a consequence, 'dest' content is not valid. + This function never writes outside 'dest' buffer, nor read outside 'source' buffer. + sourceSize : Max supported value is LZ4_MAX_INPUT_VALUE + maxDestSize : full or partial size of buffer 'dest' (which must be already allocated) + return : the number of bytes written into buffer 'dest' (necessarily <= maxOutputSize) + or 0 if compression fails */ +LZ4LIB_API int LZ4_compress_default(const char* source, char* dest, int sourceSize, int maxDestSize); + +/*! LZ4_decompress_safe() : + compressedSize : is the precise full size of the compressed block. + maxDecompressedSize : is the size of destination buffer, which must be already allocated. + return : the number of bytes decompressed into destination buffer (necessarily <= maxDecompressedSize) + If destination buffer is not large enough, decoding will stop and output an error code (<0). + If the source stream is detected malformed, the function will stop decoding and return a negative result. + This function is protected against buffer overflow exploits, including malicious data packets. + It never writes outside output buffer, nor reads outside input buffer. +*/ +LZ4LIB_API int LZ4_decompress_safe (const char* source, char* dest, int compressedSize, int maxDecompressedSize); + + +/*-************************************ +* Advanced Functions +**************************************/ +#define LZ4_MAX_INPUT_SIZE 0x7E000000 /* 2 113 929 216 bytes */ +#define LZ4_COMPRESSBOUND(isize) ((unsigned)(isize) > (unsigned)LZ4_MAX_INPUT_SIZE ? 0 : (isize) + ((isize)/255) + 16) + +/*! +LZ4_compressBound() : + Provides the maximum size that LZ4 compression may output in a "worst case" scenario (input data not compressible) + This function is primarily useful for memory allocation purposes (destination buffer size). + Macro LZ4_COMPRESSBOUND() is also provided for compilation-time evaluation (stack memory allocation for example). + Note that LZ4_compress_default() compress faster when dest buffer size is >= LZ4_compressBound(srcSize) + inputSize : max supported value is LZ4_MAX_INPUT_SIZE + return : maximum output size in a "worst case" scenario + or 0, if input size is too large ( > LZ4_MAX_INPUT_SIZE) +*/ +LZ4LIB_API int LZ4_compressBound(int inputSize); + +/*! +LZ4_compress_fast() : + Same as LZ4_compress_default(), but allows to select an "acceleration" factor. + The larger the acceleration value, the faster the algorithm, but also the lesser the compression. + It's a trade-off. It can be fine tuned, with each successive value providing roughly +~3% to speed. + An acceleration value of "1" is the same as regular LZ4_compress_default() + Values <= 0 will be replaced by ACCELERATION_DEFAULT (see lz4.c), which is 1. +*/ +LZ4LIB_API int LZ4_compress_fast (const char* source, char* dest, int sourceSize, int maxDestSize, int acceleration); + + +/*! +LZ4_compress_fast_extState() : + Same compression function, just using an externally allocated memory space to store compression state. + Use LZ4_sizeofState() to know how much memory must be allocated, + and allocate it on 8-bytes boundaries (using malloc() typically). + Then, provide it as 'void* state' to compression function. +*/ +LZ4LIB_API int LZ4_sizeofState(void); +LZ4LIB_API int LZ4_compress_fast_extState (void* state, const char* source, char* dest, int inputSize, int maxDestSize, int acceleration); + + +/*! +LZ4_compress_destSize() : + Reverse the logic, by compressing as much data as possible from 'source' buffer + into already allocated buffer 'dest' of size 'targetDestSize'. + This function either compresses the entire 'source' content into 'dest' if it's large enough, + or fill 'dest' buffer completely with as much data as possible from 'source'. + *sourceSizePtr : will be modified to indicate how many bytes where read from 'source' to fill 'dest'. + New value is necessarily <= old value. + return : Nb bytes written into 'dest' (necessarily <= targetDestSize) + or 0 if compression fails +*/ +LZ4LIB_API int LZ4_compress_destSize (const char* source, char* dest, int* sourceSizePtr, int targetDestSize); + + +/*! +LZ4_decompress_fast() : + originalSize : is the original and therefore uncompressed size + return : the number of bytes read from the source buffer (in other words, the compressed size) + If the source stream is detected malformed, the function will stop decoding and return a negative result. + Destination buffer must be already allocated. Its size must be a minimum of 'originalSize' bytes. + note : This function fully respect memory boundaries for properly formed compressed data. + It is a bit faster than LZ4_decompress_safe(). + However, it does not provide any protection against intentionally modified data stream (malicious input). + Use this function in trusted environment only (data to decode comes from a trusted source). +*/ +LZ4LIB_API int LZ4_decompress_fast (const char* source, char* dest, int originalSize); + +/*! +LZ4_decompress_safe_partial() : + This function decompress a compressed block of size 'compressedSize' at position 'source' + into destination buffer 'dest' of size 'maxDecompressedSize'. + The function tries to stop decompressing operation as soon as 'targetOutputSize' has been reached, + reducing decompression time. + return : the number of bytes decoded in the destination buffer (necessarily <= maxDecompressedSize) + Note : this number can be < 'targetOutputSize' should the compressed block to decode be smaller. + Always control how many bytes were decoded. + If the source stream is detected malformed, the function will stop decoding and return a negative result. + This function never writes outside of output buffer, and never reads outside of input buffer. It is therefore protected against malicious data packets +*/ +LZ4LIB_API int LZ4_decompress_safe_partial (const char* source, char* dest, int compressedSize, int targetOutputSize, int maxDecompressedSize); + + +/*-********************************************* +* Streaming Compression Functions +***********************************************/ +typedef union LZ4_stream_u LZ4_stream_t; /* incomplete type (defined later) */ + +/*! LZ4_createStream() and LZ4_freeStream() : + * LZ4_createStream() will allocate and initialize an `LZ4_stream_t` structure. + * LZ4_freeStream() releases its memory. + */ +LZ4LIB_API LZ4_stream_t* LZ4_createStream(void); +LZ4LIB_API int LZ4_freeStream (LZ4_stream_t* streamPtr); + +/*! LZ4_resetStream() : + * An LZ4_stream_t structure can be allocated once and re-used multiple times. + * Use this function to init an allocated `LZ4_stream_t` structure and start a new compression. + */ +LZ4LIB_API void LZ4_resetStream (LZ4_stream_t* streamPtr); + +/*! LZ4_loadDict() : + * Use this function to load a static dictionary into LZ4_stream. + * Any previous data will be forgotten, only 'dictionary' will remain in memory. + * Loading a size of 0 is allowed. + * Return : dictionary size, in bytes (necessarily <= 64 KB) + */ +LZ4LIB_API int LZ4_loadDict (LZ4_stream_t* streamPtr, const char* dictionary, int dictSize); + +/*! LZ4_compress_fast_continue() : + * Compress buffer content 'src', using data from previously compressed blocks as dictionary to improve compression ratio. + * Important : Previous data blocks are assumed to remain present and unmodified ! + * 'dst' buffer must be already allocated. + * If dstCapacity >= LZ4_compressBound(srcSize), compression is guaranteed to succeed, and runs faster. + * If not, and if compressed data cannot fit into 'dst' buffer size, compression stops, and function returns a zero. + * After an error, the stream status is invalid, and it can only be reset or freed. + */ +LZ4LIB_API int LZ4_compress_fast_continue (LZ4_stream_t* streamPtr, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); + +/*! LZ4_saveDict() : + * If previously compressed data block is not guaranteed to remain available at its current memory location, + * save it into a safer place (char* safeBuffer). + * Note : it's not necessary to call LZ4_loadDict() after LZ4_saveDict(), dictionary is immediately usable. + * @return : saved dictionary size in bytes (necessarily <= dictSize), or 0 if error. + */ +LZ4LIB_API int LZ4_saveDict (LZ4_stream_t* streamPtr, char* safeBuffer, int dictSize); + + +/*-********************************************** +* Streaming Decompression Functions +* Bufferless synchronous API +************************************************/ +typedef union LZ4_streamDecode_u LZ4_streamDecode_t; /* incomplete type (defined later) */ + +/*! LZ4_createStreamDecode() and LZ4_freeStreamDecode() : + * creation / destruction of streaming decompression tracking structure */ +LZ4LIB_API LZ4_streamDecode_t* LZ4_createStreamDecode(void); +LZ4LIB_API int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream); + +/*! LZ4_setStreamDecode() : + * Use this function to instruct where to find the dictionary. + * Setting a size of 0 is allowed (same effect as reset). + * @return : 1 if OK, 0 if error + */ +LZ4LIB_API int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize); + +/*! +LZ4_decompress_*_continue() : + These decoding functions allow decompression of multiple blocks in "streaming" mode. + Previously decoded blocks *must* remain available at the memory position where they were decoded (up to 64 KB) + In the case of a ring buffers, decoding buffer must be either : + - Exactly same size as encoding buffer, with same update rule (block boundaries at same positions) + In which case, the decoding & encoding ring buffer can have any size, including very small ones ( < 64 KB). + - Larger than encoding buffer, by a minimum of maxBlockSize more bytes. + maxBlockSize is implementation dependent. It's the maximum size you intend to compress into a single block. + In which case, encoding and decoding buffers do not need to be synchronized, + and encoding ring buffer can have any size, including small ones ( < 64 KB). + - _At least_ 64 KB + 8 bytes + maxBlockSize. + In which case, encoding and decoding buffers do not need to be synchronized, + and encoding ring buffer can have any size, including larger than decoding buffer. + Whenever these conditions are not possible, save the last 64KB of decoded data into a safe buffer, + and indicate where it is saved using LZ4_setStreamDecode() +*/ +LZ4LIB_API int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxDecompressedSize); +LZ4LIB_API int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int originalSize); + + +/*! LZ4_decompress_*_usingDict() : + * These decoding functions work the same as + * a combination of LZ4_setStreamDecode() followed by LZ4_decompress_*_continue() + * They are stand-alone, and don't need an LZ4_streamDecode_t structure. + */ +LZ4LIB_API int LZ4_decompress_safe_usingDict (const char* source, char* dest, int compressedSize, int maxDecompressedSize, const char* dictStart, int dictSize); +LZ4LIB_API int LZ4_decompress_fast_usingDict (const char* source, char* dest, int originalSize, const char* dictStart, int dictSize); + + +/*^********************************************** + * !!!!!! STATIC LINKING ONLY !!!!!! + ***********************************************/ +/*-************************************ + * Private definitions + ************************************** + * Do not use these definitions. + * They are exposed to allow static allocation of `LZ4_stream_t` and `LZ4_streamDecode_t`. + * Using these definitions will expose code to API and/or ABI break in future versions of the library. + **************************************/ +#define LZ4_HASHLOG (LZ4_MEMORY_USAGE-2) +#define LZ4_HASHTABLESIZE (1 << LZ4_MEMORY_USAGE) +#define LZ4_HASH_SIZE_U32 (1 << LZ4_HASHLOG) /* required as macro for static allocation */ + +#if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) +#include + +typedef struct { + uint32_t hashTable[LZ4_HASH_SIZE_U32]; + uint32_t currentOffset; + uint32_t initCheck; + const uint8_t* dictionary; + uint8_t* bufferStart; /* obsolete, used for slideInputBuffer */ + uint32_t dictSize; +} LZ4_stream_t_internal; + +typedef struct { + const uint8_t* externalDict; + size_t extDictSize; + const uint8_t* prefixEnd; + size_t prefixSize; +} LZ4_streamDecode_t_internal; + +#else + +typedef struct { + unsigned int hashTable[LZ4_HASH_SIZE_U32]; + unsigned int currentOffset; + unsigned int initCheck; + const unsigned char* dictionary; + unsigned char* bufferStart; /* obsolete, used for slideInputBuffer */ + unsigned int dictSize; +} LZ4_stream_t_internal; + +typedef struct { + const unsigned char* externalDict; + size_t extDictSize; + const unsigned char* prefixEnd; + size_t prefixSize; +} LZ4_streamDecode_t_internal; + +#endif + +/*! + * LZ4_stream_t : + * information structure to track an LZ4 stream. + * init this structure before first use. + * note : only use in association with static linking ! + * this definition is not API/ABI safe, + * and may change in a future version ! + */ +#define LZ4_STREAMSIZE_U64 ((1 << (LZ4_MEMORY_USAGE-3)) + 4) +#define LZ4_STREAMSIZE (LZ4_STREAMSIZE_U64 * sizeof(unsigned long long)) +union LZ4_stream_u { + unsigned long long table[LZ4_STREAMSIZE_U64]; + LZ4_stream_t_internal internal_donotuse; +} ; /* previously typedef'd to LZ4_stream_t */ + + +/*! + * LZ4_streamDecode_t : + * information structure to track an LZ4 stream during decompression. + * init this structure using LZ4_setStreamDecode (or memset()) before first use + * note : only use in association with static linking ! + * this definition is not API/ABI safe, + * and may change in a future version ! + */ +#define LZ4_STREAMDECODESIZE_U64 4 +#define LZ4_STREAMDECODESIZE (LZ4_STREAMDECODESIZE_U64 * sizeof(unsigned long long)) +union LZ4_streamDecode_u { + unsigned long long table[LZ4_STREAMDECODESIZE_U64]; + LZ4_streamDecode_t_internal internal_donotuse; +} ; /* previously typedef'd to LZ4_streamDecode_t */ + + +/*-************************************ +* Obsolete Functions +**************************************/ + +/*! Deprecation warnings + Should deprecation warnings be a problem, + it is generally possible to disable them, + typically with -Wno-deprecated-declarations for gcc + or _CRT_SECURE_NO_WARNINGS in Visual. + Otherwise, it's also possible to define LZ4_DISABLE_DEPRECATE_WARNINGS */ +#ifdef LZ4_DISABLE_DEPRECATE_WARNINGS +# define LZ4_DEPRECATED(message) /* disable deprecation warnings */ +#else +# define LZ4_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) +# if defined (__cplusplus) && (__cplusplus >= 201402) /* C++14 or greater */ +# define LZ4_DEPRECATED(message) [[deprecated(message)]] +# elif (LZ4_GCC_VERSION >= 405) || defined(__clang__) +# define LZ4_DEPRECATED(message) __attribute__((deprecated(message))) +# elif (LZ4_GCC_VERSION >= 301) +# define LZ4_DEPRECATED(message) __attribute__((deprecated)) +# elif defined(_MSC_VER) +# define LZ4_DEPRECATED(message) __declspec(deprecated(message)) +# else +# pragma message("WARNING: You need to implement LZ4_DEPRECATED for this compiler") +# define LZ4_DEPRECATED(message) +# endif +#endif /* LZ4_DISABLE_DEPRECATE_WARNINGS */ + +/* Obsolete compression functions */ +LZ4LIB_API LZ4_DEPRECATED("use LZ4_compress_default() instead") int LZ4_compress (const char* source, char* dest, int sourceSize); +LZ4LIB_API LZ4_DEPRECATED("use LZ4_compress_default() instead") int LZ4_compress_limitedOutput (const char* source, char* dest, int sourceSize, int maxOutputSize); +LZ4LIB_API LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") int LZ4_compress_withState (void* state, const char* source, char* dest, int inputSize); +LZ4LIB_API LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") int LZ4_compress_limitedOutput_withState (void* state, const char* source, char* dest, int inputSize, int maxOutputSize); +LZ4LIB_API LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") int LZ4_compress_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize); +LZ4LIB_API LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize, int maxOutputSize); + +/* Obsolete decompression functions */ +LZ4LIB_API LZ4_DEPRECATED("use LZ4_decompress_fast() instead") int LZ4_uncompress (const char* source, char* dest, int outputSize); +LZ4LIB_API LZ4_DEPRECATED("use LZ4_decompress_safe() instead") int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize); + +/* Obsolete streaming functions; use new streaming interface whenever possible */ +LZ4LIB_API LZ4_DEPRECATED("use LZ4_createStream() instead") void* LZ4_create (char* inputBuffer); +LZ4LIB_API LZ4_DEPRECATED("use LZ4_createStream() instead") int LZ4_sizeofStreamState(void); +LZ4LIB_API LZ4_DEPRECATED("use LZ4_resetStream() instead") int LZ4_resetStreamState(void* state, char* inputBuffer); +LZ4LIB_API LZ4_DEPRECATED("use LZ4_saveDict() instead") char* LZ4_slideInputBuffer (void* state); + +/* Obsolete streaming decoding functions */ +LZ4LIB_API LZ4_DEPRECATED("use LZ4_decompress_safe_usingDict() instead") int LZ4_decompress_safe_withPrefix64k (const char* src, char* dst, int compressedSize, int maxDstSize); +LZ4LIB_API LZ4_DEPRECATED("use LZ4_decompress_fast_usingDict() instead") int LZ4_decompress_fast_withPrefix64k (const char* src, char* dst, int originalSize); + +#endif /* LZ4_H_2983827168210 */ + +#if defined (__cplusplus) +} +#endif diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/allocators.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/allocators.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/allocators.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/allocators.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/document.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/document.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/document.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/document.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/encodedstream.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/encodedstream.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/encodedstream.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/encodedstream.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/encodings.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/encodings.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/encodings.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/encodings.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/error/en.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/error/en.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/error/en.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/error/en.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/error/error.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/error/error.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/error/error.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/error/error.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/filereadstream.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/filereadstream.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/filereadstream.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/filereadstream.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/filewritestream.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/filewritestream.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/filewritestream.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/filewritestream.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/fwd.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/fwd.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/fwd.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/fwd.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/biginteger.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/biginteger.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/internal/biginteger.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/biginteger.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/diyfp.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/diyfp.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/internal/diyfp.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/diyfp.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/dtoa.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/dtoa.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/internal/dtoa.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/dtoa.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/ieee754.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/ieee754.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/internal/ieee754.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/ieee754.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/itoa.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/itoa.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/internal/itoa.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/itoa.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/meta.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/meta.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/internal/meta.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/meta.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/pow10.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/pow10.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/internal/pow10.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/pow10.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/regex.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/regex.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/internal/regex.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/regex.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/stack.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/stack.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/internal/stack.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/stack.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/strfunc.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/strfunc.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/internal/strfunc.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/strfunc.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/strtod.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/strtod.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/internal/strtod.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/strtod.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/internal/swap.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/swap.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/internal/swap.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/internal/swap.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/istreamwrapper.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/istreamwrapper.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/istreamwrapper.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/istreamwrapper.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/memorybuffer.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/memorybuffer.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/memorybuffer.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/memorybuffer.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/memorystream.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/memorystream.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/memorystream.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/memorystream.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/msinttypes/inttypes.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/msinttypes/inttypes.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/msinttypes/inttypes.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/msinttypes/inttypes.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/msinttypes/stdint.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/msinttypes/stdint.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/msinttypes/stdint.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/msinttypes/stdint.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/ostreamwrapper.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/ostreamwrapper.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/ostreamwrapper.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/ostreamwrapper.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/pointer.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/pointer.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/pointer.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/pointer.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/prettywriter.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/prettywriter.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/prettywriter.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/prettywriter.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/rapidjson.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/rapidjson.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/rapidjson.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/rapidjson.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/reader.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/reader.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/reader.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/reader.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/schema.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/schema.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/schema.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/schema.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/stream.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/stream.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/stream.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/stream.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/stringbuffer.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/stringbuffer.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/stringbuffer.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/stringbuffer.h diff --git a/ServerMonitoringService/ServerMonitoringService/rapidjson/writer.h b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/writer.h similarity index 100% rename from ServerMonitoringService/ServerMonitoringService/rapidjson/writer.h rename to ServerMonitoringService/ServerMonitoringService/lib/rapidjson/writer.h diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp index 3b7e1e6..98865bd 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.hpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.hpp @@ -63,6 +63,7 @@ class Process ~Process() { + // ERROR : if (this->handle != INVALID_HANDLE_VALUE) CloseHandle(this->handle); From 71a3f0537770f51965c0500052f739223f364811 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Mon, 17 Jul 2017 22:34:59 +0900 Subject: [PATCH 76/84] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2a6730f..c82ec35 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,7 @@ | Library Name | Link | License | | :---------------: | :-----------------: | :-------------------: | | RapidJson | | MIT | +| LZ4 | | BSD | ## Commit Message https://gitmoji.carloscuesta.me/ From c84e0061132a60ae2678823d599a65eca15fc5bb Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Mon, 17 Jul 2017 22:35:58 +0900 Subject: [PATCH 77/84] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c82ec35..6798811 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ #### (TCP) Data Server -> (WebSocket) #### (WebSocket) Web Server -## Library +## Used Library | Library Name | Link | License | | :---------------: | :-----------------: | :-------------------: | | RapidJson | | MIT | From 2a430768d7456bd58237de5c06b09d7b82067106 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Tue, 18 Jul 2017 00:27:23 +0900 Subject: [PATCH 78/84] :construction: Add a Compress, Compressibility 18%(The lower the threshold, the more then compress.) --- .../data/DataManager.cpp | 56 ++++++++++++++----- .../data/DataManager.hpp | 10 +++- 2 files changed, 52 insertions(+), 14 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index a05b35a..b15f127 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -14,6 +14,38 @@ int main() system("pause"); } +int DataManager::Compress(const TCHAR *src) +{ + StopWatch stopWatch; + stopWatch.Start(); + // NULL + // Last null char + const int src_size = (int)(strlen(src) + 1); + // ִ ũ⸦ ȯ + const int max_dst_size = LZ4_compressBound(src_size); + // We will use that size for our destination boundary when allocating space. + TCHAR* compressed_data = new TCHAR[max_dst_size]; + if (compressed_data == NULL) + return -1; // Failed to allocate memory for *compressed_data. + + const int compressed_data_size = LZ4_compress_default(src, compressed_data, src_size, max_dst_size); + + // Check return_value to determine what happened. + if (compressed_data_size < 0) + return -2; // A negative result from LZ4_compress_default indicates a failure trying to compress the data. See exit code (echo $?) for value returned. + else if (compressed_data_size == 0) + return -3; // A result of 0 means compression worked, but was stopped because the destination buffer couldn't hold all the information. + if (compressed_data_size > 0) + printf("We successfully compressed some data!\n"); + + cout << "COMPRESS DATA SIZE : " << compressed_data_size << endl; + + stopWatch.Stop(); + stopWatch.milliPrint(); + + return 1; +} + Value DataManager::getJsonDiskList(Document::AllocatorType &alloc) { Value jsonDiskList(kArrayType); @@ -77,18 +109,18 @@ Value DataManager::getJsonProcessList(Document::AllocatorType &alloc) Value jsonProcess(kObjectType); jsonProcess.AddMember("PID", (UINT)process->getPid(), alloc); - // string strCommmand = process->getCommandLine(); - //Value vCommand(strCommmand.c_str(), strCommmand.size(), alloc); + string strCommmand = process->getCommandLine(); string strName = process->getName(); - Value vName(strName.c_str(), strName.size(), alloc); - // string strPath = process->getPath(); - //Value vPath(strPath.c_str(), strPath.size(), alloc); + string strPath = process->getPath(); string strOwner = process->getOwner(); + Value vCommand(strCommmand.c_str(), strCommmand.size(), alloc); + Value vName(strName.c_str(), strName.size(), alloc); + Value vPath(strPath.c_str(), strPath.size(), alloc); Value vOwner(strOwner.c_str(), strOwner.size(), alloc); - //jsonProcess.AddMember("CommandLine", vCommand, alloc); + jsonProcess.AddMember("CommandLine", vCommand, alloc); jsonProcess.AddMember("Name", vName, alloc); - //jsonProcess.AddMember("Path", vPath, alloc); + jsonProcess.AddMember("Path", vPath, alloc); jsonProcess.AddMember("Owner", vOwner, alloc); DWORD handleCount; double cpuUsage; @@ -217,13 +249,13 @@ void DataManager::jsonUpdate() Writer writer(buffer); json.Accept(writer); - std::cout << buffer.GetSize() << std::endl; + cout << endl << "RAW DATA SIZE : " << buffer.GetSize() << endl; + cout << "RETURN VALUE : " <tqTimer == NULL) { this->tqTimer = new TQTimer(std::bind(&DataManager::CallbackProc, this)); - this->tqTimer->setInterval(1000); // 5Sec + this->tqTimer->setInterval(100000); // 100Sec this->tqTimer->Start(); } } diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index 7f32542..9d62dd8 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -12,9 +12,16 @@ #include "../system/SystemOS.hpp" #include "../util/TQTimer.hpp" #include "../util/StopWatch.hpp" +/* + Rapidjson json Library +*/ #include "../lib/rapidjson/document.h" #include "../lib/rapidjson/stringbuffer.h" #include "../lib/rapidjson/writer.h" +/* + LZ4 Compress Library +*/ +#include "../lib/lz4/lz4.h" using namespace rapidjson; using namespace std; @@ -65,6 +72,7 @@ class DataManager void Start(); void Stop(); void CallbackProc(); + int Compress(const char *src); public: DataManager() { @@ -76,7 +84,7 @@ class DataManager strcpy_s(systemInfo->osVersion, systemOS.getOSVersionName()); // first Call - this->Update(); + // this->Update(); // Start Function Call systemDiskIO.Start(); From 7c19edb0d456253988d8c048acc5317b6a2ce52c Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Tue, 18 Jul 2017 01:53:20 +0900 Subject: [PATCH 79/84] :construction: Add a DeCompress function --- .../data/DataManager.cpp | 73 +++++++++++++++---- .../data/DataManager.hpp | 3 +- 2 files changed, 61 insertions(+), 15 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index b15f127..ad5a275 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -14,31 +14,32 @@ int main() system("pause"); } -int DataManager::Compress(const TCHAR *src) +int DataManager::Compress(const TCHAR *paramRawData, int ¶mSrcSize, TCHAR *¶mCompressedData, int ¶mCompressSize) { StopWatch stopWatch; stopWatch.Start(); // NULL // Last null char - const int src_size = (int)(strlen(src) + 1); + const int srcSize = (int)(strlen(paramRawData) + 1); // ִ ũ⸦ ȯ - const int max_dst_size = LZ4_compressBound(src_size); + const int maxCompressSize = LZ4_compressBound(srcSize); // We will use that size for our destination boundary when allocating space. - TCHAR* compressed_data = new TCHAR[max_dst_size]; - if (compressed_data == NULL) + TCHAR *compressedData = new TCHAR[maxCompressSize]; + + if (compressedData == NULL) return -1; // Failed to allocate memory for *compressed_data. - const int compressed_data_size = LZ4_compress_default(src, compressed_data, src_size, max_dst_size); + const int compressedSize = LZ4_compress_default(paramRawData, compressedData, srcSize, maxCompressSize); // Check return_value to determine what happened. - if (compressed_data_size < 0) + if (compressedSize < 0) return -2; // A negative result from LZ4_compress_default indicates a failure trying to compress the data. See exit code (echo $?) for value returned. - else if (compressed_data_size == 0) + else if (compressedSize == 0) return -3; // A result of 0 means compression worked, but was stopped because the destination buffer couldn't hold all the information. - if (compressed_data_size > 0) - printf("We successfully compressed some data!\n"); - cout << "COMPRESS DATA SIZE : " << compressed_data_size << endl; + paramSrcSize = srcSize; + paramCompressedData = compressedData; + paramCompressSize = compressedSize; stopWatch.Stop(); stopWatch.milliPrint(); @@ -46,6 +47,42 @@ int DataManager::Compress(const TCHAR *src) return 1; } +int DataManager::DeCompress(const TCHAR *paramCompressedData, int paramCompressedDataSize, int paramRawSize, TCHAR *¶mRawData) +{ + StopWatch stopWatch; + stopWatch.Start(); + + + TCHAR *decompressData = new TCHAR[paramRawSize]; + + if (decompressData == NULL) + return -1; + + const int decompressedSize = LZ4_decompress_safe(paramCompressedData, decompressData, paramCompressedDataSize, paramRawSize); + + /* + no longer useful + ʿ + */ + if (paramCompressedData) + { + delete[] paramCompressedData; + paramCompressedData = nullptr; + } + + if (decompressedSize < 0) + return -2; // A negative result from LZ4_decompress_safe indicates a failure trying to decompress the data. See exit code (echo $?) for value returned. + else if (decompressedSize == 0) + return -3; // I'm not sure this function can ever return 0. Documentation in lz4.h doesn't indicate so. + + + paramRawData = decompressData; + stopWatch.Stop(); + stopWatch.milliPrint(); + + return 1; +} + Value DataManager::getJsonDiskList(Document::AllocatorType &alloc) { Value jsonDiskList(kArrayType); @@ -248,9 +285,17 @@ void DataManager::jsonUpdate() StringBuffer buffer; Writer writer(buffer); json.Accept(writer); - cout << endl << "RAW DATA SIZE : " << buffer.GetSize() << endl; - cout << "RETURN VALUE : " <tqTimer == NULL) { this->tqTimer = new TQTimer(std::bind(&DataManager::CallbackProc, this)); - this->tqTimer->setInterval(100000); // 100Sec + this->tqTimer->setInterval(1000); // 1Sec this->tqTimer->Start(); } } diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index 9d62dd8..63799f8 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -72,7 +72,8 @@ class DataManager void Start(); void Stop(); void CallbackProc(); - int Compress(const char *src); + int Compress(const TCHAR *paramRawData, int ¶mSrcSize, TCHAR *¶mCompressedData, int ¶mCompressSize); + int DeCompress(const TCHAR *paramCompressedData, int paramCompressedDataSize, int paramRawSize, TCHAR *¶mRawData); public: DataManager() { From 2105d555e9094c2548bc455c8c39dc06d63bf361 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Tue, 18 Jul 2017 03:55:02 +0900 Subject: [PATCH 80/84] :construction: Add a getTimeString function, getJsonNetworkConnectionList function, memory leak comment and Replaced a UINT as ULONGLONG --- .../data/DataManager.cpp | 180 +++++++++++------- .../data/DataManager.hpp | 5 + .../lib/rapidjson/msinttypes/LineCounter.ini | 4 + .../process/Process.cpp | 4 +- .../util/LineCounter.ini | 4 + .../ServerMonitoringService/util/Util.cpp | 8 + .../ServerMonitoringService/util/Util.hpp | 1 + 7 files changed, 135 insertions(+), 71 deletions(-) create mode 100644 ServerMonitoringService/ServerMonitoringService/lib/rapidjson/msinttypes/LineCounter.ini create mode 100644 ServerMonitoringService/ServerMonitoringService/util/LineCounter.ini diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index ad5a275..e6411f0 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -113,13 +113,13 @@ Value DataManager::getJsonDiskList(Document::AllocatorType &alloc) jsonDiskPerformance.AddMember("ReadTime", diskPerformance.ReadTime.QuadPart, alloc); jsonDiskPerformance.AddMember("WriteTime", diskPerformance.WriteTime.QuadPart, alloc); jsonDiskPerformance.AddMember("IdleTime", diskPerformance.IdleTime.QuadPart, alloc); - // DWORD > UINT - jsonDiskPerformance.AddMember("ReadCount", (UINT)diskPerformance.ReadCount, alloc); - jsonDiskPerformance.AddMember("WriteCount", (UINT)diskPerformance.WriteCount, alloc); - jsonDiskPerformance.AddMember("QueueDepth", (UINT)diskPerformance.QueueDepth, alloc); - jsonDiskPerformance.AddMember("SplitCount", (UINT)diskPerformance.SplitCount, alloc); + // DWORD > ULONGLONG + jsonDiskPerformance.AddMember("ReadCount", (ULONGLONG)diskPerformance.ReadCount, alloc); + jsonDiskPerformance.AddMember("WriteCount", (ULONGLONG)diskPerformance.WriteCount, alloc); + jsonDiskPerformance.AddMember("QueueDepth", (ULONGLONG)diskPerformance.QueueDepth, alloc); + jsonDiskPerformance.AddMember("SplitCount", (ULONGLONG)diskPerformance.SplitCount, alloc); jsonDiskPerformance.AddMember("QueryTime", diskPerformance.QueryTime.QuadPart, alloc); - jsonDiskPerformance.AddMember("StorageDeviceNumber", (UINT)diskPerformance.StorageDeviceNumber, alloc); + jsonDiskPerformance.AddMember("StorageDeviceNumber", (ULONGLONG)diskPerformance.StorageDeviceNumber, alloc); /* Remove wstring ws(diskPerformance.StorageManagerName); cout << ws.c_str() << endl; @@ -144,7 +144,7 @@ Value DataManager::getJsonProcessList(Document::AllocatorType &alloc) { Process *process = systemInfo->process[i]; Value jsonProcess(kObjectType); - jsonProcess.AddMember("PID", (UINT)process->getPid(), alloc); + jsonProcess.AddMember("PID", (ULONGLONG)process->getPid(), alloc); string strCommmand = process->getCommandLine(); string strName = process->getName(); @@ -168,7 +168,7 @@ Value DataManager::getJsonProcessList(Document::AllocatorType &alloc) string strCreateTime = process->getCreateTime(); Value vCreateTime(strCreateTime.c_str(), strCreateTime.size(), alloc); jsonProcess.AddMember("CreateTime", vCreateTime, alloc); - jsonProcess.AddMember("HandleCount", (UINT)handleCount, alloc); + jsonProcess.AddMember("HandleCount", (ULONGLONG)handleCount, alloc); jsonProcess.AddMember("ThreadCount", threadCount, alloc); //jsonProcess.AddMember("MemoryUsage", 123, alloc); jsonProcess.AddMember("CpuUsage", cpuUsage, alloc); @@ -179,6 +179,102 @@ Value DataManager::getJsonProcessList(Document::AllocatorType &alloc) return jsonProcessList; } +Value DataManager::getJsonNetworkConnectionList(Document::AllocatorType &alloc) +{ + Value jsonNetworkConnectionList(kArrayType); + + for (int i = 0; i < systemInfo->networkConnectionCount; i++) + { + NetworkConnection networkConnection = systemInfo->networkConnection[i]; + Value jsonNetworkConnection(kObjectType); + jsonNetworkConnection.AddMember("ProtocolType", (ULONGLONG)networkConnection.protocolType, alloc); + + Value jsonLocalEndpoint(kObjectType); + string strLocalIPv4 = inet_ntoa(networkConnection.localEndpoint.Address.InAddr); + char localBuf[40]; // temp buffer 39 + 1('\0') + inet_ntop(AF_INET6, &networkConnection.localEndpoint.Address.In6Addr, localBuf, sizeof(localBuf)); + string strLocalIPv6 = localBuf; + Value vLocalIPv4(strLocalIPv4.c_str(), strLocalIPv4.size(), alloc); + Value vLocalIPv6(strLocalIPv6.c_str(), strLocalIPv6.size(), alloc); + jsonLocalEndpoint.AddMember("IPV4", vLocalIPv4, alloc); + jsonLocalEndpoint.AddMember("IPV6", vLocalIPv6, alloc); + jsonLocalEndpoint.AddMember("Port", (ULONGLONG)networkConnection.localEndpoint.Port, alloc); + jsonNetworkConnection.AddMember("LocalEndpoint", jsonLocalEndpoint, alloc); + + Value jsonRemoteEndpoint(kObjectType); + string strRemoteIPv4 = inet_ntoa(networkConnection.localEndpoint.Address.InAddr); + char remoteBuf[40]; // temp buffer 39 + 1('\0') + inet_ntop(AF_INET6, &networkConnection.localEndpoint.Address.In6Addr, remoteBuf, sizeof(remoteBuf)); + string strRemoteIPv6 = remoteBuf; + Value vRemoteIPv4(strRemoteIPv4.c_str(), strRemoteIPv4.size(), alloc); + Value vRemoteIPv6(strRemoteIPv6.c_str(), strRemoteIPv6.size(), alloc); + jsonRemoteEndpoint.AddMember("IPV4", vRemoteIPv4, alloc); + jsonRemoteEndpoint.AddMember("IPV6", vRemoteIPv6, alloc); + jsonRemoteEndpoint.AddMember("Port", (ULONGLONG)networkConnection.remoteEndpoint.Port, alloc); + jsonNetworkConnection.AddMember("RemoteEndpoint", jsonRemoteEndpoint, alloc); + + + jsonNetworkConnection.AddMember("State", (ULONGLONG)networkConnection.state, alloc); + jsonNetworkConnection.AddMember("ProcessID", (ULONGLONG)networkConnection.processID, alloc); + //jsonNetworkConnection.AddMember("CreateTime", networkConnection.createTime.QuadPart, alloc); + //jsonNetworkConnection.AddMember("OwnerInfo", networkConnection.ownerInfo, alloc); // TODO : getProcessOwner(networkConnection.processID); + jsonNetworkConnectionList.PushBack(jsonNetworkConnection, alloc); + } + + return jsonNetworkConnectionList; +} + +Value DataManager::getJsonAdapterInfoList(Document::AllocatorType &alloc) +{ + Value jsonAdapterInfoList(kArrayType); + + for (int i = 0; i < systemInfo->adapterCount; i++) + { + IP_ADAPTER_INFO adapterInfo = systemInfo->adapterInfo[i]; + Value jsonAdapterInfo(kObjectType); + jsonAdapterInfo.AddMember("ComboIndex", (ULONGLONG)adapterInfo.ComboIndex, alloc); + + + string strAdapaterName = adapterInfo.AdapterName; + string strDescription = adapterInfo.Description; + Value vAdapterName(strAdapaterName.c_str(), strAdapaterName.size(), alloc); + Value vDescription(strDescription.c_str(), strDescription.size(), alloc); + + jsonAdapterInfo.AddMember("AdapterName", vAdapterName, alloc); + jsonAdapterInfo.AddMember("Description", vDescription, alloc); + jsonAdapterInfo.AddMember("AddressLength", adapterInfo.AddressLength, alloc); + jsonAdapterInfo.AddMember("Address", 2, alloc); + jsonAdapterInfo.AddMember("Index", (ULONGLONG)adapterInfo.Index, alloc); + jsonAdapterInfo.AddMember("Type", adapterInfo.Type, alloc); + jsonAdapterInfo.AddMember("DhcpEnabled", 2, alloc); + jsonAdapterInfo.AddMember("CurrentIpAddress", 2, alloc); + // IP List + Value jsonIpAddressList(kArrayType); + Value jsonIpAddress(kObjectType); + jsonIpAddress.AddMember("IP", "123.123.123.123", alloc); + jsonIpAddressList.PushBack(jsonIpAddress, alloc); + jsonAdapterInfo.AddMember("IpAddressList", jsonIpAddressList, alloc); + + // Gateway List + Value jsonGatewayList(kArrayType); + Value jsonGateway(kObjectType); + jsonGateway.AddMember("IP", "123.123.123.123", alloc); + jsonGatewayList.PushBack(jsonGateway, alloc); + jsonAdapterInfo.AddMember("GatewayList", jsonGatewayList, alloc); + + jsonAdapterInfo.AddMember("DhcpServer", "LIST", alloc); + jsonAdapterInfo.AddMember("HaveWins", FALSE, alloc); + jsonAdapterInfo.AddMember("PrimaryWinsServer", "123.123.123.123", alloc); + jsonAdapterInfo.AddMember("SecondaryWinsServer", "123.123.123.123", alloc); + jsonAdapterInfo.AddMember("LeaseObtained", "2017-07-12 12:23:43", alloc); + jsonAdapterInfo.AddMember("LeaseExpires", "2017-07-12 12:23:43", alloc); + + jsonAdapterInfoList.PushBack(jsonAdapterInfo, alloc); + } + + return jsonAdapterInfoList; +} + void DataManager::jsonUpdate() { // json object create @@ -219,67 +315,12 @@ void DataManager::jsonUpdate() json.AddMember("TotalThreadCount", processListObj.getTotalThreadCount(), alloc); // json Network Connection List - Value jsonNetworkConnectionList(kArrayType); - Value jsonNetworkConnection(kObjectType); - jsonNetworkConnection.AddMember("ProtocolType", 2, alloc); - - Value jsonLocalEndpoint(kObjectType); - jsonLocalEndpoint.AddMember("IPV4", 123, alloc); - jsonLocalEndpoint.AddMember("IPV6", 123, alloc); - jsonLocalEndpoint.AddMember("Port", 123, alloc); - jsonNetworkConnection.AddMember("LocalEndpoint", jsonLocalEndpoint, alloc); - - Value jsonRemoteEndpoint(kObjectType); - jsonRemoteEndpoint.AddMember("IPV4", 123, alloc); - jsonRemoteEndpoint.AddMember("IPV6", 123, alloc); - jsonRemoteEndpoint.AddMember("Port", 123, alloc); - jsonNetworkConnection.AddMember("RemoteEndpoint", jsonRemoteEndpoint, alloc); - - jsonNetworkConnection.AddMember("State", 2, alloc); - jsonNetworkConnection.AddMember("ProcessID", 2, alloc); - jsonNetworkConnection.AddMember("CreateTime", 2, alloc); - jsonNetworkConnection.AddMember("OwnerInfo", 2, alloc); - jsonNetworkConnectionList.PushBack(jsonNetworkConnection, alloc); - json.AddMember("NetworkConnection List", jsonNetworkConnectionList, alloc); - json.AddMember("NetworkConnectionCount", 2, alloc); - + json.AddMember("Network Connection List", getJsonNetworkConnectionList(alloc), alloc); + json.AddMember("NetworkConnectionCount", (ULONGLONG)systemInfo->networkConnectionCount, alloc); - Value jsonAdapterInfoList(kArrayType); - Value jsonAdapterInfo(kObjectType); - jsonAdapterInfo.AddMember("ComboIndex", 2, alloc); - jsonAdapterInfo.AddMember("AdapterName", 2, alloc); - jsonAdapterInfo.AddMember("Description", 2, alloc); - jsonAdapterInfo.AddMember("AddressLength", 2, alloc); - jsonAdapterInfo.AddMember("Address", 2, alloc); - jsonAdapterInfo.AddMember("Index", 2, alloc); - jsonAdapterInfo.AddMember("Type", 2, alloc); - jsonAdapterInfo.AddMember("DhcpEnabled", 2, alloc); - jsonAdapterInfo.AddMember("CurrentIpAddress", 2, alloc); - // IP List - Value jsonIpAddressList(kArrayType); - Value jsonIpAddress(kObjectType); - jsonIpAddress.AddMember("IP", "123.123.123.123", alloc); - jsonIpAddressList.PushBack(jsonIpAddress, alloc); - jsonAdapterInfo.AddMember("IpAddressList", jsonIpAddressList, alloc); - - // Gateway List - Value jsonGatewayList(kArrayType); - Value jsonGateway(kObjectType); - jsonGateway.AddMember("IP", "123.123.123.123", alloc); - jsonGatewayList.PushBack(jsonGateway, alloc); - jsonAdapterInfo.AddMember("GatewayList", jsonGatewayList, alloc); - - jsonAdapterInfo.AddMember("DhcpServer", "LIST", alloc); - jsonAdapterInfo.AddMember("HaveWins", FALSE, alloc); - jsonAdapterInfo.AddMember("PrimaryWinsServer", "123.123.123.123", alloc); - jsonAdapterInfo.AddMember("SecondaryWinsServer", "123.123.123.123", alloc); - jsonAdapterInfo.AddMember("LeaseObtained", "2017-07-12 12:23:43", alloc); - jsonAdapterInfo.AddMember("LeaseExpires", "2017-07-12 12:23:43", alloc); - - jsonAdapterInfoList.PushBack(jsonAdapterInfo, alloc); - json.AddMember("AdapterInfo List", jsonAdapterInfoList, alloc); - - json.AddMember("AdapterCount", 2, alloc); + // json AdapaterInfo List + json.AddMember("AdapterInfo List", getJsonAdapterInfoList(alloc), alloc); + json.AddMember("AdapterCount", systemInfo->adapterCount, alloc); StringBuffer buffer; @@ -296,6 +337,9 @@ void DataManager::jsonUpdate() cout << "RETURN VALUE : " << DeCompress(compressed, compSize, srcSize, decompressed) << endl; cout << "DECOM DATA SIZE : " << strlen(decompressed) << endl; + // TODO : compressed delete + // TODO : decompressed delete + //std::cout << buffer.GetSize() << std::endl; } diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index 63799f8..011afd4 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -2,7 +2,10 @@ #define _DATAMANAGER_H_ #include +#ifndef _WINDOWS_ +#include #include +#endif #include "../process/ProcessList.hpp" #include "../process/Process.hpp" #include "../system/SystemCPU.hpp" @@ -68,6 +71,8 @@ class DataManager void Update(); Value getJsonDiskList(Document::AllocatorType &alloc); Value getJsonProcessList(Document::AllocatorType &alloc); + Value getJsonNetworkConnectionList(Document::AllocatorType &alloc); + Value getJsonAdapterInfoList(Document::AllocatorType &alloc); void jsonUpdate(); void Start(); void Stop(); diff --git a/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/msinttypes/LineCounter.ini b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/msinttypes/LineCounter.ini new file mode 100644 index 0000000..17e17c3 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/lib/rapidjson/msinttypes/LineCounter.ini @@ -0,0 +1,4 @@ +CHILDTRAVERSE=1 +ADDITIONALMSG=1 +EXPORTCSV=0 +FILENAME=*.hpp;*.cpp;*.h;*.c; diff --git a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp index 068d3ba..2eb04d0 100644 --- a/ServerMonitoringService/ServerMonitoringService/process/Process.cpp +++ b/ServerMonitoringService/ServerMonitoringService/process/Process.cpp @@ -210,9 +210,7 @@ string Process::getCreateTime() if (this->handle == NULL) return ""; - tm t = this->createTime; - string str = Util::format("%04d-%02d-%02d %02d:%02d:%02d", - t.tm_year + 1900, t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec); + string str = Util::getTimeString(this->createTime); return str; } diff --git a/ServerMonitoringService/ServerMonitoringService/util/LineCounter.ini b/ServerMonitoringService/ServerMonitoringService/util/LineCounter.ini new file mode 100644 index 0000000..e806439 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService/util/LineCounter.ini @@ -0,0 +1,4 @@ +CHILDTRAVERSE=1 +ADDITIONALMSG=1 +EXPORTCSV=0 +FILENAME=*.hpp;*.cpp; diff --git a/ServerMonitoringService/ServerMonitoringService/util/Util.cpp b/ServerMonitoringService/ServerMonitoringService/util/Util.cpp index 8f7572b..aa22161 100644 --- a/ServerMonitoringService/ServerMonitoringService/util/Util.cpp +++ b/ServerMonitoringService/ServerMonitoringService/util/Util.cpp @@ -73,3 +73,11 @@ void Util::microDelay(ULONG time) time_point start = high_resolution_clock::now(); while ((high_resolution_clock::now() - start).count() / 1000.0 < time); } + +string Util::getTimeString(tm t) +{ + string str = Util::format("%04d-%02d-%02d %02d:%02d:%02d", + t.tm_year + 1900, t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec); + + return str; +} \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/util/Util.hpp b/ServerMonitoringService/ServerMonitoringService/util/Util.hpp index 8dd652e..b5e6773 100644 --- a/ServerMonitoringService/ServerMonitoringService/util/Util.hpp +++ b/ServerMonitoringService/ServerMonitoringService/util/Util.hpp @@ -20,6 +20,7 @@ class Util static string getStringToAddr(SOCKADDR_IN paramAddr); static void stringReplace(string& subject, const string& search, const string& replace); static void microDelay(ULONG time); + static string getTimeString(tm t); }; #endif \ No newline at end of file From d5cb18d1b9073fa7378c6869271f3fa096fdabec Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Tue, 18 Jul 2017 07:09:33 +0900 Subject: [PATCH 81/84] :art: Moved a Compress. DeCompress function in DataManager class as Util class --- .../data/DataManager.cpp | 69 ------------------- .../data/DataManager.hpp | 6 -- .../ServerMonitoringService/util/Util.cpp | 57 +++++++++++++++ .../ServerMonitoringService/util/Util.hpp | 6 ++ 4 files changed, 63 insertions(+), 75 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index e6411f0..5430b61 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -14,75 +14,6 @@ int main() system("pause"); } -int DataManager::Compress(const TCHAR *paramRawData, int ¶mSrcSize, TCHAR *¶mCompressedData, int ¶mCompressSize) -{ - StopWatch stopWatch; - stopWatch.Start(); - // NULL - // Last null char - const int srcSize = (int)(strlen(paramRawData) + 1); - // ִ ũ⸦ ȯ - const int maxCompressSize = LZ4_compressBound(srcSize); - // We will use that size for our destination boundary when allocating space. - TCHAR *compressedData = new TCHAR[maxCompressSize]; - - if (compressedData == NULL) - return -1; // Failed to allocate memory for *compressed_data. - - const int compressedSize = LZ4_compress_default(paramRawData, compressedData, srcSize, maxCompressSize); - - // Check return_value to determine what happened. - if (compressedSize < 0) - return -2; // A negative result from LZ4_compress_default indicates a failure trying to compress the data. See exit code (echo $?) for value returned. - else if (compressedSize == 0) - return -3; // A result of 0 means compression worked, but was stopped because the destination buffer couldn't hold all the information. - - paramSrcSize = srcSize; - paramCompressedData = compressedData; - paramCompressSize = compressedSize; - - stopWatch.Stop(); - stopWatch.milliPrint(); - - return 1; -} - -int DataManager::DeCompress(const TCHAR *paramCompressedData, int paramCompressedDataSize, int paramRawSize, TCHAR *¶mRawData) -{ - StopWatch stopWatch; - stopWatch.Start(); - - - TCHAR *decompressData = new TCHAR[paramRawSize]; - - if (decompressData == NULL) - return -1; - - const int decompressedSize = LZ4_decompress_safe(paramCompressedData, decompressData, paramCompressedDataSize, paramRawSize); - - /* - no longer useful - ʿ - */ - if (paramCompressedData) - { - delete[] paramCompressedData; - paramCompressedData = nullptr; - } - - if (decompressedSize < 0) - return -2; // A negative result from LZ4_decompress_safe indicates a failure trying to decompress the data. See exit code (echo $?) for value returned. - else if (decompressedSize == 0) - return -3; // I'm not sure this function can ever return 0. Documentation in lz4.h doesn't indicate so. - - - paramRawData = decompressData; - stopWatch.Stop(); - stopWatch.milliPrint(); - - return 1; -} - Value DataManager::getJsonDiskList(Document::AllocatorType &alloc) { Value jsonDiskList(kArrayType); diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp index 011afd4..6366994 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.hpp @@ -21,10 +21,6 @@ #include "../lib/rapidjson/document.h" #include "../lib/rapidjson/stringbuffer.h" #include "../lib/rapidjson/writer.h" -/* - LZ4 Compress Library -*/ -#include "../lib/lz4/lz4.h" using namespace rapidjson; using namespace std; @@ -77,8 +73,6 @@ class DataManager void Start(); void Stop(); void CallbackProc(); - int Compress(const TCHAR *paramRawData, int ¶mSrcSize, TCHAR *¶mCompressedData, int ¶mCompressSize); - int DeCompress(const TCHAR *paramCompressedData, int paramCompressedDataSize, int paramRawSize, TCHAR *¶mRawData); public: DataManager() { diff --git a/ServerMonitoringService/ServerMonitoringService/util/Util.cpp b/ServerMonitoringService/ServerMonitoringService/util/Util.cpp index aa22161..cfa12d8 100644 --- a/ServerMonitoringService/ServerMonitoringService/util/Util.cpp +++ b/ServerMonitoringService/ServerMonitoringService/util/Util.cpp @@ -80,4 +80,61 @@ string Util::getTimeString(tm t) t.tm_year + 1900, t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec); return str; +} + +int Util::Compress(const TCHAR *paramRawData, int ¶mSrcSize, TCHAR *¶mCompressedData, int ¶mCompressSize) +{ + // NULL + // Last null char + const int srcSize = (int)(strlen(paramRawData) + 1); + // ִ ũ⸦ ȯ + const int maxCompressSize = LZ4_compressBound(srcSize); + // We will use that size for our destination boundary when allocating space. + TCHAR *compressedData = new TCHAR[maxCompressSize]; + + if (compressedData == NULL) + return -1; // Failed to allocate memory for *compressed_data. + + const int compressedSize = LZ4_compress_default(paramRawData, compressedData, srcSize, maxCompressSize); + + // Check return_value to determine what happened. + if (compressedSize < 0) + return -2; // A negative result from LZ4_compress_default indicates a failure trying to compress the data. See exit code (echo $?) for value returned. + else if (compressedSize == 0) + return -3; // A result of 0 means compression worked, but was stopped because the destination buffer couldn't hold all the information. + + paramSrcSize = srcSize; + paramCompressedData = compressedData; + paramCompressSize = compressedSize; + + return 1; +} + +int Util::DeCompress(const TCHAR *paramCompressedData, int paramCompressedDataSize, int paramRawSize, TCHAR *¶mRawData) +{ + TCHAR *decompressData = new TCHAR[paramRawSize]; + + if (decompressData == NULL) + return -1; + + const int decompressedSize = LZ4_decompress_safe(paramCompressedData, decompressData, paramCompressedDataSize, paramRawSize); + + /* + no longer useful + ʿ + */ + if (paramCompressedData) + { + delete[] paramCompressedData; + paramCompressedData = nullptr; + } + + if (decompressedSize < 0) + return -2; // A negative result from LZ4_decompress_safe indicates a failure trying to decompress the data. See exit code (echo $?) for value returned. + else if (decompressedSize == 0) + return -3; // I'm not sure this function can ever return 0. Documentation in lz4.h doesn't indicate so. + + + paramRawData = decompressData; + return 1; } \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService/util/Util.hpp b/ServerMonitoringService/ServerMonitoringService/util/Util.hpp index b5e6773..e2fc48a 100644 --- a/ServerMonitoringService/ServerMonitoringService/util/Util.hpp +++ b/ServerMonitoringService/ServerMonitoringService/util/Util.hpp @@ -8,6 +8,10 @@ #include #include #include +/* +LZ4 Compress Library +*/ +#include "../lib/lz4/lz4.h" using namespace std; using namespace chrono; @@ -21,6 +25,8 @@ class Util static void stringReplace(string& subject, const string& search, const string& replace); static void microDelay(ULONG time); static string getTimeString(tm t); + static int Compress(const TCHAR *paramRawData, int ¶mSrcSize, TCHAR *¶mCompressedData, int ¶mCompressSize); + static int DeCompress(const TCHAR *paramCompressedData, int paramCompressedDataSize, int paramRawSize, TCHAR *¶mRawData); }; #endif \ No newline at end of file From 94b089e0f9201967ac994bc921c927702b38fa90 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Tue, 18 Jul 2017 08:24:57 +0900 Subject: [PATCH 82/84] :construction: Add a Thread Class --- .../ServerMonitoringService Server.vcxproj | 2 + ...erMonitoringService Server.vcxproj.filters | 6 +++ .../network socket/NetworkListener.cpp | 11 ++--- .../network socket/NetworkListener.hpp | 6 ++- .../util/Thread.cpp | 31 ++++++++++++++ .../util/Thread.hpp | 40 +++++++++++++++++++ 6 files changed, 90 insertions(+), 6 deletions(-) create mode 100644 ServerMonitoringService/ServerMonitoringService Server/util/Thread.cpp create mode 100644 ServerMonitoringService/ServerMonitoringService Server/util/Thread.hpp diff --git a/ServerMonitoringService/ServerMonitoringService Server/ServerMonitoringService Server.vcxproj b/ServerMonitoringService/ServerMonitoringService Server/ServerMonitoringService Server.vcxproj index 590391c..08abba5 100644 --- a/ServerMonitoringService/ServerMonitoringService Server/ServerMonitoringService Server.vcxproj +++ b/ServerMonitoringService/ServerMonitoringService Server/ServerMonitoringService Server.vcxproj @@ -118,6 +118,7 @@ + @@ -127,6 +128,7 @@ + diff --git a/ServerMonitoringService/ServerMonitoringService Server/ServerMonitoringService Server.vcxproj.filters b/ServerMonitoringService/ServerMonitoringService Server/ServerMonitoringService Server.vcxproj.filters index 0e714a9..9c261c2 100644 --- a/ServerMonitoringService/ServerMonitoringService Server/ServerMonitoringService Server.vcxproj.filters +++ b/ServerMonitoringService/ServerMonitoringService Server/ServerMonitoringService Server.vcxproj.filters @@ -39,6 +39,9 @@ 소스 파일 + + 소스 파일 + @@ -62,5 +65,8 @@ 헤더 파일 + + 헤더 파일 + \ No newline at end of file diff --git a/ServerMonitoringService/ServerMonitoringService Server/network socket/NetworkListener.cpp b/ServerMonitoringService/ServerMonitoringService Server/network socket/NetworkListener.cpp index 3666a28..cbbc13a 100644 --- a/ServerMonitoringService/ServerMonitoringService Server/network socket/NetworkListener.cpp +++ b/ServerMonitoringService/ServerMonitoringService Server/network socket/NetworkListener.cpp @@ -1,8 +1,10 @@ #include "NetworkListener.hpp" -DWORD WINAPI NetworkListener::threadProc(LPVOID hIOCP) +DWORD NetworkListener::callbackProc(LPVOID hIOCP) { + NetworkListener * instance = reinterpret_cast (hIOCP); + HANDLE threadHandler = *((HANDLE *)hIOCP); DWORD receiveBytes; DWORD sendBytes; @@ -258,13 +260,12 @@ int NetworkListener::Init(SOCKET ¶mSocket, SOCKADDR_IN &parmAddr, int ¶m HANDLE hIOCP = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0); ULONG threadId; - // Create Thread for (int i = 0; i < this->threadCount; i++) { - // [&]() {networkProc(serverSocket, addr); - - hThread[i] = CreateThread(NULL, 0, std::bind(threadProc, this), &hIOCP, 0, &threadId); + // + Thread *thread = new Thread(&NetworkListener::callbackProc, &hIOCP); + //hThread[i] = CreateThread(NULL, 0, std::bind(&NetworkListener::threadProc, this), &hIOCP, 0, &threadId); } handle = hIOCP; diff --git a/ServerMonitoringService/ServerMonitoringService Server/network socket/NetworkListener.hpp b/ServerMonitoringService/ServerMonitoringService Server/network socket/NetworkListener.hpp index 3cc0d29..c235b5e 100644 --- a/ServerMonitoringService/ServerMonitoringService Server/network socket/NetworkListener.hpp +++ b/ServerMonitoringService/ServerMonitoringService Server/network socket/NetworkListener.hpp @@ -10,6 +10,10 @@ #include "../data/Client.hpp" #include "../data/ClientManager.hpp" #include +/* + Thread Class +*/ +#include "../util/Thread.hpp" #pragma comment(lib, "ws2_32.lib") // WinSock2 Lib @@ -48,7 +52,7 @@ class NetworkListener private: int Init(SOCKET &pSocket, SOCKADDR_IN ¶mAddr, int ¶mRetValue, HANDLE &handle); void initSocketAddr(BOOLEAN IPv6); - DWORD WINAPI threadProc(LPVOID hIOCP); + DWORD callbackProc(LPVOID hIOCP); public: NetworkListener(TCHAR *ip, USHORT port) : serverIp(ip), serverPort(port) { diff --git a/ServerMonitoringService/ServerMonitoringService Server/util/Thread.cpp b/ServerMonitoringService/ServerMonitoringService Server/util/Thread.cpp new file mode 100644 index 0000000..b7c3671 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService Server/util/Thread.cpp @@ -0,0 +1,31 @@ +#include "Thread.hpp" + +DWORD WINAPI Thread::threadProc(LPVOID lpParameter) +{ + // copy + Thread* obj = (Thread*)lpParameter; + + if (obj->func) + obj->func(obj->lpParam); + + return 1; +} + +void Thread::Create() +{ + if (this->threadHandle) // timer is exist + Abort(); + + ULONG threadID; + this->threadHandle= CreateThread(NULL, 0, threadProc, (PVOID)this, 0, &threadID); + this->threadID = threadID; +} + +void Thread::Abort() +{ + DWORD result = 0; + GetExitCodeThread(this->threadHandle, &result); + + if (threadHandle) + CloseHandle(threadHandle); +} diff --git a/ServerMonitoringService/ServerMonitoringService Server/util/Thread.hpp b/ServerMonitoringService/ServerMonitoringService Server/util/Thread.hpp new file mode 100644 index 0000000..4f6ad48 --- /dev/null +++ b/ServerMonitoringService/ServerMonitoringService Server/util/Thread.hpp @@ -0,0 +1,40 @@ +#ifndef _THREAD_H_ +#define _THREAD_H_ + +#include +#include +#include + +using namespace std; + +class Thread +{ +private: + static UINT threadCount; + HANDLE threadHandle = NULL; + //HANDLE timerQueue = NULL; + UINT threadID = 0; + LPVOID lpParam; + //UINT interval = 0; + static DWORD WINAPI Thread::threadProc(LPVOID lpParameter); +public: + function func = NULL; +public: + Thread(function paramFunc, LPVOID lpParam) + { + this->threadCount++; + this->func = paramFunc; + this->lpParam = lpParam; + } + + ~Thread() + { + if (threadHandle) + Abort(); + } + + void Create(); + void Abort(); +}; + +#endif // !_THREAD_H_ \ No newline at end of file From a486aa822393d0fa214c762ce23738b255564c7c Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Tue, 18 Jul 2017 21:02:01 +0900 Subject: [PATCH 83/84] :bug: Fixed Error Compress, DeCompress function --- .../ServerMonitoringService/data/DataManager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp index 5430b61..73fad6a 100644 --- a/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp +++ b/ServerMonitoringService/ServerMonitoringService/data/DataManager.cpp @@ -263,9 +263,9 @@ void DataManager::jsonUpdate() int compSize; TCHAR *compressed = NULL; TCHAR *decompressed = NULL; - cout << "RETURN VALUE : " << Compress(buffer.GetString(), srcSize, compressed, compSize) << endl; + cout << "RETURN VALUE : " << Util::Compress(buffer.GetString(), srcSize, compressed, compSize) << endl; cout << "COM DATA SIZE : " << compSize << endl; - cout << "RETURN VALUE : " << DeCompress(compressed, compSize, srcSize, decompressed) << endl; + cout << "RETURN VALUE : " << Util::DeCompress(compressed, compSize, srcSize, decompressed) << endl; cout << "DECOM DATA SIZE : " << strlen(decompressed) << endl; // TODO : compressed delete From 9f3bf1d7681fff60df4b64b3b8da7cb5bd3d4906 Mon Sep 17 00:00:00 2001 From: KimBoGyu Date: Wed, 19 Jul 2017 17:13:47 +0900 Subject: [PATCH 84/84] :construction: Code refactoring --- .../network socket/NetworkListener.cpp | 2 +- .../util/Thread.cpp | 10 +++++----- .../util/Thread.hpp | 16 ++++++++-------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ServerMonitoringService/ServerMonitoringService Server/network socket/NetworkListener.cpp b/ServerMonitoringService/ServerMonitoringService Server/network socket/NetworkListener.cpp index cbbc13a..2a1af78 100644 --- a/ServerMonitoringService/ServerMonitoringService Server/network socket/NetworkListener.cpp +++ b/ServerMonitoringService/ServerMonitoringService Server/network socket/NetworkListener.cpp @@ -264,7 +264,7 @@ int NetworkListener::Init(SOCKET ¶mSocket, SOCKADDR_IN &parmAddr, int ¶m for (int i = 0; i < this->threadCount; i++) { // - Thread *thread = new Thread(&NetworkListener::callbackProc, &hIOCP); + ThreadWrapper *threadWrapper = new ThreadWrapper(std::bind(&NetworkListener::callbackProc, this), &hIOCP); //hThread[i] = CreateThread(NULL, 0, std::bind(&NetworkListener::threadProc, this), &hIOCP, 0, &threadId); } diff --git a/ServerMonitoringService/ServerMonitoringService Server/util/Thread.cpp b/ServerMonitoringService/ServerMonitoringService Server/util/Thread.cpp index b7c3671..e181be4 100644 --- a/ServerMonitoringService/ServerMonitoringService Server/util/Thread.cpp +++ b/ServerMonitoringService/ServerMonitoringService Server/util/Thread.cpp @@ -1,9 +1,9 @@ #include "Thread.hpp" -DWORD WINAPI Thread::threadProc(LPVOID lpParameter) +DWORD WINAPI ThreadWrapper::threadProc(LPVOID lpParameter) { // copy - Thread* obj = (Thread*)lpParameter; + ThreadWrapper* obj = (ThreadWrapper*)lpParameter; if (obj->func) obj->func(obj->lpParam); @@ -11,17 +11,17 @@ DWORD WINAPI Thread::threadProc(LPVOID lpParameter) return 1; } -void Thread::Create() +void ThreadWrapper::run() { if (this->threadHandle) // timer is exist - Abort(); + abort(); ULONG threadID; this->threadHandle= CreateThread(NULL, 0, threadProc, (PVOID)this, 0, &threadID); this->threadID = threadID; } -void Thread::Abort() +void ThreadWrapper::abort() { DWORD result = 0; GetExitCodeThread(this->threadHandle, &result); diff --git a/ServerMonitoringService/ServerMonitoringService Server/util/Thread.hpp b/ServerMonitoringService/ServerMonitoringService Server/util/Thread.hpp index 4f6ad48..c4b95a4 100644 --- a/ServerMonitoringService/ServerMonitoringService Server/util/Thread.hpp +++ b/ServerMonitoringService/ServerMonitoringService Server/util/Thread.hpp @@ -7,7 +7,7 @@ using namespace std; -class Thread +class ThreadWrapper { private: static UINT threadCount; @@ -16,25 +16,25 @@ class Thread UINT threadID = 0; LPVOID lpParam; //UINT interval = 0; - static DWORD WINAPI Thread::threadProc(LPVOID lpParameter); + static DWORD WINAPI threadProc(LPVOID lpParameter); public: - function func = NULL; + function func = NULL; public: - Thread(function paramFunc, LPVOID lpParam) + ThreadWrapper(function paramFunc, HANDLE lpParam) { this->threadCount++; this->func = paramFunc; this->lpParam = lpParam; } - ~Thread() + ~ThreadWrapper() { if (threadHandle) - Abort(); + abort(); } - void Create(); - void Abort(); + void run(); + void abort(); }; #endif // !_THREAD_H_ \ No newline at end of file