aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/shared')
-rwxr-xr-xsrc/server/shared/Common.h25
-rwxr-xr-xsrc/server/shared/Cryptography/ARC4.h2
-rwxr-xr-xsrc/server/shared/Cryptography/Authentication/AuthCrypt.cpp3
-rwxr-xr-xsrc/server/shared/Cryptography/Authentication/AuthCrypt.h1
-rwxr-xr-xsrc/server/shared/Cryptography/BigNumber.cpp23
-rwxr-xr-xsrc/server/shared/Cryptography/BigNumber.h2
-rwxr-xr-xsrc/server/shared/Cryptography/HMACSHA1.h3
-rwxr-xr-xsrc/server/shared/Cryptography/SHA1.h4
-rwxr-xr-xsrc/server/shared/Database/Implementation/CharacterDatabase.cpp16
-rwxr-xr-xsrc/server/shared/Database/Implementation/CharacterDatabase.h3
-rwxr-xr-xsrc/server/shared/Dynamic/TypeContainer.h10
-rwxr-xr-xsrc/server/shared/Dynamic/TypeContainerFunctions.h51
-rwxr-xr-xsrc/server/shared/Dynamic/UnorderedMap.h1
-rwxr-xr-xsrc/server/shared/Logging/Log.cpp66
-rwxr-xr-xsrc/server/shared/Logging/Log.h6
-rwxr-xr-xsrc/server/shared/Utilities/Util.cpp7
16 files changed, 127 insertions, 96 deletions
diff --git a/src/server/shared/Common.h b/src/server/shared/Common.h
index ffecf020d24..bc9c0c62ccc 100755
--- a/src/server/shared/Common.h
+++ b/src/server/shared/Common.h
@@ -146,12 +146,12 @@ inline float finiteAlways(float f) { return finite(f) ? f : 0.0f; }
enum TimeConstants
{
- MINUTE = 60,
- HOUR = MINUTE*60,
- DAY = HOUR*24,
- WEEK = DAY*7,
- MONTH = DAY*30,
- YEAR = MONTH*12,
+ MINUTE = 60,
+ HOUR = MINUTE*60,
+ DAY = HOUR*24,
+ WEEK = DAY*7,
+ MONTH = DAY*30,
+ YEAR = MONTH*12,
IN_MILLISECONDS = 1000
};
@@ -203,4 +203,17 @@ typedef std::vector<std::string> StringVector;
#endif
#define MAX_QUERY_LEN 32*1024
+
+#define TRINITY_GUARD(MUTEX, LOCK) \
+ ACE_Guard< MUTEX > TRINITY_GUARD_OBJECT (LOCK); \
+ if (TRINITY_GUARD_OBJECT.locked() == 0) ASSERT(false);
+
+# define TRINITY_WRITE_GUARD(MUTEX, LOCK) \
+ ACE_Write_Guard< MUTEX > TRINITY_GUARD_OBJECT (LOCK); \
+ if (TRINITY_GUARD_OBJECT.locked() == 0) ASSERT(false);
+
+# define TRINITY_READ_GUARD(MUTEX, LOCK) \
+ ACE_Read_Guard< MUTEX > TRINITY_GUARD_OBJECT (LOCK); \
+ if (TRINITY_GUARD_OBJECT.locked() == 0) ASSERT(false);
+
#endif
diff --git a/src/server/shared/Cryptography/ARC4.h b/src/server/shared/Cryptography/ARC4.h
index 777dbb8cb99..abf753be02f 100755
--- a/src/server/shared/Cryptography/ARC4.h
+++ b/src/server/shared/Cryptography/ARC4.h
@@ -19,7 +19,7 @@
#ifndef _AUTH_SARC4_H
#define _AUTH_SARC4_H
-#include "Common.h"
+#include "Define.h"
#include <openssl/evp.h>
class ARC4
diff --git a/src/server/shared/Cryptography/Authentication/AuthCrypt.cpp b/src/server/shared/Cryptography/Authentication/AuthCrypt.cpp
index 146f4e992b7..a2db02dfbe3 100755
--- a/src/server/shared/Cryptography/Authentication/AuthCrypt.cpp
+++ b/src/server/shared/Cryptography/Authentication/AuthCrypt.cpp
@@ -18,12 +18,11 @@
#include "AuthCrypt.h"
#include "Cryptography/HMACSHA1.h"
-#include "Logging/Log.h"
#include "Cryptography/BigNumber.h"
AuthCrypt::AuthCrypt() : _clientDecrypt(SHA_DIGEST_LENGTH), _serverEncrypt(SHA_DIGEST_LENGTH)
+ , _initialized(false)
{
- _initialized = false;
}
AuthCrypt::~AuthCrypt()
diff --git a/src/server/shared/Cryptography/Authentication/AuthCrypt.h b/src/server/shared/Cryptography/Authentication/AuthCrypt.h
index 0304ef6b69e..e7463b0d962 100755
--- a/src/server/shared/Cryptography/Authentication/AuthCrypt.h
+++ b/src/server/shared/Cryptography/Authentication/AuthCrypt.h
@@ -19,7 +19,6 @@
#ifndef _AUTHCRYPT_H
#define _AUTHCRYPT_H
-#include <Common.h>
#include "Cryptography/ARC4.h"
class BigNumber;
diff --git a/src/server/shared/Cryptography/BigNumber.cpp b/src/server/shared/Cryptography/BigNumber.cpp
index 6149a680594..76cb74d5e13 100755
--- a/src/server/shared/Cryptography/BigNumber.cpp
+++ b/src/server/shared/Cryptography/BigNumber.cpp
@@ -18,31 +18,30 @@
#include "Cryptography/BigNumber.h"
#include <openssl/bn.h>
+#include <openssl/crypto.h>
#include <algorithm>
BigNumber::BigNumber()
-{
- _bn = BN_new();
- _array = NULL;
-}
+ : _bn(BN_new())
+ , _array(NULL)
+{ }
BigNumber::BigNumber(const BigNumber &bn)
-{
- _bn = BN_dup(bn._bn);
- _array = NULL;
-}
+ : _bn(BN_dup(bn._bn))
+ , _array(NULL)
+{ }
BigNumber::BigNumber(uint32 val)
+ : _bn(BN_new())
+ , _array(NULL)
{
- _bn = BN_new();
BN_set_word(_bn, val);
- _array = NULL;
}
BigNumber::~BigNumber()
{
BN_free(_bn);
- if (_array) delete[] _array;
+ delete[] _array;
}
void BigNumber::SetDword(uint32 val)
@@ -76,6 +75,8 @@ void BigNumber::SetRand(int numbits)
BigNumber BigNumber::operator=(const BigNumber &bn)
{
+ if (this == &bn)
+ return *this;
BN_copy(_bn, bn._bn);
return *this;
}
diff --git a/src/server/shared/Cryptography/BigNumber.h b/src/server/shared/Cryptography/BigNumber.h
index 485d4ced470..eb450c27777 100755
--- a/src/server/shared/Cryptography/BigNumber.h
+++ b/src/server/shared/Cryptography/BigNumber.h
@@ -19,7 +19,7 @@
#ifndef _AUTH_BIGNUMBER_H
#define _AUTH_BIGNUMBER_H
-#include "Common.h"
+#include "Define.h"
struct bignum_st;
diff --git a/src/server/shared/Cryptography/HMACSHA1.h b/src/server/shared/Cryptography/HMACSHA1.h
index 180ac6f4262..2d6e0c276a8 100755
--- a/src/server/shared/Cryptography/HMACSHA1.h
+++ b/src/server/shared/Cryptography/HMACSHA1.h
@@ -19,7 +19,8 @@
#ifndef _AUTH_HMAC_H
#define _AUTH_HMAC_H
-#include "Common.h"
+#include "Define.h"
+#include <string>
#include <openssl/hmac.h>
#include <openssl/sha.h>
diff --git a/src/server/shared/Cryptography/SHA1.h b/src/server/shared/Cryptography/SHA1.h
index 27e2d3290d0..9cb9b7b90f9 100755
--- a/src/server/shared/Cryptography/SHA1.h
+++ b/src/server/shared/Cryptography/SHA1.h
@@ -19,9 +19,9 @@
#ifndef _AUTH_SHA1_H
#define _AUTH_SHA1_H
-#include "Common.h"
+#include "Define.h"
+#include <string>
#include <openssl/sha.h>
-#include <openssl/crypto.h>
class BigNumber;
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
index 816dc25f1b3..f93c4a70d7c 100755
--- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
@@ -300,4 +300,20 @@ void CharacterDatabaseConnection::DoPrepareStatements()
// For loading and deleting expired auctions at startup
PREPARE_STATEMENT(CHAR_LOAD_EXPIRED_AUCTIONS, "SELECT id, auctioneerguid, itemguid, itemEntry, itemowner, buyoutprice, time, buyguid, lastbid, startbid, deposit FROM auctionhouse ah INNER JOIN item_instance ii ON ii.guid = ah.itemguid WHERE ah.time <= ?", CONNECTION_SYNCH)
+ // Player saving
+ PREPARE_STATEMENT(CHAR_ADD_CHARACTER, "INSERT INTO characters (guid, account, name, race, class, gender, level, xp, money, playerBytes, playerBytes2, playerFlags, "
+ "map, instance_id, instance_mode_mask, position_x, position_y, position_z, orientation, "
+ "taximask, cinematic, "
+ "totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, resettalents_time, "
+ "extra_flags, stable_slots, at_login, zone, "
+ "death_expire_time, taxi_path, arenaPoints, totalHonorPoints, todayHonorPoints, yesterdayHonorPoints, totalKills, "
+ "todayKills, yesterdayKills, chosenTitle, knownCurrencies, watchedFaction, drunk, health, power1, power2, power3, "
+ "power4, power5, power6, power7, latency, speccount, activespec, exploredZones, equipmentCache, ammoId, knownTitles, actionBars, grantableLevels) VALUES "
+ "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", CONNECTION_ASYNC);
+ PREPARE_STATEMENT(CHAR_UPD_CHARACTER, "UPDATE characters SET name=?,race=?,class=?,gender=?,level=?,xp=?,money=?,playerBytes=?,playerBytes2=?,playerFlags=?,"
+ "map=?,instance_id=?,instance_mode_mask=?,position_x=?,position_y=?,position_z=?,orientation=?,taximask=?,cinematic=?,totaltime=?,leveltime=?,rest_bonus=?,"
+ "logout_time=?,is_logout_resting=?,resettalents_cost=?,resettalents_time=?,extra_flags=?,stable_slots=?,at_login=?,zone=?,death_expire_time=?,taxi_path=?,"
+ "arenaPoints=?,totalHonorPoints=?,todayHonorPoints=?,yesterdayHonorPoints=?,totalKills=?,todayKills=?,yesterdayKills=?,chosenTitle=?,knownCurrencies=?,"
+ "watchedFaction=?,drunk=?,health=?,power1=?,power2=?,power3=?,power4=?,power5=?,power6=?,power7=?,latency=?,speccount=?,activespec=?,exploredZones=?,"
+ "equipmentCache=?,ammoId=?,knownTitles=?,actionBars=?,grantableLevels=?,online=? WHERE guid=?", CONNECTION_ASYNC);
}
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h
index dd752914138..f06a17aa924 100755
--- a/src/server/shared/Database/Implementation/CharacterDatabase.h
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.h
@@ -275,6 +275,9 @@ enum CharacterDatabaseStatements
CHAR_LOAD_EXPIRED_AUCTIONS,
+ CHAR_ADD_CHARACTER,
+ CHAR_UPD_CHARACTER,
+
MAX_CHARACTERDATABASE_STATEMENTS,
};
diff --git a/src/server/shared/Dynamic/TypeContainer.h b/src/server/shared/Dynamic/TypeContainer.h
index 0fb3eb25347..7f6f5fa661c 100755
--- a/src/server/shared/Dynamic/TypeContainer.h
+++ b/src/server/shared/Dynamic/TypeContainer.h
@@ -108,11 +108,11 @@ class TypeMapContainer
}
/// Removes the object from the container, and returns the removed object
- template<class SPECIFIC_TYPE> bool remove(SPECIFIC_TYPE* obj)
- {
- SPECIFIC_TYPE* t = Trinity::Remove(i_elements, obj);
- return (t != NULL);
- }
+ //template<class SPECIFIC_TYPE> bool remove(SPECIFIC_TYPE* obj)
+ //{
+ // SPECIFIC_TYPE* t = Trinity::Remove(i_elements, obj);
+ // return (t != NULL);
+ //}
ContainerMapList<OBJECT_TYPES> & GetElements(void) { return i_elements; }
const ContainerMapList<OBJECT_TYPES> & GetElements(void) const { return i_elements;}
diff --git a/src/server/shared/Dynamic/TypeContainerFunctions.h b/src/server/shared/Dynamic/TypeContainerFunctions.h
index 981cd82197f..9bfbf47da93 100755
--- a/src/server/shared/Dynamic/TypeContainerFunctions.h
+++ b/src/server/shared/Dynamic/TypeContainerFunctions.h
@@ -62,7 +62,7 @@ namespace Trinity
template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Insert(ContainerMapList<SPECIFIC_TYPE> &elements, SPECIFIC_TYPE *obj)
{
//elements._element[hdl] = obj;
- obj->GetGridRef().link(&elements._element, obj);
+ obj->AddToGrid(elements._element);
return obj;
};
@@ -84,31 +84,30 @@ namespace Trinity
return (t != NULL ? t : Insert(elements._TailElements, obj));
}
- // non-const remove method
- template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Remove(ContainerMapList<SPECIFIC_TYPE> & /*elements*/, SPECIFIC_TYPE *obj)
- {
- obj->GetGridRef().unlink();
- return obj;
- }
-
- template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Remove(ContainerMapList<TypeNull> &/*elements*/, SPECIFIC_TYPE * /*obj*/)
- {
- return NULL;
- }
-
- // this is a missed
- template<class SPECIFIC_TYPE, class T> SPECIFIC_TYPE* Remove(ContainerMapList<T> &/*elements*/, SPECIFIC_TYPE * /*obj*/)
- {
- return NULL; // a missed
- }
-
- template<class SPECIFIC_TYPE, class T, class H> SPECIFIC_TYPE* Remove(ContainerMapList<TypeList<H, T> > &elements, SPECIFIC_TYPE *obj)
- {
- // The head element is bad
- SPECIFIC_TYPE* t = Remove(elements._elements, obj);
- return ( t != NULL ? t : Remove(elements._TailElements, obj) );
- }
-
+ //// non-const remove method
+ //template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Remove(ContainerMapList<SPECIFIC_TYPE> & /*elements*/, SPECIFIC_TYPE *obj)
+ //{
+ // obj->GetGridRef().unlink();
+ // return obj;
+ //}
+
+ //template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Remove(ContainerMapList<TypeNull> &/*elements*/, SPECIFIC_TYPE * /*obj*/)
+ //{
+ // return NULL;
+ //}
+
+ //// this is a missed
+ //template<class SPECIFIC_TYPE, class T> SPECIFIC_TYPE* Remove(ContainerMapList<T> &/*elements*/, SPECIFIC_TYPE * /*obj*/)
+ //{
+ // return NULL; // a missed
+ //}
+
+ //template<class SPECIFIC_TYPE, class T, class H> SPECIFIC_TYPE* Remove(ContainerMapList<TypeList<H, T> > &elements, SPECIFIC_TYPE *obj)
+ //{
+ // // The head element is bad
+ // SPECIFIC_TYPE* t = Remove(elements._elements, obj);
+ // return ( t != NULL ? t : Remove(elements._TailElements, obj) );
+ //}
}
#endif
diff --git a/src/server/shared/Dynamic/UnorderedMap.h b/src/server/shared/Dynamic/UnorderedMap.h
index c698cc0a823..92a7dddf8a8 100755
--- a/src/server/shared/Dynamic/UnorderedMap.h
+++ b/src/server/shared/Dynamic/UnorderedMap.h
@@ -71,4 +71,3 @@ namespace __gnu_cxx
using std::hash_map;
#endif
#endif
-
diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp
index 56c02a8e77b..697e7616c40 100755
--- a/src/server/shared/Logging/Log.cpp
+++ b/src/server/shared/Logging/Log.cpp
@@ -139,7 +139,7 @@ void Log::Initialize()
{
bool m_gmlog_timestamp = ConfigMgr::GetBoolDefault("GmLogTimestamp", false);
- size_t dot_pos = m_gmlog_filename_format.find_last_of(".");
+ size_t dot_pos = m_gmlog_filename_format.find_last_of('.');
if (dot_pos!=m_gmlog_filename_format.npos)
{
if (m_gmlog_timestamp)
@@ -556,10 +556,10 @@ void Log::outSQLDriver(const char* str, ...)
{
outTimestamp(sqlLogFile);
- va_list ap;
- va_start(ap, str);
- vfprintf(sqlLogFile, str, ap);
- va_end(ap);
+ va_list apSQL;
+ va_start(apSQL, str);
+ vfprintf(sqlLogFile, str, apSQL);
+ va_end(apSQL);
fprintf(sqlLogFile, "\n");
fflush(sqlLogFile);
@@ -646,11 +646,11 @@ void Log::outBasic(const char * str, ...)
if (logfile)
{
outTimestamp(logfile);
- va_list ap;
- va_start(ap, str);
- vfprintf(logfile, str, ap);
+ va_list ap2;
+ va_start(ap2, str);
+ vfprintf(logfile, str, ap2);
fprintf(logfile, "\n" );
- va_end(ap);
+ va_end(ap2);
fflush(logfile);
}
}
@@ -690,10 +690,10 @@ void Log::outDetail(const char * str, ...)
if (logfile)
{
outTimestamp(logfile);
- va_list ap;
- va_start(ap, str);
- vfprintf(logfile, str, ap);
- va_end(ap);
+ va_list ap2;
+ va_start(ap2, str);
+ vfprintf(logfile, str, ap2);
+ va_end(ap2);
fprintf(logfile, "\n");
fflush(logfile);
@@ -720,10 +720,10 @@ void Log::outDebugInLine(const char * str, ...)
if (logfile)
{
- va_list ap;
- va_start(ap, str);
- vfprintf(logfile, str, ap);
- va_end(ap);
+ va_list ap2;
+ va_start(ap2, str);
+ vfprintf(logfile, str, ap2);
+ va_end(ap2);
}
}
}
@@ -742,10 +742,10 @@ void Log::outSQLDev(const char* str, ...)
if (sqlDevLogFile)
{
- va_list ap;
- va_start(ap, str);
- vfprintf(sqlDevLogFile, str, ap);
- va_end(ap);
+ va_list ap2;
+ va_start(ap2, str);
+ vfprintf(sqlDevLogFile, str, ap2);
+ va_end(ap2);
fprintf(sqlDevLogFile, "\n");
fflush(sqlDevLogFile);
@@ -790,10 +790,10 @@ void Log::outDebug(DebugLogFilters f, const char * str, ...)
if (logfile)
{
outTimestamp(logfile);
- va_list ap;
- va_start(ap, str);
- vfprintf(logfile, str, ap);
- va_end(ap);
+ va_list ap2;
+ va_start(ap2, str);
+ vfprintf(logfile, str, ap2);
+ va_end(ap2);
fprintf(logfile, "\n" );
fflush(logfile);
@@ -835,10 +835,10 @@ void Log::outStaticDebug(const char * str, ...)
if (logfile)
{
outTimestamp(logfile);
- va_list ap;
- va_start(ap, str);
- vfprintf(logfile, str, ap);
- va_end(ap);
+ va_list ap2;
+ va_start(ap2, str);
+ vfprintf(logfile, str, ap2);
+ va_end(ap2);
fprintf(logfile, "\n" );
fflush(logfile);
@@ -900,11 +900,11 @@ void Log::outCommand(uint32 account, const char * str, ...)
if (logfile)
{
outTimestamp(logfile);
- va_list ap;
- va_start(ap, str);
- vfprintf(logfile, str, ap);
+ va_list ap2;
+ va_start(ap2, str);
+ vfprintf(logfile, str, ap2);
fprintf(logfile, "\n" );
- va_end(ap);
+ va_end(ap2);
fflush(logfile);
}
}
diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h
index 5c23616ac5c..5b2eb6aafb6 100755
--- a/src/server/shared/Logging/Log.h
+++ b/src/server/shared/Logging/Log.h
@@ -102,8 +102,10 @@ const int Colors = int(WHITE)+1;
class Log
{
friend class ACE_Singleton<Log, ACE_Thread_Mutex>;
- Log();
- ~Log();
+
+ private:
+ Log();
+ ~Log();
public:
void Initialize();
diff --git a/src/server/shared/Utilities/Util.cpp b/src/server/shared/Utilities/Util.cpp
index 187258e41b3..5919529c6bf 100755
--- a/src/server/shared/Utilities/Util.cpp
+++ b/src/server/shared/Utilities/Util.cpp
@@ -17,7 +17,6 @@
*/
#include "Util.h"
-
#include "utf8.h"
#ifdef USE_SFMT_FOR_RNG
#include "SFMT.h"
@@ -162,13 +161,13 @@ std::string secsToTimeString(uint64 timeInSecs, bool shortText, bool hoursOnly)
std::ostringstream ss;
if (days)
- ss << days << (shortText ? "d " : " Day(s) ");
+ ss << days << (shortText ? "d" : " Day(s) ");
if (hours || hoursOnly)
- ss << hours << (shortText ? "h " : " Hour(s) ");
+ ss << hours << (shortText ? "h" : " Hour(s) ");
if (!hoursOnly)
{
if (minutes)
- ss << minutes << (shortText ? "m " : " Minute(s) ");
+ ss << minutes << (shortText ? "m" : " Minute(s) ");
if (secs || (!days && !hours && !minutes) )
ss << secs << (shortText ? "s" : " Second(s).");
}