mirror of
https://github.com/Karaka-Management/cOMS.git
synced 2026-02-10 07:38:40 +00:00
bug fixes
This commit is contained in:
parent
9a2c89e12b
commit
eb4aa2441c
|
|
@ -13,7 +13,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <mysql.h>
|
#include <mysql/mysql.h>
|
||||||
|
|
||||||
#include "ConnectionAbstract.h"
|
#include "ConnectionAbstract.h"
|
||||||
#include "DbConnectionConfig.h"
|
#include "DbConnectionConfig.h"
|
||||||
|
|
@ -33,7 +33,7 @@ namespace DataStorage {
|
||||||
{
|
{
|
||||||
this->dbdata = dbdata == NULL ? this->dbdata : *dbdata;
|
this->dbdata = dbdata == NULL ? this->dbdata : *dbdata;
|
||||||
|
|
||||||
if (this->dbdata.db == NULL
|
if (this->dbdata.db == DatabaseType::UNDEFINED
|
||||||
|| this->dbdata.host == NULL
|
|| this->dbdata.host == NULL
|
||||||
|| this->dbdata.port == 0
|
|| this->dbdata.port == 0
|
||||||
|| this->dbdata.database == NULL
|
|| this->dbdata.database == NULL
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace DataStorage {
|
||||||
{
|
{
|
||||||
this->dbdata = dbdata == NULL ? this->dbdata : *dbdata;
|
this->dbdata = dbdata == NULL ? this->dbdata : *dbdata;
|
||||||
|
|
||||||
if (this->dbdata.db == NULL
|
if (this->dbdata.db == DatabaseType::UNDEFINED
|
||||||
|| this->dbdata.host == NULL
|
|| this->dbdata.host == NULL
|
||||||
|| this->dbdata.port == 0
|
|| this->dbdata.port == 0
|
||||||
|| this->dbdata.database == NULL
|
|| this->dbdata.database == NULL
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace DataStorage {
|
||||||
{
|
{
|
||||||
this->dbdata = dbdata == NULL ? this->dbdata : *dbdata;
|
this->dbdata = dbdata == NULL ? this->dbdata : *dbdata;
|
||||||
|
|
||||||
if (this->dbdata.db == NULL
|
if (this->dbdata.db == DatabaseType::UNDEFINED
|
||||||
|| this->dbdata.database == NULL
|
|| this->dbdata.database == NULL
|
||||||
) {
|
) {
|
||||||
this->status = DatabaseStatus::FAILURE;
|
this->status = DatabaseStatus::FAILURE;
|
||||||
|
|
|
||||||
189
Hash/MeowHash.h
189
Hash/MeowHash.h
|
|
@ -115,90 +115,92 @@
|
||||||
#ifndef HASH_MEOW_H
|
#ifndef HASH_MEOW_H
|
||||||
#define HASH_MEOW_H
|
#define HASH_MEOW_H
|
||||||
|
|
||||||
namespace Hash {
|
// #include <immintrin.h>
|
||||||
namespace Meow {
|
|
||||||
#define MEOW_HASH_VERSION 5
|
|
||||||
#define MEOW_HASH_VERSION_NAME "0.5/calico"
|
|
||||||
|
|
||||||
#if !defined(meow_u8)
|
#if !defined(meow_u8)
|
||||||
#if _MSC_VER
|
#define MEOW_HASH_VERSION 5
|
||||||
#if !defined(__clang__)
|
#define MEOW_HASH_VERSION_NAME "0.5/calico"
|
||||||
#define INSTRUCTION_REORDER_BARRIER _ReadWriteBarrier()
|
|
||||||
#else
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <intrin.h>
|
#if _MSC_VER
|
||||||
#else
|
#if !defined(__clang__)
|
||||||
#include <x86intrin.h>
|
#define INSTRUCTION_REORDER_BARRIER _ReadWriteBarrier()
|
||||||
#endif
|
#else
|
||||||
|
|
||||||
#define meow_u8 char unsigned
|
|
||||||
#define meow_u64 long long unsigned
|
|
||||||
#define meow_u128 __m128i
|
|
||||||
|
|
||||||
#if __x86_64__ || _M_AMD64
|
|
||||||
#define meow_umm long long unsigned
|
|
||||||
#define MeowU64From(A, I) (_mm_extract_epi64((A), (I)))
|
|
||||||
#elif __i386__ || _M_IX86
|
|
||||||
#define meow_umm int unsigned
|
|
||||||
#define MeowU64From(A, I) (*(meow_u64 *)&(A))
|
|
||||||
#else
|
|
||||||
#error Cannot determine architecture to use!
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MeowU32From(A, I) (_mm_extract_epi32((A), (I)))
|
|
||||||
#define MeowHashesAreEqual(A, B) (_mm_movemask_epi8(_mm_cmpeq_epi8((A), (B))) == 0xFFFF)
|
|
||||||
|
|
||||||
#if !defined INSTRUCTION_REORDER_BARRIER
|
|
||||||
#define INSTRUCTION_REORDER_BARRIER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined MEOW_PAGESIZE
|
|
||||||
#define MEOW_PAGESIZE 4096
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined MEOW_PREFETCH
|
|
||||||
#define MEOW_PREFETCH 4096
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined MEOW_PREFETCH_LIMIT
|
|
||||||
#define MEOW_PREFETCH_LIMIT 0x3ff
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define prefetcht0(A) _mm_prefetch((char *)(A), _MM_HINT_T0)
|
#include <intrin.h>
|
||||||
#define movdqu(A, B) A = _mm_loadu_si128((__m128i *)(B))
|
#else
|
||||||
#define movdqu_mem(A, B) _mm_storeu_si128((__m128i *)(A), B)
|
#include <x86intrin.h>
|
||||||
#define movq(A, B) A = _mm_set_epi64x(0, B);
|
#endif
|
||||||
#define aesdec(A, B) A = _mm_aesdec_si128(A, B)
|
|
||||||
#define pshufb(A, B) A = _mm_shuffle_epi8(A, B)
|
|
||||||
#define pxor(A, B) A = _mm_xor_si128(A, B)
|
|
||||||
#define paddq(A, B) A = _mm_add_epi64(A, B)
|
|
||||||
#define pand(A, B) A = _mm_and_si128(A, B)
|
|
||||||
#define palignr(A, B, i) A = _mm_alignr_epi8(A, B, i)
|
|
||||||
#define pxor_clear(A, B) A = _mm_setzero_si128(); // NOTE(casey): pxor_clear is a nonsense thing that is only here because compilers don't detect xor(a, a) is clearing a :(
|
|
||||||
|
|
||||||
#define MEOW_MIX_REG(r1, r2, r3, r4, r5, i1, i2, i3, i4) \
|
#define meow_u8 char unsigned
|
||||||
aesdec(r1, r2); \
|
#define meow_u64 long long unsigned
|
||||||
INSTRUCTION_REORDER_BARRIER; \
|
#define meow_u128 __m128i
|
||||||
paddq(r3, i1); \
|
|
||||||
pxor(r2, i2); \
|
|
||||||
aesdec(r2, r4); \
|
|
||||||
INSTRUCTION_REORDER_BARRIER; \
|
|
||||||
paddq(r5, i3); \
|
|
||||||
pxor(r4, i4);
|
|
||||||
|
|
||||||
#define MEOW_MIX(r1, r2, r3, r4, r5, ptr) \
|
#if __x86_64__ || _M_AMD64
|
||||||
MEOW_MIX_REG(r1, r2, r3, r4, r5, _mm_loadu_si128( (__m128i *) ((ptr) + 15) ), _mm_loadu_si128( (__m128i *) ((ptr) + 0) ), _mm_loadu_si128( (__m128i *) ((ptr) + 1) ), _mm_loadu_si128( (__m128i *) ((ptr) + 16) ))
|
#define meow_umm long long unsigned
|
||||||
|
#define MeowU64From(A, I) (_mm_extract_epi64((A), (I)))
|
||||||
|
#elif __i386__ || _M_IX86
|
||||||
|
#define meow_umm int unsigned
|
||||||
|
#define MeowU64From(A, I) (*(meow_u64 *)&(A))
|
||||||
|
#else
|
||||||
|
#error Cannot determine architecture to use!
|
||||||
|
#endif
|
||||||
|
|
||||||
#define MEOW_SHUFFLE(r1, r2, r3, r4, r5, r6) \
|
#define MeowU32From(A, I) (_mm_extract_epi32((A), (I)))
|
||||||
aesdec(r1, r4); \
|
#define MeowHashesAreEqual(A, B) (_mm_movemask_epi8(_mm_cmpeq_epi8((A), (B))) == 0xFFFF)
|
||||||
paddq(r2, r5); \
|
|
||||||
pxor(r4, r6); \
|
|
||||||
aesdec(r4, r2); \
|
|
||||||
paddq(r5, r6); \
|
|
||||||
pxor(r2, r3)
|
|
||||||
|
|
||||||
|
#if !defined INSTRUCTION_REORDER_BARRIER
|
||||||
|
#define INSTRUCTION_REORDER_BARRIER
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined MEOW_PAGESIZE
|
||||||
|
#define MEOW_PAGESIZE 4096
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined MEOW_PREFETCH
|
||||||
|
#define MEOW_PREFETCH 4096
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined MEOW_PREFETCH_LIMIT
|
||||||
|
#define MEOW_PREFETCH_LIMIT 0x3ff
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define prefetcht0(A) _mm_prefetch((char *)(A), _MM_HINT_T0)
|
||||||
|
#define movdqu(A, B) A = _mm_loadu_si128((__m128i *)(B))
|
||||||
|
#define movdqu_mem(A, B) _mm_storeu_si128((__m128i *)(A), B)
|
||||||
|
#define movq(A, B) A = _mm_set_epi64x(0, B);
|
||||||
|
#define aesdec(A, B) A = _mm_aesdec_si128(A, B)
|
||||||
|
#define pshufb(A, B) A = _mm_shuffle_epi8(A, B)
|
||||||
|
#define pxor(A, B) A = _mm_xor_si128(A, B)
|
||||||
|
#define paddq(A, B) A = _mm_add_epi64(A, B)
|
||||||
|
#define pand(A, B) A = _mm_and_si128(A, B)
|
||||||
|
#define palignr(A, B, i) A = _mm_alignr_epi8(A, B, i)
|
||||||
|
#define pxor_clear(A, B) A = _mm_setzero_si128(); // NOTE(casey): pxor_clear is a nonsense thing that is only here because compilers don't detect xor(a, a) is clearing a :(
|
||||||
|
|
||||||
|
#define MEOW_MIX_REG(r1, r2, r3, r4, r5, i1, i2, i3, i4) \
|
||||||
|
aesdec(r1, r2); \
|
||||||
|
INSTRUCTION_REORDER_BARRIER; \
|
||||||
|
paddq(r3, i1); \
|
||||||
|
pxor(r2, i2); \
|
||||||
|
aesdec(r2, r4); \
|
||||||
|
INSTRUCTION_REORDER_BARRIER; \
|
||||||
|
paddq(r5, i3); \
|
||||||
|
pxor(r4, i4);
|
||||||
|
|
||||||
|
#define MEOW_MIX(r1, r2, r3, r4, r5, ptr) \
|
||||||
|
MEOW_MIX_REG(r1, r2, r3, r4, r5, _mm_loadu_si128( (__m128i *) ((ptr) + 15) ), _mm_loadu_si128( (__m128i *) ((ptr) + 0) ), _mm_loadu_si128( (__m128i *) ((ptr) + 1) ), _mm_loadu_si128( (__m128i *) ((ptr) + 16) ))
|
||||||
|
|
||||||
|
#define MEOW_SHUFFLE(r1, r2, r3, r4, r5, r6) \
|
||||||
|
aesdec(r1, r4); \
|
||||||
|
paddq(r2, r5); \
|
||||||
|
pxor(r4, r6); \
|
||||||
|
aesdec(r4, r2); \
|
||||||
|
paddq(r5, r6); \
|
||||||
|
pxor(r2, r3)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace Hash {
|
||||||
|
namespace Meow {
|
||||||
#if MEOW_DUMP
|
#if MEOW_DUMP
|
||||||
struct meow_dump
|
struct meow_dump
|
||||||
{
|
{
|
||||||
|
|
@ -700,23 +702,6 @@ namespace Hash {
|
||||||
return(xmm0);
|
return(xmm0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef INSTRUCTION_REORDER_BARRIER
|
|
||||||
#undef prefetcht0
|
|
||||||
#undef movdqu
|
|
||||||
#undef movdqu_mem
|
|
||||||
#undef movq
|
|
||||||
#undef aesdec
|
|
||||||
#undef pshufb
|
|
||||||
#undef pxor
|
|
||||||
#undef paddq
|
|
||||||
#undef pand
|
|
||||||
#undef palignr
|
|
||||||
#undef pxor_clear
|
|
||||||
#undef MEOW_MIX
|
|
||||||
#undef MEOW_MIX_REG
|
|
||||||
#undef MEOW_SHUFFLE
|
|
||||||
#undef MEOW_DUMP_STATE
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// NOTE(casey): If you need to create your own seed from non-random data, you can use MeowExpandSeed
|
// NOTE(casey): If you need to create your own seed from non-random data, you can use MeowExpandSeed
|
||||||
// to create a seed which you then store for repeated use. It is _expensive_ to generate the seed,
|
// to create a seed which you then store for repeated use. It is _expensive_ to generate the seed,
|
||||||
|
|
@ -741,4 +726,22 @@ namespace Hash {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef INSTRUCTION_REORDER_BARRIER
|
||||||
|
#undef prefetcht0
|
||||||
|
#undef movdqu
|
||||||
|
#undef movdqu_mem
|
||||||
|
#undef movq
|
||||||
|
#undef aesdec
|
||||||
|
#undef pshufb
|
||||||
|
#undef pxor
|
||||||
|
#undef paddq
|
||||||
|
#undef pand
|
||||||
|
#undef palignr
|
||||||
|
#undef pxor_clear
|
||||||
|
#undef MEOW_MIX
|
||||||
|
#undef MEOW_MIX_REG
|
||||||
|
#undef MEOW_SHUFFLE
|
||||||
|
#undef MEOW_DUMP_STATE
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
Loading…
Reference in New Issue
Block a user