mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-08-09 20:24:16 +00:00
Abstracted the CDClient tables
There is now an option to utilize shared memory for some CDClient tables by adding `CD_PROVIDER_MEMORY=1` to the CMakeVariables.txt file. Allows masterconfig.ini to specify another run command for the world server, to allow for easier debugging through `valgrind`.
This commit is contained in:
41
dDatabase/CDProvider.h
Normal file
41
dDatabase/CDProvider.h
Normal file
@@ -0,0 +1,41 @@
|
||||
#pragma once
|
||||
|
||||
#include "CDAbstractProvider.h"
|
||||
|
||||
/**
|
||||
* Shared memory provider with CDAbstractSharedMemoryProvider<key, value>
|
||||
*
|
||||
* Depends on the boost::interprocess library — header only
|
||||
*
|
||||
* Requires that CD_PROVIDER_MEMORY is defined and CD_PROVIDER_SQLITE is not defined
|
||||
*/
|
||||
#if defined(CD_PROVIDER_MEMORY) && !defined(CD_PROVIDER_SQLITE)
|
||||
|
||||
#include "CDAbstractSharedMemoryProvider.h"
|
||||
|
||||
#define CD_PROVIDER(provider, key, value) CDAbstractSharedMemoryProvider<key, value>* provider; typedef key CD_KEY; typedef value CD_VALUE
|
||||
#define NEW_CD_PROVIDER(provider, name, parser, size_calculator, cache) provider = new CDAbstractSharedMemoryProvider<CD_KEY, CD_VALUE>(name, parser, size_calculator, cache)
|
||||
|
||||
template<typename KeyType, typename MappedType>
|
||||
using CDProvider = CDAbstractSharedMemoryProvider<KeyType, MappedType>;
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* SQLite provider with CDAbstractSqliteProvider<key, value>
|
||||
*
|
||||
* No extra dependencies
|
||||
*
|
||||
* Requires that CD_PROVIDER_SQLITE or CD_PROVIDER_MEMORY is not defined — the default option
|
||||
*/
|
||||
#if defined(CD_PROVIDER_SQLITE) || !defined(CD_PROVIDER_MEMORY)
|
||||
|
||||
#include "CDAbstractSqliteProvider.h"
|
||||
|
||||
#define CD_PROVIDER(provider, key, value) CDAbstractSqliteProvider<key, value>* provider; typedef key CD_KEY; typedef value CD_VALUE
|
||||
#define NEW_CD_PROVIDER(provider, name, parser, size_calculator, cache) provider = new CDAbstractSqliteProvider<CD_KEY, CD_VALUE>(name, parser, cache)
|
||||
|
||||
template<typename KeyType, typename MappedType>
|
||||
using CDProvider = CDAbstractSqliteProvider<KeyType, MappedType>;
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user