2010-09-12 04:44:37 +02:00
|
|
|
/* -*-mode: C; fill-column: 78; c-basic-offset: 4; -*- */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Copyright 2010 by Eric House (xwords@eehouse.org). All rights reserved.
|
|
|
|
*
|
|
|
|
* 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 2
|
|
|
|
* of the License, or (at your option.
|
|
|
|
*
|
|
|
|
* 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, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _DBMGR_H_
|
|
|
|
#define _DBMGR_H_
|
|
|
|
|
2010-09-21 15:27:31 +02:00
|
|
|
#include <string>
|
|
|
|
|
2010-09-12 04:44:37 +02:00
|
|
|
#include "xwrelay.h"
|
2010-09-23 14:33:27 +02:00
|
|
|
#include "xwrelay_priv.h"
|
2010-09-12 04:44:37 +02:00
|
|
|
#include <libpq-fe.h>
|
|
|
|
|
2010-09-21 15:27:31 +02:00
|
|
|
using namespace std;
|
|
|
|
|
2010-09-12 04:44:37 +02:00
|
|
|
class DBMgr {
|
|
|
|
public:
|
2010-09-12 13:49:03 +02:00
|
|
|
static DBMgr* Get();
|
|
|
|
|
2010-09-12 04:44:37 +02:00
|
|
|
~DBMgr();
|
|
|
|
|
2010-09-15 10:14:28 +02:00
|
|
|
void ClearCIDs( void );
|
|
|
|
|
2010-09-12 04:44:37 +02:00
|
|
|
void AddNew( const char* cookie, const char* connName, CookieID cid,
|
2010-09-15 06:20:11 +02:00
|
|
|
int langCode, int nPlayersT, bool isPublic );
|
2010-09-12 04:44:37 +02:00
|
|
|
|
2010-09-15 23:05:51 +02:00
|
|
|
CookieID FindGame( const char* connName, char* cookieBuf, int bufLen,
|
2010-09-17 03:59:56 +02:00
|
|
|
int* langP, int* nPlayersTP, int* nPlayersHP );
|
2010-09-12 13:49:03 +02:00
|
|
|
CookieID FindOpen( const char* cookie, int lang, int nPlayersT,
|
2010-09-15 23:05:51 +02:00
|
|
|
int nPlayersH, bool wantsPublic,
|
2010-09-17 03:59:56 +02:00
|
|
|
char* connNameBuf, int bufLen, int* nPlayersHP );
|
2010-09-12 13:49:03 +02:00
|
|
|
|
2010-09-23 14:33:27 +02:00
|
|
|
HostID AddDevice( const char* const connName, int nToAdd );
|
|
|
|
void RmDevice( const char* const connName, HostID id );
|
2010-09-15 23:05:51 +02:00
|
|
|
void AddCID( const char* connName, CookieID cid );
|
2010-09-16 13:47:17 +02:00
|
|
|
void ClearCID( const char* connName );
|
2010-09-12 13:49:03 +02:00
|
|
|
|
2010-09-21 15:27:31 +02:00
|
|
|
/* Return list of roomName/playersStillWanted for open public games
|
|
|
|
matching this language and total game size. Will probably want to cache
|
|
|
|
lists locally and only update them every few seconds to avoid to many
|
|
|
|
queries.*/
|
|
|
|
void PublicRooms( int lang, int nPlayers, int* nNames, string& names );
|
|
|
|
|
2010-09-12 04:44:37 +02:00
|
|
|
private:
|
2010-09-12 13:49:03 +02:00
|
|
|
DBMgr();
|
2010-09-15 10:14:28 +02:00
|
|
|
void execSql( const char* query ); /* no-results query */
|
2010-09-23 14:33:27 +02:00
|
|
|
void execSql_locked( const char* query );
|
|
|
|
void readArray_locked( const char* const connName, int arr[] );
|
|
|
|
|
2010-09-12 04:44:37 +02:00
|
|
|
PGconn* m_pgconn;
|
2010-09-17 05:08:32 +02:00
|
|
|
pthread_mutex_t m_dbMutex;
|
2010-09-12 04:44:37 +02:00
|
|
|
}; /* DBMgr */
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|