summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormadmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-02-02 08:47:19 +0100
committermadmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-02-02 08:47:19 +0100
commit865216b15a4cfb836dddcb9bf66532b4f46497a3 (patch)
tree789c307051468c4aa0bf030e417fff03cac3a2a1
parentRewritten cAuthenticator to make use of the new cIsThread architecture - now authentication runs in a single separate thread for all clients; (diff)
downloadcuberite-865216b15a4cfb836dddcb9bf66532b4f46497a3.tar
cuberite-865216b15a4cfb836dddcb9bf66532b4f46497a3.tar.gz
cuberite-865216b15a4cfb836dddcb9bf66532b4f46497a3.tar.bz2
cuberite-865216b15a4cfb836dddcb9bf66532b4f46497a3.tar.lz
cuberite-865216b15a4cfb836dddcb9bf66532b4f46497a3.tar.xz
cuberite-865216b15a4cfb836dddcb9bf66532b4f46497a3.tar.zst
cuberite-865216b15a4cfb836dddcb9bf66532b4f46497a3.zip
-rw-r--r--source/cMCLogger.cpp84
-rw-r--r--source/cMCLogger.h13
-rw-r--r--source/cPlayer.cpp20
-rw-r--r--source/cServer.cpp22
-rw-r--r--source/cSocket.cpp5
-rw-r--r--source/cSocket.h4
6 files changed, 103 insertions, 45 deletions
diff --git a/source/cMCLogger.cpp b/source/cMCLogger.cpp
index b3f43333f..c1571a195 100644
--- a/source/cMCLogger.cpp
+++ b/source/cMCLogger.cpp
@@ -22,7 +22,6 @@ cMCLogger* cMCLogger::GetInstance()
cMCLogger::cMCLogger()
{
- m_CriticalSection = new cCriticalSection();
AString FileName;
Printf(FileName, "LOG_%d.txt", (int)time(0) );
m_Log = new cLog(FileName);
@@ -37,52 +36,66 @@ cMCLogger::cMCLogger()
cMCLogger::cMCLogger( char* a_File )
{
- m_CriticalSection = new cCriticalSection();
m_Log = new cLog( a_File );
}
+
+
+
+
cMCLogger::~cMCLogger()
{
m_Log->Log("--- Stopped Log ---");
delete m_Log;
- delete m_CriticalSection;
- if( this == s_MCLogger )
- s_MCLogger = 0;
+ if (this == s_MCLogger)
+ s_MCLogger = NULL;
}
+
+
+
+
void cMCLogger::LogSimple(const char* a_Text, int a_LogType /* = 0 */ )
{
switch( a_LogType )
{
- case 0:
- Log(a_Text, 0);
- break;
- case 1:
- Info(a_Text, 0);
- break;
- case 2:
- Warn(a_Text, 0);
- break;
- case 3:
- Error(a_Text, 0);
- break;
- default:
- Log(a_Text, 0);
- break;
+ case 0:
+ Log(a_Text, 0);
+ break;
+ case 1:
+ Info(a_Text, 0);
+ break;
+ case 2:
+ Warn(a_Text, 0);
+ break;
+ case 3:
+ Error(a_Text, 0);
+ break;
+ default:
+ Log(a_Text, 0);
+ break;
}
}
+
+
+
+
void cMCLogger::Log(const char* a_Format, va_list a_ArgList)
{
- m_CriticalSection->Lock();
+ cCSLock Lock(m_CriticalSection);
SetColor( 0x7 ); // 0x7 is default grey color
m_Log->Log( a_Format, a_ArgList );
- m_CriticalSection->Unlock();
+ SetColor(0x07); // revert color back
}
+
+
+
+
void cMCLogger::Info(const char* a_Format, va_list a_ArgList)
{
- m_CriticalSection->Lock();
+ cCSLock Lock(m_CriticalSection);
// for( int i = 0; i < 16; i++)
// {
// for( int j = 0; j < 16; j++ )
@@ -95,25 +108,37 @@ void cMCLogger::Info(const char* a_Format, va_list a_ArgList)
SetColor( 0xe ); // 0xe is yellow
m_Log->Log( a_Format, a_ArgList );
- m_CriticalSection->Unlock();
+ SetColor(0x07); // revert color back
}
+
+
+
+
void cMCLogger::Warn(const char* a_Format, va_list a_ArgList)
{
- m_CriticalSection->Lock();
+ cCSLock Lock(m_CriticalSection);
SetColor( 0xc ); // 0xc is red
m_Log->Log( a_Format, a_ArgList );
- m_CriticalSection->Unlock();
+ SetColor(0x07); // revert color back
}
+
+
+
+
void cMCLogger::Error(const char* a_Format, va_list a_ArgList)
{
- m_CriticalSection->Lock();
+ cCSLock Lock(m_CriticalSection);
SetColor( 0xc0 ); // 0xc0 is red bg and black text
m_Log->Log( a_Format, a_ArgList );
- m_CriticalSection->Unlock();
+ SetColor(0x07); // revert color back
}
+
+
+
+
void cMCLogger::SetColor( unsigned char a_Color )
{
#ifdef _WIN32
@@ -125,6 +150,9 @@ void cMCLogger::SetColor( unsigned char a_Color )
}
+
+
+
//////////////////////////////////////////////////////////////////////////
// Global functions
void LOG(const char* a_Format, ...)
diff --git a/source/cMCLogger.h b/source/cMCLogger.h
index f37c4f642..0d1770e2d 100644
--- a/source/cMCLogger.h
+++ b/source/cMCLogger.h
@@ -1,7 +1,8 @@
+
#pragma once
#ifndef _WIN32
-#include <stdarg.h>
+ #include <stdarg.h>
#endif
class cLog;
@@ -27,7 +28,7 @@ public: //tolua_export
private:
void SetColor( unsigned char a_Color );
- cCriticalSection* m_CriticalSection;
+ cCriticalSection m_CriticalSection;
cLog* m_Log;
static cMCLogger* s_MCLogger;
}; //tolua_export
@@ -35,4 +36,10 @@ private:
extern void LOG(const char* a_Format, ...);
extern void LOGINFO(const char* a_Format, ...);
extern void LOGWARN(const char* a_Format, ...);
-extern void LOGERROR(const char* a_Format, ...); \ No newline at end of file
+extern void LOGERROR(const char* a_Format, ...);
+
+#define LOGWARNING LOGWARN
+
+
+
+
diff --git a/source/cPlayer.cpp b/source/cPlayer.cpp
index 44b27e14a..d336a4616 100644
--- a/source/cPlayer.cpp
+++ b/source/cPlayer.cpp
@@ -920,6 +920,10 @@ const cPlayer::GroupList & cPlayer::GetGroups()
return m_pState->Groups;
}
+
+
+
+
cPlayer::StringList cPlayer::GetResolvedPermissions()
{
StringList Permissions;
@@ -933,17 +937,31 @@ cPlayer::StringList cPlayer::GetResolvedPermissions()
return Permissions;
}
+
+
+
+
const char* cPlayer::GetLoadedWorldName()
{
return m_pState->LoadedWorldName.c_str();
}
+
+
+
+
void cPlayer::UseEquippedItem()
{
if(GetGameMode() != 1) //No damage in creative
+ {
if (GetInventory().GetEquippedItem().DamageItem())
{
LOG("Player %s Broke ID: %i", GetClientHandle()->GetUsername().c_str(), GetInventory().GetEquippedItem().m_ItemID);
GetInventory().RemoveItem( GetInventory().GetEquippedItem());
}
-} \ No newline at end of file
+ }
+}
+
+
+
+
diff --git a/source/cServer.cpp b/source/cServer.cpp
index 44dd365c2..f14a419a9 100644
--- a/source/cServer.cpp
+++ b/source/cServer.cpp
@@ -295,17 +295,23 @@ void cServer::StartListenClient()
{
cSocket SClient = m_pState->SListenClient.Accept();
- if( SClient.IsValid() )
+ if (!SClient.IsValid())
{
- char * ClientIP = SClient.GetIPString();
- if( ClientIP == 0 )
- return;
+ return;
+ }
+
+ const AString & ClientIP = SClient.GetIPString();
+ if (ClientIP.empty())
+ {
+ LOGWARN("cServer: A client connected, but didn't present its IP, disconnecting.");
+ SClient.CloseSocket();
+ return;
+ }
- LOG("%s connected!", ClientIP);
+ LOG("%s connected!", ClientIP.c_str());
- cClientHandle *NewHandle = new cClientHandle( SClient );
- m_pState->Clients.push_back( NewHandle ); // TODO - lock list
- }
+ cClientHandle *NewHandle = new cClientHandle( SClient );
+ m_pState->Clients.push_back( NewHandle ); // TODO - lock list
}
diff --git a/source/cSocket.cpp b/source/cSocket.cpp
index bd26fb274..0945d170e 100644
--- a/source/cSocket.cpp
+++ b/source/cSocket.cpp
@@ -19,7 +19,6 @@
cSocket::cSocket( xSocket a_Socket )
: m_Socket( a_Socket )
- , m_IPString( 0 )
{
}
@@ -59,9 +58,9 @@ void cSocket::CloseSocket()
closesocket(m_Socket);
#else
if( shutdown(m_Socket, SHUT_RDWR) != 0 )//SD_BOTH);
- LOGWARN("Error on shutting down socket (%s)", m_IPString );
+ LOGWARN("Error on shutting down socket (%s)", m_IPString.c_str() );
if( close(m_Socket) != 0 )
- LOGWARN("Error closing socket (%s)", m_IPString );
+ LOGWARN("Error closing socket (%s)", m_IPString.c_str() );
#endif
}
diff --git a/source/cSocket.h b/source/cSocket.h
index 44c3bea4b..395815389 100644
--- a/source/cSocket.h
+++ b/source/cSocket.h
@@ -55,9 +55,9 @@ public:
cSocket Accept();
int Receive( char* a_Buffer, unsigned int a_Length, unsigned int a_Flags );
- char* GetIPString() { return m_IPString; }
+ const AString & GetIPString(void) const { return m_IPString; }
private:
xSocket m_Socket;
- char* m_IPString;
+ AString m_IPString;
}; \ No newline at end of file