oily woily sql
This commit is contained in:
parent
f448d18e9e
commit
846bc6ef2f
8 changed files with 73 additions and 7 deletions
|
@ -22,7 +22,7 @@ class Entrypoint {
|
|||
private static initStatus = {
|
||||
keyInit: false,
|
||||
fileCache: false
|
||||
}
|
||||
};
|
||||
|
||||
private static initCheck(): void {
|
||||
var done = true;
|
||||
|
|
|
@ -12,7 +12,7 @@ if(CMAKE_COMPILER_IS_GNUCXX)
|
|||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -static")
|
||||
endif()
|
||||
|
||||
add_executable(server ${server_src})
|
||||
add_executable(server ${server_src} src/db/_init_sql.cpp)
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
target_link_libraries(server wsock32 ws2_32)
|
||||
|
|
|
@ -18,7 +18,7 @@ sosc::Packet sosc::cgc::KeyExchange::GenerateRequest() const {
|
|||
}
|
||||
|
||||
bool sosc::cgc::KeyExchange::ParseRequest
|
||||
(const Packet& request, Packet* response)
|
||||
(const Packet& request, Packet* response, uint8_t id)
|
||||
{
|
||||
if(request.GetId() != 1 || request.RegionCount() != 3)
|
||||
return false;
|
||||
|
@ -33,7 +33,7 @@ bool sosc::cgc::KeyExchange::ParseRequest
|
|||
|
||||
this->private_key = BigUInt::ModPow(public_key, this->secret, modulus);
|
||||
public_key = BigUInt::ModPow(generator, this->secret, modulus);
|
||||
*response = Packet(1, { public_key.ToString() });
|
||||
*response = Packet(id, { public_key.ToString() });
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ public:
|
|||
KeyExchange();
|
||||
|
||||
Packet GenerateRequest() const;
|
||||
bool ParseRequest(const Packet& request, Packet* response);
|
||||
bool ParseRequest(const Packet& request, Packet* response, uint8_t id);
|
||||
bool ParseResponse(const Packet& response);
|
||||
|
||||
inline bool Succeeded() const {
|
||||
|
|
10
server/src/db/_init_sql.cpp
Normal file
10
server/src/db/_init_sql.cpp
Normal file
|
@ -0,0 +1,10 @@
|
|||
#include <vector>
|
||||
|
||||
const char* _mem_db_sql =
|
||||
"CREATE TABLE ";
|
||||
|
||||
const std::vector<const char*> _hard_db_sql = {
|
||||
/** START MIGRATION 0 **/
|
||||
"CREATE TABLE ",
|
||||
/** END MIGRATION 0 **/
|
||||
};
|
|
@ -1 +1,31 @@
|
|||
#include "database.hpp"
|
||||
#include "_init_sql.cpp"
|
||||
|
||||
static struct {
|
||||
bool ready = false;
|
||||
|
||||
sqlite3* mem_db;
|
||||
sqlite3* hard_db;
|
||||
} _ctx;
|
||||
|
||||
void sosc::db::init_databases() {
|
||||
if(_ctx.ready)
|
||||
return;
|
||||
|
||||
sqlite3_open(":memory:", &_ctx.mem_db);
|
||||
sqlite3_exec(_ctx.mem_db, _mem_db_sql, nullptr, nullptr, nullptr);
|
||||
|
||||
sqlite3_open("scape.db", &_ctx.hard_db);
|
||||
|
||||
|
||||
_ctx.ready = true;
|
||||
}
|
||||
|
||||
void sosc::db::close_databases() {
|
||||
if(!_ctx.ready)
|
||||
return;
|
||||
|
||||
sqlite3_close(_ctx.mem_db);
|
||||
sqlite3_close(_ctx.hard_db);
|
||||
_ctx.ready = false;
|
||||
}
|
|
@ -2,10 +2,33 @@
|
|||
#define SOSC_DATABASE_H
|
||||
|
||||
#include "sqlite/sqlite3.h"
|
||||
#include <vector>
|
||||
|
||||
namespace sosc {
|
||||
namespace db {
|
||||
|
||||
class ResultSet {
|
||||
public:
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
class Query {
|
||||
public:
|
||||
template<typename T>
|
||||
static T ScalarOnce();
|
||||
static void NonQueryOnce();
|
||||
static ResultSet Once();
|
||||
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
// THE FOLLOWING ARE NOT THREAD SAFE !!
|
||||
// CALL THEM ONLY WHEN MASTER POOL IS INACTIVE
|
||||
void init_databases();
|
||||
void close_databases();
|
||||
}}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -18,13 +18,16 @@ bool sosc::MasterIntra::Process() {
|
|||
return this->Close(Packet(EncryptionError, { "\x01" }));
|
||||
|
||||
Packet response;
|
||||
if(!this->key.ParseRequest(pck, &response))
|
||||
if(!this->key.ParseRequest(pck, &response, KeyExchange))
|
||||
return this->Close(Packet(EncryptionError, { "\x02" }));
|
||||
|
||||
this->sock.Send(response);
|
||||
break;
|
||||
case Authentication:
|
||||
|
||||
break;
|
||||
case StatusUpdate:
|
||||
|
||||
break;
|
||||
default:
|
||||
this->Close();
|
||||
|
|
Loading…
Reference in a new issue