Files
SLikeNet/DependentExtensions/SQLite3Plugin/Logger/ServerOnly/SQLiteServerLoggerSample.cpp
2025-11-24 14:19:51 +05:30

105 lines
3.7 KiB
C++

/*
* This file was taken from RakNet 4.082.
* Please see licenses/RakNet license.txt for the underlying license and related copyright.
*
* Modified work: Copyright (c) 2016-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.
*/
#include "slikenet/peerinterface.h"
#include "SQLiteServerLoggerPlugin.h"
#include "slikenet/BitStream.h"
#include "slikenet/sleep.h"
#include "slikenet/Kbhit.h"
#include "slikenet/GetTime.h"
#include "slikenet/PacketizedTCP.h"
int main(void)
{
printf("Demonstration of SQLiteServerLoggerPlugin.\n");
SLNet::PacketizedTCP packetizedTCP;
SLNet::SQLiteServerLoggerPlugin loggerPlugin;
// printf("Enable DXT compression (y/n)? ");
// loggerPlugin.SetEnableDXTCompression(_getche()=='y');
loggerPlugin.SetEnableDXTCompression(true);
loggerPlugin.SetSessionManagementMode(SLNet::SQLiteServerLoggerPlugin::CREATE_SHARED_NAMED_DB_HANDLE, true, "");
/*
// printf("Enter path to DB file to create, or enter for memory.\n");
char filePath[256];
Gets(filePath,sizeof(filePath));
filePath[0]=0;
if (filePath[0]==0)
strcpy(filePath, "C:\\EchoChamber\\logger.sqlite");
sqlite3 *database;
if (sqlite3_open_v2(filePath, &database, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 0)!=SQLITE_OK)
return 1;
loggerPlugin.AddDBHandle("loggerDb", database);
*/
packetizedTCP.AttachPlugin(&loggerPlugin);
packetizedTCP.Start(38123,8);
printf("\nStarted.\n");
bool quit=false;
bool isProcessing=false;
SLNet::SQLiteServerLoggerPlugin::ProcessingStatus processingStatusNew;
SLNet::SQLiteServerLoggerPlugin::ProcessingStatus processingStatusOld;
memset(&processingStatusOld,0,sizeof(processingStatusOld));
SLNet::SystemAddress sa;
while (quit==false || isProcessing==true)
{
SLNet::Packet *p;
for (p = packetizedTCP.Receive(); p; packetizedTCP.DeallocatePacket(p), p = packetizedTCP.Receive())
{
;
}
sa = packetizedTCP.HasNewIncomingConnection();
if (sa!= SLNet::UNASSIGNED_SYSTEM_ADDRESS)
printf("New incoming connection from %s\n", sa.ToString(true));
sa = packetizedTCP.HasLostConnection();
if (sa!= SLNet::UNASSIGNED_SYSTEM_ADDRESS)
printf("Lost connection from %s\n", sa.ToString(true));
sa = packetizedTCP.HasFailedConnectionAttempt();
sa = packetizedTCP.HasCompletedConnectionAttempt();
RakSleep(0);
if (_kbhit())
{
if (_getch()=='q')
{
printf("Quitting as soon as threads finish.\n");
packetizedTCP.Stop();
quit=true;
}
}
loggerPlugin.GetProcessingStatus(&processingStatusNew);
if (memcmp(&processingStatusNew,&processingStatusOld,sizeof(processingStatusOld))!=0)
{
printf("buffered=%i cpuWait=%i cpuDo=%i cpuDone=%i sqlWait=%i sqlDo=%i sqlDone=%i\n",
processingStatusNew.packetsBuffered,
processingStatusNew.cpuPendingProcessing,processingStatusNew.cpuNumThreadsWorking,processingStatusNew.cpuProcessedAwaitingDeallocation,
processingStatusNew.sqlPendingProcessing,processingStatusNew.sqlNumThreadsWorking,processingStatusNew.sqlProcessedAwaitingDeallocation
);
memcpy(&processingStatusOld,&processingStatusNew,sizeof(processingStatusOld));
}
if (processingStatusNew.cpuNumThreadsWorking==processingStatusNew.cpuPendingProcessing==processingStatusNew.cpuProcessedAwaitingDeallocation==
processingStatusNew.packetsBuffered==processingStatusNew.sqlNumThreadsWorking==processingStatusNew.sqlPendingProcessing==processingStatusNew.sqlProcessedAwaitingDeallocation==0)
isProcessing=false;
else
isProcessing=true;
}
loggerPlugin.CloseAllSessions();
return 1;
}