/* * Original work: Copyright (c) 2014, Oculus VR, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * RakNet License.txt file in the licenses directory of this source tree. An additional grant * of patent rights can be found in the RakNet Patents.txt file in the same directory. * * * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt) * * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style * license found in the license.txt file in the root directory of this source tree. */ #ifndef __LOBBY_2_SERVER_PGSQL_H #define __LOBBY_2_SERVER_PGSQL_H #include "Lobby2Server.h" class PostgreSQLInterface; namespace SLNet { /// PostgreSQL specific functionality to the lobby server class RAK_DLL_EXPORT Lobby2Server_PGSQL : public SLNet::Lobby2Server { public: Lobby2Server_PGSQL(); virtual ~Lobby2Server_PGSQL(); STATIC_FACTORY_DECLARATIONS(Lobby2Server_PGSQL) /// ConnectTo to the database \a numWorkerThreads times using the connection string /// \param[in] conninfo See the postgre docs /// \return True on success, false on failure. virtual bool ConnectToDB(const char *conninfo, int numWorkerThreads); /// Add input to the worker threads, from a thread already running virtual void AddInputFromThread(Lobby2Message *msg, unsigned int targetUserId, SLNet::RakString targetUserHandle); /// Add output from the worker threads, from a thread already running. This is in addition to the current message, so is used for notifications virtual void AddOutputFromThread(Lobby2Message *msg, unsigned int targetUserId, SLNet::RakString targetUserHandle); protected: virtual void AddInputCommand(Lobby2ServerCommand command); virtual void* PerThreadFactory(void *context); virtual void PerThreadDestructor(void* factoryResult, void *context); virtual void ClearConnections(void); DataStructures::List connectionPool; }; } #endif