Commit Graph

64 Commits

Author SHA1 Message Date
Naios
185921dc2b Core/Common: Add the linkage type to the version string
* Add platform strings for intel and apple
* Remove usage of underscore uppercase identifiers because
  those are reserved for the compiler.
* Requested by Aokromes

(cherry picked from commit afa0bac669)
2016-06-23 22:24:52 +02:00
jackpoz
1347d7cf7a Core/VMaps: Fix some vmap height edge cases
Fix Map::GetWaterOrGroundLevel() checking dynamic object only in phase 1 instead of current Unit phase.
Improve DynamicMapTree::getHeight() dynamic object check by casting the ray at +0.5f from the passed Z coordinate, this value will be tuned to improve even more the results.
2016-06-04 15:01:39 +02:00
Duarte Duarte
3ae1016082 Implement real time statistic visualization (#16956)
Docs at https://trinitycore.atlassian.net/wiki/display/tc/Monitoring+a+TrinityCore+server

* Common/Graphs: Initial proof of concept

* Move influx db code to its own class

* Reuse the same socket

* Allow to log values of different categories

* Allow to log events

* Pass the timestamp to influxdb

* Send events in batches

* Send data async

* Log server shutdown.
Fix memory leak.

* Allow to enable/disable Stats in the settings and at runtime

* Read interval between each batch send from config

* Add InfluxDB connection info to configs

* Move each event category to its own table

* Log pathfinding queries

* Move categories table initialization to constructor using enum as key to avoid assigning the table name to the wrong enum value

* Log player login/logout events.
Pass the hostname correctly in the HTTP request.

* Fix linux build

* Handle "Connection: close" HTTP header, reconnecting on next scheduled send.
Disable StatsLogger if connection fails, logging the error.

* Add an enum for categories of logged values, it's still possible to pass a string instead of the enum.

* Don't log the whole batchedData when InfluxDB returns an error, it's too long and unreadable on console.

* Allow to call a function at a specified interval in thread-safe World::Update() context to log data like player count.

* Log map tile load/unload

* Core/StatsLogger: Allow logging more value types other than ints

https://docs.influxdata.com/influxdb/v0.10/write_protocols/write_syntax/

* Fix a typo in string escape of StatsLogger

* Yet more fixes to the escaping in FormatInfluxDBValue

* DB/Gameobject: Fix respawn time of few Quest GameObjects

By Tauriella, closes #16701

* DB/Misc: Fix some engrish

By tkrokli closes #16648

* Tools/MMaps: Add format library linking to mmaps_generator

(Very) partial cherry pick of ed75b0649a

* Core/StatsLogger: Simplify code

Convert values and categories arrays to maps initialized in-place
Remove constructor and destructor

* Core/StatsLogger: Add realm name to the event and value tags

* Log amount of processed packet of each session

* Apply recent singleton changes to sStatsLogger too

* Fix influxdb data format if no realm name is present

* Remove unneeded newlines from request body, fixes response 400 from InfluxDB 0.10

* Rename Reporting folder to Metric

* Rename StatsLogger to Metric

* Rename InfluxDB configs to Metric

* Add Grafana dashboards

* Add a random annoying macro

* Move string formatting to Metric::SendBatch(), reducing performance footprint of Metric::LogEvent() and Metric::LogValue()

* Update grafana graphs refresing tags on load and showing now-15m data, refreshing every minute. These settings can be modified in grafana.

* Rename MetricData fields

* Contrib/Grafana: Rename dashboard files

* Contrib/Grafana: Replace hardcoded Windows/Ubuntu realm names by the default, Trinity

* Config/Worldserver: Add missing section to the index

* Contrib/Grafana: Add singlestat panels with current online players, update diff averages (1 min, 5 mins and 15 mins)

http://i.imgur.com/Zi8lfvS.png

* Core/Metric: Replace the enums MetricEventCategory and MetricValueCategory by strings

For the sake of simplicity and less recompile time when adding new metrics, similar to how TC_LOG_* works

* Contrib/Grafana: Display the current number of online players and not its average

Closes #15075
2016-06-04 11:23:29 +01:00
Shauren
0fbfa8ead0 Core/Containers: Warning fixes and RandomResizeList with predicate optimization 2016-05-24 18:51:31 +02:00
Naios
f50c4b71a1 Core/Game: Remove some unnecessary export macros 2016-05-10 19:22:22 +02:00
Naios
d4d199d765 Core/Common: Move the query callback header to the database project
* Also renames the header to it's correct name QueryCallback
2016-05-10 18:16:13 +02:00
Naios
5b15b714ab Core/Utilities: Inherit env vars when starting external processes 2016-04-30 01:06:00 +02:00
Shauren
5bbc58f32d Core/Misc: Use steady_clock instead of system_clock for calculating ms timers. This makes update diffs immune to systemwide time changes
(cherry picked from commit 406ac4f4b4)
2016-04-26 18:15:10 +02:00
joschiwald
9e371b766c Core/Utils: replaced std::random_shuffle with our own implementation using SFMT random generator 2016-04-24 01:15:56 +02:00
Naios
2698d1ff48 Core/Common: Fix a std::string -> char* -> std::string conversion
* Thanks jackpoz for noticing
2016-04-23 18:13:42 +02:00
Naios
86b0fcf67a Core/Scripting: Use the path of the worldserver executable to search for the scripts dir
* Fixes issues when starting the worldserver not in the bin directory
  or the CMAKE_INSTALL_PREFIX directory using the -c option.
2016-04-18 21:02:01 +02:00
Naios
3271f328de Core/Cryptography: Move the SHA1 calculate helper to the SHA1 header 2016-04-17 19:30:13 +02:00
Naios
f93617c3c9 Core/Common: Capsule boost process into helper functions
* For easier usage, the processes output it routed
  correctly to the TC logger line by line now.
* Add support for asynchronous process execution
  and process termination.

(cherry picked from commit 3497b4960b)
2016-04-11 21:40:59 +02:00
Naios
fc106eba51 Core/Misc: Replace tc's optional with boost::optional. (very partial cherry-pick)
* benefits from empty optimization (objects are only constructed if needed).
* supports r-value references (move semantics) (boost >= 1.56.0).
* preparation for c++14/17's std::optional and std::none_t.
* add move constructor to CompactArray.

(cherry picked from commit 800d5d8939)
2016-04-11 21:00:26 +02:00
Shauren
836788ed3c Core/Misc: MSVC /W4 warning fixes
(cherry picked from commit 08c27d3205)
2016-04-09 18:25:53 +02:00
Shauren
39abb8acb3 Core/Misc: MSVC warning fixes
(cherry picked from commit 70412e7e25)
2016-04-09 18:13:30 +02:00
Shauren
702cfefddb Buildsystem: Initial changes to support building with vs clang toolset
(cherry picked from commit 4a3a178d7f)
2016-04-09 12:38:20 +02:00
Shauren
b841546574 Core/Common: Moved MessageBuffer to common
(cherry picked from commit a81a204678)
2016-04-09 12:31:04 +02:00
DDuarte
c9e3f2aa9a Core/Config: Fix 3 more missing config warnings
Closes #16861

Thanks tkrokli

(cherry picked from commit 0afcefea27)
2016-03-31 03:31:51 +01:00
DDuarte
9aadd97fba Core/Config: Error logging for ptree_bad_data
Ref 6487e2f2d6 (commitcomment-16888976)

(cherry picked from commit 9431b94bff)
2016-03-31 03:31:46 +01:00
DDuarte
6487e2f2d6 Core/Startup: Warn when a config key isn't found in the config files
Example: "Missing name Guild.SaveInterval in config file worldserver.conf, add "Guild.SaveInterval = 15" to this file"
(cherry picked from commit 06b3bca0d2)

# Conflicts:
#	src/common/Configuration/Config.cpp
2016-03-27 23:49:08 +01:00
Naios
1a1c0d1dc4 Core/Common: Converted the common library to a shared library.
* There is still the possibility to static link against common.

(cherry picked from commit 501fd9b502)
2016-03-24 02:45:44 +01:00
Naios
2613413608 Core/Build: Add the possibility to link libraries dynamically.
* makes it possible to access exported singletons from other shared lib's.
* reduces binary size

(cherry picked from commit f4e0945b13)
2016-03-24 02:38:54 +01:00
Shauren
9295d9fa09 Core/Util: Extracted GetPID to separate function
(cherry picked from commit e3af42e05c)
2016-03-21 17:26:48 +01:00
Naios
abda7a910a CMake: Use inherited dependencies in common and tools 2016-03-18 02:52:57 +01:00
Naios
f52495c66b Dep/CppFormat: Update cppformat to cppformat/cppformat@5174b8c 2016-03-16 15:36:32 +01:00
MitchesD
caef32d375 Core/Misc: fix build
(cherry picked from commit ce5def332f)
2016-03-12 23:52:51 +01:00
Shauren
fd819b0919 Core/Debugging: Make abort() less bad on windows by forcing crash log generation
(cherry picked from commit dea7d429ab)

# Conflicts:
#	src/server/bnetserver/Main.cpp
2016-03-12 23:52:35 +01:00
Shauren
c71987b1a1 Core/Logging: Force synchronous logging after io_service shutdown - fixes logging on worldserver shutdown
(cherry picked from commit a0b2be6c1d)
2016-03-12 23:49:56 +01:00
Shauren
9fc5c4bc41 Core/PacketIO: Requeue packets handled with STATUS_LOGGEDIN received before player is fully loaded in one step after packet processing loop - reduces used locks from 3 per packet to 1 per packet
(cherry picked from commit 8086a39210)
2016-03-12 23:49:39 +01:00
Vincent-Michael
f81488b90e Core: Revert fail
(cherry picked from commit b5329d8a03)
2016-03-12 21:46:56 +01:00
Vincent-Michael
d6f093681e Core: Added missing overrides
(cherry picked from commit 5d584116fe)
2016-03-12 21:46:37 +01:00
Shauren
298d70476e Core/Misc: Partial port of d9f1d6466d (refactoring) 2016-03-12 21:21:41 +01:00
Naios
fbe724fab9 Core/Common: Generalize platform specific includes in common/Platform
(cherry picked from commit 30517cb1d3)
2016-03-11 19:09:56 +01:00
Naios
998607b106 Core/Common: Move singleton instances into compilation units
* Fixes issues when building shared libraries
  (prevents gcc and clang from providing several instance)

(cherry picked from commit 5c91586797)
2016-03-11 18:55:33 +01:00
treeston
224b42c53a Util/Random: Add randtime(Milliseconds const&, Milliseconds const&) to supersede urandms(uint32,uint32) for scripts being ported to std::chrono. 2016-03-01 23:09:25 +01:00
joschiwald
ffdf75a233 Scripts/Spells: Glyph of Arcane Shot is affected by own debuffs on target only 2016-02-27 17:55:43 +01:00
joschiwald
9beeca79ac Core/Logging: fixed default logger (partial reverts 0904858624) 2016-02-27 17:47:35 +01:00
Naios
b5369b7d87 Core/Common: Add a generic config helper to access built-in overwriteable paths.
* Adds CMAKE_COMMAND and CMAKE_BINARY_DIR to revision_data.h
* Move the source and mysql exe path handling out of the DBUpdater.
* Make some Config methods const for correctness.
* Remove C & CXX flags from revision_data.h
 (was unused and didn't capture all cxx vars)
* Reorder the link order to prevent `ld` from ignoring the file
* Ref #15671

(cherry picked from commit 719159e207)
2016-02-22 16:25:47 +01:00
Shauren
b2e03a7448 Core/Networking: Rewrite networking threading model
Each network thread has its own io_service - this means that all operations on a given socket except queueing packets run from a single thread, removing the need for locking
Sending packets now writes to a lockfree intermediate queue directly, encryption is applied in network thread if it was required at the time of sending the packet

(cherry picked from commit 97a79af470)
2016-02-20 13:08:03 +01:00
Shauren
55ef8d80a3 Core/Utils: Moved rng functions to separate header and added utility functions to select a random element from a container where each element can have different chance of being selected
(cherry picked from commit ae20b2ab56)
(cherry picked from commit 921d893c2a)
(cherry picked from commit 9ab10d6e68)
(cherry picked from commit 00c878e73a)
(cherry picked from commit ff9c999334)
(cherry picked from commit bc94bacce4)
(cherry picked from commit d5b0ffbe9b)
2016-02-09 19:26:29 +01:00
Carbenium
1038df8d5b Core/Util: Add a missing include 2016-01-22 20:22:45 +01:00
Rushor
923a368ac7 Update copyright note for 2016 2016-01-01 12:02:33 +01:00
treeston
c0faee0795 Core/Util: Add a urandms(min,max) helper to make urand(min*IN_MILLISECONDS, max*IN_MILLISECONDS) shorter to write for random time intervals (boss scripts). 2015-11-28 23:53:04 +01:00
Shauren
7631ec444e Core/DBLayer: Improve error message from 0a27f8bce2
(cherry picked from commit d31706b07e)
2015-11-14 13:54:36 +01:00
Vincent-Michael
7d5e7102cd Core: Whitespace cleanup 2015-11-07 20:01:53 +01:00
Shauren
3158605603 Core/Conditions: Optimizations part 1 - use containers more suited for their role
(cherry picked from commit 9fa938f3e0)
2015-10-31 20:26:40 +01:00
Shauren
dc74454356 Core/Conditions: Type renaming
(cherry picked from commit 5e0cee85dd)
2015-10-31 20:26:40 +01:00
Shauren
c5d36a3183 Core/Misc: Added a few stl header includes to Common.h
(cherry picked from commit 89b902b4e0)
2015-10-31 18:37:54 +01:00
Shauren
7fb63478bb Buildsystem: Added dependency on revision_data to common project. Simply including the header in GitRevision.cpp is not enough to rebuild that file after updating sources
Fixes having to build twice before GitRevision returns accurate info.

(cherry picked from commit 65999801d3)
2015-10-31 17:30:59 +01:00