![]() |
Gray C++ Libraries
0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
|
#include <cNetAddrTracker.h>
Public Member Functions | |
| ITERATE_t | AddLogAddr (cNetAddrTracker *pClientAddr) |
| bool | RemoveLogAddr (cNetAddrTracker *pClientAddr) |
| virtual cNetAddrTrackPtr | CreateAddrTracker (const cNetAddress &addr) |
| cNetAddrTrackPtr | FindAddrTracker (const cNetAddress &addr, bool bCreate=true) |
| void | onTickAddrArray () |
| periodically age the list. More... | |
| UNITTEST_FRIEND (cNetAddrTracker) | |
Public Member Functions inherited from Gray::CObject | |
| virtual | ~CObject () |
| virtual void | AssertValid () const |
| < memory allocation and structure definitions are valid. More... | |
| virtual void | Serialize (cArchive &a) |
Public Member Functions inherited from Gray::cHeapObject | |
| cHeapObject () | |
| virtual | ~cHeapObject () |
| bool | IsValidInsideN (INT_PTR index) const |
| bool | IsValidInsidePtr (void const *pTest) const |
| virtual size_t | GetHeapStatsThis (OUT ITERATE_t &iAllocCount) const |
| virtual bool | isValidCheck () const noexcept |
Public Member Functions inherited from Gray::cThreadLockArrayHash< cNetAddrTracker > | |
| cThreadLockArrayHash () | |
| ~cThreadLockArrayHash () | |
| bool | IsEmpty () const |
| ITERATE_t | GetSize () const |
| cRefPtr< cNetAddrTracker > | GetAtCheck (ITERATE_t nIndex) const |
| ITERATE_t | Add (cNetAddrTracker *pObj) |
| cRefPtr< cNetAddrTracker > | PopHead () |
| cRefPtr< cNetAddrTracker > | PopTail () |
| bool | RemoveArgKey (cNetAddrTracker *pObj) |
| void | RemoveAll () |
| void | DisposeAll () |
| cRefPtr< cNetAddrTracker > | FindArgForKey (HASHCODE_t hashcode) const |
Protected Member Functions | |
| cNetAddrMgr () | |
| ~cNetAddrMgr () | |
Protected Member Functions inherited from Gray::cSingleton< cNetAddrMgr > | |
| cSingleton (cNetAddrMgr *pObject, const TYPEINFO_t &rAddrCode=typeid(cNetAddrMgr)) noexcept | |
| virtual | ~cSingleton () |
Protected Member Functions inherited from Gray::cSingletonStatic< TYPE > | |
| cSingletonStatic (TYPE *pObject) noexcept | |
| virtual | ~cSingletonStatic () noexcept |
Protected Member Functions inherited from Gray::cSingletonRegister | |
| cSingletonRegister (const TYPEINFO_t &rAddrCode) noexcept | |
| virtual | ~cSingletonRegister () |
| void | RegisterSingleton () |
Protected Member Functions inherited from Gray::cHeapObject | |
| const void * | get_HeapPtr () const noexcept override |
| Get the top level (outermost, freeable) class pointer. I can delete get_HeapPtr(). More... | |
Protected Member Functions inherited from Gray::cArraySortHash< TYPE, _TYPE_HASH > | |
| virtual COMPARE_t | CompareData (REF_t pData1, REF_t pData2) const noexcept override |
| virtual COMPARE_t | CompareKey (KEY_t key1, REF_t pBase) const override |
| virtual | ~cArraySortHash () |
| ITERATE_t | FindIForAK (const TYPE *pBase) const |
| bool | RemoveArgKey (TYPE *pBase) |
Protected Member Functions inherited from Gray::cArraySortRef< TYPE, HASHCODE_t > | |
| void | DisposeAll () |
| virtual | ~cArraySortFacade () |
| bool | IsValidIndex (ITERATE_t i) const noexcept |
| REF_t | GetAt (ITERATE_t index) const noexcept |
| REF_t | GetAtCheck (ITERATE_t nIndex) const |
| TYPE_PTR | FindArgForKey (TYPE_KEY key1) const noexcept |
| ITERATE_t | FindIForAC_BRUTEFORCE (const TYPE_PTR pData) const |
| ELEM_t | PopHead () |
| ELEM_t | PopTail () |
| void | DeleteAll () |
Protected Member Functions inherited from Gray::cArraySorted< TYPE, TYPE, TYPE > | |
| virtual COMPARE_t | CompareKey (KEY_t key1, REF_t Data2) const |
| bool | RemoveArgKey (REF_t pObj, KEY_t key) |
| virtual | ~cArraySorted () |
| ITERATE_t | FindINear (REF_t pNew, COMPARE_t &iCompareRes) const |
| ITERATE_t | FindINearKey (KEY_t key, COMPARE_t &iCompareRes) const |
| ITERATE_t | FindIForKey (KEY_t key) const |
| ITERATE_t | FindIFirstForKey (TYPE nKey) const |
| ITERATE_t | FindILastForKey (TYPE nKey) const |
| ITERATE_t | AddPresorted (ITERATE_t index, COMPARE_t iCompareRes, TYPE pNew) |
| bool | RemoveKey (TYPE key) |
| ITERATE_t | Add (TYPE pNew) |
| void | AddArray (const SUPER_t &a) |
Protected Member Functions inherited from Gray::cArrayTyped< TYPE, TYPE > | |
| virtual COMPARE_t | CompareData (REF_t Data1, REF_t Data2) const noexcept |
| ITERATE_t | QSortPartition (ITERATE_t iLeft, ITERATE_t iRight) |
| void | QSort (ITERATE_t iLeft, ITERATE_t iRight) |
| void | QSort () |
| cArrayTyped () noexcept | |
| cArrayTyped (const THIS_t &rArray) | |
| cArrayTyped (ITERATE_t iSize) | |
| virtual | ~cArrayTyped () |
| bool | isValidCheck () const noexcept |
| < memory allocation and structure definitions are valid. More... | |
| bool | IsValidIndex (ITERATE_t i) const noexcept |
| ITERATE_t | ClampValidIndex (ITERATE_t i) const noexcept |
| size_t | GetHeapStats (OUT ITERATE_t &iAllocCount) const noexcept |
| void | AssertValidIndex (ITERATE_t nIndex) const |
| const TYPE & | GetAtSecure (ITERATE_t nIndex) const |
| TYPE & | ElementAtSecure (ITERATE_t nIndex) |
| REF_t | ConstElementAt (ITERATE_t nIndex) const |
| TYPE & | operator[] (ITERATE_t nIndex) |
| const TYPE & | operator[] (ITERATE_t nIndex) const |
| TYPE & | Head () |
| TYPE & | Tail () |
| TYPE & | ElementAtHead () |
| TYPE & | ElementAtTail () |
| REF_t | ConstHead () const |
| REF_t | ConstTail () const |
| REF_t | GetAtTail () |
| void | UnLinkIndex (ITERATE_t nIndex) |
| void | Swap (ITERATE_t i, ITERATE_t j) |
| void | SetCopy (const cArrayTyped< TYPE, TYPE > &aValues) |
| const cArrayTyped< TYPE, TYPE > & | operator= (const cArrayTyped< TYPE, TYPE > &aValues) |
| ITERATE_t | FindIFor (TYPE arg) const |
| bool | HasArg (TYPE arg) const |
| void | RemoveLast () |
| ELEM_t | PopHead () |
| ELEM_t | PopTail () |
| bool | RemoveArg (TYPE arg) |
| void | UnLinkArg (TYPE arg) |
| ITERATE_t | AddTail (TYPE newElement) |
| ITERATE_t | PushTail (TYPE newElement) |
| void | AddHead (TYPE newElement) |
| TYPE * | get_DataWork () const |
| void | AddArray (const SUPER_t &src) |
| bool | IsEqualArray (const SUPER_t &aValues) const |
| bool | isArraySorted () const |
| bool | isArraySortedND () const |
Protected Member Functions inherited from Gray::CArray< TYPE, ARG_TYPE > | |
| bool | IsValidIndex (ITERATE_t i) const noexcept |
| CArray () noexcept | |
| CArray (THIS_t &&ref) noexcept | |
| virtual | ~CArray () |
| bool | IsValidMallocSize () const noexcept |
| ITERATE_t | GetSize () const noexcept |
| ITERATE_t | GetUpperBound () const noexcept |
| bool | IsEmpty () const noexcept |
| void | SetSize (ITERATE_t nNewSize) |
| ITERATE_t | GetMallocSize () const noexcept |
| void | RemoveAll () |
| Clean up. More... | |
| const TYPE & | GetAt (ITERATE_t nIndex) const |
| TYPE & | ElementAt (ITERATE_t nIndex) |
| void | SetAt (ITERATE_t nIndex, ARG_TYPE newElement) |
| const TYPE * | GetData () const |
| TYPE * | GetData () |
| void | SetDataArrayPtr (TYPE *pData, ITERATE_t nSize) |
| void | SetAtGrow (ITERATE_t nIndex, ARG_TYPE newElement) |
| ITERATE_t | Add (ARG_TYPE newElement) |
| void | Copy (const CArray &src) |
| TYPE & | operator[] (ITERATE_t nIndex) |
| const TYPE & | operator[] (ITERATE_t nIndex) const |
| void | InsertAt (ITERATE_t nIndex, ARG_TYPE newElement) |
| void | RemoveAt (ITERATE_t nIndex) |
| void | RemoveAt (ITERATE_t nIndex, ITERATE_t iQty) |
| void | MoveElement (ITERATE_t iFrom, ITERATE_t iTo) |
Friends | |
| class | cSingleton< cNetAddrMgr > |
Additional Inherited Members | |
Static Public Member Functions inherited from Gray::cSingleton< cNetAddrMgr > | |
| static cNetAddrMgr *__stdcall | get_Single () |
| static TYPE2 *__stdcall | get_SingleT () |
| static cNetAddrMgr &__stdcall | I () |
Static Public Member Functions inherited from Gray::cSingletonStatic< TYPE > | |
| static bool | isSingleCreated () noexcept |
| static TYPE * | get_SingleU () noexcept |
| static TYPE * | get_Single () |
| template<class TYPE2 > | |
| static TYPE2 *__stdcall | get_SingleCast () |
| static TYPE & | I () noexcept |
Static Public Member Functions inherited from Gray::cSingletonRegister | |
| static void __stdcall | ReleaseModule (HMODULE hMod) |
Public Attributes inherited from Gray::cThreadLockArrayHash< cNetAddrTracker > | |
| cThreadLockCount | m_Lock |
Static Public Attributes inherited from Gray::cSingletonRegister | |
| static cThreadLockFast | sm_LockSingle |
| common lock for all cSingleton. More... | |
Protected Types inherited from Gray::cArraySortHash< TYPE, _TYPE_HASH > | |
| typedef cArraySortRef< TYPE, _TYPE_HASH > | SUPER_t |
| typedef SUPER_t::REF_t | REF_t |
| typedef SUPER_t::KEY_t | KEY_t |
Protected Types inherited from Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY > | |
| typedef cArraySorted< TYPE, TYPE_PTR, TYPE_KEY > | SUPER_t |
| typedef SUPER_t::REF_t | REF_t |
| typedef SUPER_t::ELEM_t | ELEM_t |
Protected Types inherited from Gray::cArraySorted< TYPE, TYPE, TYPE > | |
| typedef cArrayTyped< TYPE, TYPE > | SUPER_t |
| typedef TYPE | KEY_t |
| typedef SUPER_t::REF_t | REF_t |
Protected Types inherited from Gray::cArrayTyped< TYPE, TYPE > | |
| typedef CArray< TYPE, TYPE > | SUPER_t |
| typedef cArrayTyped< TYPE, TYPE > | THIS_t |
| typedef ITERATE_t | iterator |
| typedef ITERATE_t | const_iterator |
| typedef TYPE | ELEM_t |
| What type is stored. More... | |
| typedef TYPE | REF_t |
| How to refer to this? value or ref or pointer? More... | |
Protected Attributes inherited from Gray::cSingletonRegister | |
| HMODULE | m_hModuleLoaded |
| What modules loaded this ? So singletons can be destroyed if DLL/SO unloads. More... | |
Protected Attributes inherited from Gray::CArray< TYPE, ARG_TYPE > | |
| TYPE * | m_pData |
| the actual array of data More... | |
| ITERATE_t | m_nSize |
| Number of elements (upperBound - 1) More... | |
Static Protected Attributes inherited from Gray::cSingletonStatic< TYPE > | |
| static TYPE * | sm_pThe = nullptr |
| pointer to the one and only object of this TYPE. ASSUME automatically init to = nullptr. More... | |
Manage the list of IP addresses that a server might encounter. Block malicious addresses. Override this to provide extra functionality like db persistence. Similar to a load balancer. Multi Thread safe.
|
protected |
|
protected |
|
inline |
manually add an IP from some table ?
|
virtual |
Just create a new cNetAddrTracker but don't add. Allow this to be overloaded.
| cNetAddrTrackPtr GrayLib::cNetAddrMgr::FindAddrTracker | ( | const cNetAddress & | addr, |
| bool | bCreate = true |
||
| ) |
We are being hailed/pinged/connected by some client. Is this a client i know/like/dislike ? Should i block/ignore this incoming client?
| void GrayLib::cNetAddrMgr::onTickAddrArray | ( | ) |
periodically age the list.
Call this once per minute or so. Age out any IP's that should go away.
|
inline |
manually remove an IP and let it progress naturally from here.
| GrayLib::cNetAddrMgr::UNITTEST_FRIEND | ( | cNetAddrTracker | ) |
|
friend |