From aa9169bd34a67ea97b78b8daf0b2245a31f884ad Mon Sep 17 00:00:00 2001 From: Dario Date: Fri, 1 Nov 2019 12:58:48 +0100 Subject: [PATCH] update styling --- src/cpp/Crypto/KeyPair.h | 2 + src/cpp/DRMemoryList.h | 184 ++++++++++++++++++ src/cpp/HTTPInterface/CheckEmailPage.cpp | 4 +- .../HTTPInterface/CheckTransactionPage.cpp | 65 ++++--- src/cpp/HTTPInterface/ConfigPage.cpp | 2 +- src/cpp/HTTPInterface/DashboardPage.cpp | 2 +- src/cpp/HTTPInterface/ElopageWebhook.cpp | 5 +- src/cpp/HTTPInterface/Error500Page.cpp | 2 +- src/cpp/HTTPInterface/LoginPage.cpp | 2 +- src/cpp/HTTPInterface/PassphrasePage.cpp | 6 +- src/cpp/HTTPInterface/RegisterPage.cpp | 2 +- src/cpp/HTTPInterface/SaveKeysPage.cpp | 4 +- .../HTTPInterface/UpdateUserPasswordPage.cpp | 2 +- src/cpp/model/User.cpp | 71 ++++++- src/cpp/model/User.h | 6 +- src/cpp/tasks/ProcessingTransaction.h | 1 + src/cpp/tasks/SigningTransaction.cpp | 7 +- src/cpsp/checkEmail.cpsp | 2 +- src/cpsp/checkTransaction.cpsp | 3 +- src/cpsp/passphrase.cpsp | 6 +- src/cpsp/saveKeys.cpsp | 2 +- 21 files changed, 316 insertions(+), 64 deletions(-) create mode 100644 src/cpp/DRMemoryList.h diff --git a/src/cpp/Crypto/KeyPair.h b/src/cpp/Crypto/KeyPair.h index 28eee3041..e37a9fe0e 100644 --- a/src/cpp/Crypto/KeyPair.h +++ b/src/cpp/Crypto/KeyPair.h @@ -8,10 +8,12 @@ #include class UserWriteKeysIntoDB; +class UserGenerateKeys; // TODO: https://libsodium.gitbook.io/doc/advanced/ed25519-curve25519 class KeyPair { friend UserWriteKeysIntoDB; + friend UserGenerateKeys; public: KeyPair(); ~KeyPair(); diff --git a/src/cpp/DRMemoryList.h b/src/cpp/DRMemoryList.h new file mode 100644 index 000000000..6effd9fdf --- /dev/null +++ b/src/cpp/DRMemoryList.h @@ -0,0 +1,184 @@ +/*/************************************************************************* + * * + * Core, Core-Lib for my programs, Core doesn't need any libraries * + * Copyright (C) 2012, 2013, 2014 Dario Rekowski * + * Email: ***REMOVED*** Web: ***REMOVED*** * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + * * + ***************************************************************************/ + +/* +Speichermanager mit Free Listen +Damit man häufig Speicher reservieren kann ohne den +Speicher zu defragmentieren. +Nach einem Artikel aus Gems4: "Speicherfragmentierung mit Templated Free-Lists bekämmpfen" +von Paul Glinker Rockstar Games Toronto + + Programmierer: Dario Rekowski +*/ +//DRLogger Log; +//Deklaration +//#ifdef _TEMPLATEFREE_ +#ifndef __DR_CORE2_MEMORY_LIST__ +#define __DR_CORE2_MEMORY_LIST__ + +#ifndef __CORE_2_MAIN_H__ +#include "Core2Main.h" +#endif + +template class DRMemoryList +{ + + public: + //Standard Konstruktor + DRMemoryList(int iNumObjects); + + //Konstruktor für Daten ohne Standard Konstruktor + DRMemoryList(FLDataType* pObjectData, FLDataType** ppFreeObjects, int iNumObjects); + + //Deskonstruktor, wichtig!! + ~DRMemoryList(); + + //füllt den Zeigerstack (Stapel) + void FillStack(); + + //Liefert den Zeiger auf einen freien Spiecherplatz zurück + FLDataType* NewInstance(); + + //Und die Instance freigeben + void FreeInstance(FLDataType* pInstance); + + //liefert die anzahl der noch freien Speicherplätze zurück + int getFreeCount() {return m_iTop;} + int getObjectCount() {return m_iNumObject;} + FLDataType** getDataPointer() {return m_ppFreeObjects;} + + private: + FLDataType* m_pObjectData; //Zeiger auf den reservieretn Speicher + FLDataType** m_ppFreeObjects; //Zeiger auf die anderen Zeiger + int m_iNumObject; //Anzahl der Objecte + bool m_bFreeOnDestroy; //Weiß nicht + int m_iTop; //Keine Ahnung +}; + + +//******************************************************************************++ +//Funktionen +template DRMemoryList::DRMemoryList(int iNumObjects) +{ + //Fehler abfangen + //ASSERT(iNumObjects > 0); + if(iNumObjects <= 0) LOG_ERROR_VOID("not enough objects "); + + //Speicher reservieren + m_pObjectData = new FLDataType[iNumObjects]; + m_ppFreeObjects = new FLDataType*[iNumObjects]; + + //Checken ob der Speicher reserviert wurde +// ASSERT(m_pObjectData); +// ASSERT(m_ppFreeObjects); + if(!m_pObjectData || !m_ppFreeObjects) LOG_ERROR_VOID("Es konnte kein Speicher reserviert werden!"); + + + //Anzahl zuweisen + m_iNumObject = iNumObjects; + + m_bFreeOnDestroy = true; + + //Zeiger zuweisen + FillStack(); + + +} + +//------------------------------------------------------------------------------------ + +template DRMemoryList::DRMemoryList(FLDataType* pObjectData, FLDataType** ppFreeObjects, int iNumObjects) +{ + //Fehler abfangen +// ASSERT(iNumObjects > 0); + if(iNumObjects <= 0) LOG_ERROR_VOID("not enough objects "); + + + //Speicher reservieren + m_pObjectData = pObjectData; + m_ppFreeObjects = ppFreeObjects; + + //Checken ob der Speicher reserviert wurde +// ASSERT(m_pObjectData); +// ASSERT(m_ppFreeObjects); + if(!m_pObjectData || !m_ppFreeObjects) LOG_ERROR_VOID("Es konnte kein Speicher reserviert werden!"); + + + //Anzahl zuweisen + m_iNumObject = iNumObjects; + + m_bFreeOnDestroy = false; + + //Zeiger zuweisen + FillStack(); + + +} + +//--------------------------------------------------------------------------------------------- +template DRMemoryList::~DRMemoryList() +{ + DR_SAVE_DELETE_ARRAY(m_pObjectData); + DR_SAVE_DELETE_ARRAY(m_ppFreeObjects); +} + + +//****************************************************************************++ + +template void DRMemoryList::FillStack() +{ + int iIndex = m_iNumObject - 1; + + //Die Zeiger in m_ppFreeObjects werden von vorne nach hinten, + //von hinten nach vorne auf den reservierten Speicher ausgerichtet + for(m_iTop = 0; m_iTop < m_iNumObject; m_iTop++) + { + m_ppFreeObjects[m_iTop] = &(m_pObjectData[iIndex--]); + } +} + +//********************************************************************************* + +template FLDataType* DRMemoryList::NewInstance() +{ +// ASSERT(m_iTop); + if(m_iTop <= 0) + { + LOG_ERROR("Kein Platz mehr in der Liste!", NULL); + } + return m_ppFreeObjects[--m_iTop]; +} + +//******************************************************************************** + +template void DRMemoryList::FreeInstance(FLDataType* pInstance) +{ + + //Fehler kontrolle +// ASSERT(pInstance >= &(m_pObjectData[0]) && +// pInstance < &(m_pObjectData[m_iNumObject])); +// ASSERT(m_iTop < m_iNumObject); + + m_ppFreeObjects[m_iTop++] = pInstance; +} + +#endif //__DR_CORE2_MEMORY_LIST__ +//#endif //_TEMPLATEFREE_ \ No newline at end of file diff --git a/src/cpp/HTTPInterface/CheckEmailPage.cpp b/src/cpp/HTTPInterface/CheckEmailPage.cpp index 3dd4c5ef9..e0795422a 100644 --- a/src/cpp/HTTPInterface/CheckEmailPage.cpp +++ b/src/cpp/HTTPInterface/CheckEmailPage.cpp @@ -110,7 +110,7 @@ void CheckEmailPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: responseStream << "\n"; responseStream << "
\n"; responseStream << "\t

Login Server in Entwicklung

\n"; - responseStream << "\t

Alpha 0.4.3

\n"; + responseStream << "\t

Alpha 0.4.4

\n"; responseStream << "
\n"; responseStream << " - Zurück zur Startseite + Zurück zur Startseite <% } else if(state == PAGE_ERROR) { %>