diff --git a/.gitmodules b/.gitmodules index d1faa1ae..69f7a3a6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "deps/asio"] path = deps/asio url = https://github.com/chriskohlhoff/asio.git +[submodule "deps/spdlog"] + path = deps/spdlog + url = https://github.com/gabime/spdlog.git diff --git a/cmake/compiler.cmake b/cmake/compiler.cmake index c614329e..7acc50e5 100644 --- a/cmake/compiler.cmake +++ b/cmake/compiler.cmake @@ -1,6 +1,6 @@ if(UNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1z") # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") else() add_definitions(-D_WIN32_WINNT=0x601) diff --git a/deps/spdlog b/deps/spdlog new file mode 160000 index 00000000..240a58fd --- /dev/null +++ b/deps/spdlog @@ -0,0 +1 @@ +Subproject commit 240a58fd6e8bfe8fa62dd3ea777d1909f6d89a72 diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 05512b9e..dfce49d8 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -27,7 +27,6 @@ set_target_properties( common PROPERTIES RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/" ) -target_link_libraries( common PUBLIC ${Boost_LIBRARIES} ) target_link_libraries( common PUBLIC xivdat ) target_link_libraries( common PUBLIC mysqlConnector ) @@ -45,8 +44,9 @@ endif() target_include_directories( common PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/" - "${CMAKE_CURRENT_SOURCE_DIR}/../../deps/asio/asio/include/" - "${CMAKE_CURRENT_SOURCE_DIR}/../../deps/" + "${CMAKE_CURRENT_SOURCE_DIR}/../../deps/" + "${CMAKE_CURRENT_SOURCE_DIR}/../../deps/asio/asio/include/" + "${CMAKE_CURRENT_SOURCE_DIR}/../../deps/spdlog/include/" PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/libraries/external/") diff --git a/src/common/Config/ConfigMgr.cpp b/src/common/Config/ConfigMgr.cpp index c4550f18..c60c226e 100644 --- a/src/common/Config/ConfigMgr.cpp +++ b/src/common/Config/ConfigMgr.cpp @@ -43,10 +43,10 @@ bool Core::ConfigMgr::loadConfig( const std::string& configName ) std::ifstream configFile( localConfig.c_str() ); configStream << configFile.rdbuf(); - // parse the tree and we're fuckin done + // parse the trxee and we're fuckin done //boost::property_tree::read_ini( configStream, m_propTree ); - m_pInih = std::unique_ptr< INIReader >(new INIReader( localConfig ) ); + m_pInih = std::unique_ptr< INIReader >( new INIReader( localConfig ) ); if( m_pInih->ParseError() < 0 ) return false; diff --git a/src/common/Logging/Logger.cpp b/src/common/Logging/Logger.cpp index 4e00701e..213a6ea8 100644 --- a/src/common/Logging/Logger.cpp +++ b/src/common/Logging/Logger.cpp @@ -1,18 +1,10 @@ #include "Logger.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include + +// #include namespace Core { @@ -35,56 +27,40 @@ void Logger::setLogPath( const std::string& logPath ) void Logger::init() { - auto format = ( - boost::log::expressions::stream << - boost::log::expressions::format_date_time< boost::posix_time::ptime >( - "TimeStamp", "[%H:%M:%S]" ) << - "[" << boost::log::trivial::severity << "] " << - boost::log::expressions::smessage - ); + std::vector< spdlog::sink_ptr > sinks; - boost::log::add_file_log - ( - boost::log::keywords::file_name = - m_logFile + "%Y-%m-%d.log", /*< file name pattern >*/ - boost::log::keywords::rotation_size = - 10 * 1024 * 1024, /*< rotate files every 10 MiB... >*/ - boost::log::keywords::time_based_rotation = boost::log::sinks::file::rotation_at_time_point( 0, 0, - 0 ), /*< ...or at midnight >*/ - boost::log::keywords::open_mode = std::ios::app, - boost::log::keywords::format = format, - boost::log::keywords::auto_flush = true - ); + sinks.push_back( std::make_shared< spdlog::sinks::stdout_color_sink_mt >() ); + sinks.push_back( std::make_shared< spdlog::sinks::daily_file_sink_mt >( m_logFile, 0, 0 ) ); - boost::log::add_console_log( std::cout, boost::log::keywords::format = format ); + m_logger = std::make_shared< spdlog::logger >( "logger", std::begin( sinks ), std::end( sinks ) ); - boost::log::add_common_attributes(); + //spdlog::set_pattern( "[%H:%M:%S] [%l] %v" ); } void Logger::Log( LoggingSeverity logSev, const std::string& text ) { - BOOST_LOG_SEV( m_lg, ( boost::log::trivial::severity_level ) logSev ) << text; + // BOOST_LOG_SEV( m_lg, ( boost::log::trivial::severity_level ) logSev ) << text; } void Logger::error( const std::string& text ) { - BOOST_LOG_SEV( m_lg, boost::log::trivial::severity_level::error ) << text; + m_logger->error( text ); } void Logger::info( const std::string& text ) { - BOOST_LOG_SEV( m_lg, boost::log::trivial::severity_level::info ) << text; + m_logger->info( text ); } void Logger::debug( const std::string& text ) { - BOOST_LOG_SEV( m_lg, boost::log::trivial::severity_level::debug ) << text; + m_logger->debug( text ); } void Logger::fatal( const std::string& text ) { - BOOST_LOG_SEV( m_lg, boost::log::trivial::severity_level::fatal ) << text; + m_logger->critical( text ); } diff --git a/src/common/Logging/Logger.h b/src/common/Logging/Logger.h index 28384f16..c176ddc9 100644 --- a/src/common/Logging/Logger.h +++ b/src/common/Logging/Logger.h @@ -1,7 +1,9 @@ #ifndef _LOGGER_H #define _LOGGER_H -#include +// #include + +#include namespace Core { @@ -19,10 +21,10 @@ class Logger { private: - boost::log::sources::severity_logger_mt< boost::log::trivial::severity_level > m_lg; - std::string m_logFile; + std::shared_ptr< spdlog::logger > m_logger; + public: Logger(); diff --git a/src/servers/Scripts/CMakeLists.txt b/src/servers/Scripts/CMakeLists.txt index 4d2f9fa1..314f33f9 100644 --- a/src/servers/Scripts/CMakeLists.txt +++ b/src/servers/Scripts/CMakeLists.txt @@ -41,7 +41,7 @@ foreach(_scriptDir ${children}) if(MSVC) #target_link_libraries( "script_${_name}" ${Boost_LIBRARIES}) set_target_properties( "script_${_name}" PROPERTIES - CXX_STANDARD 14 + CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS ON LIBRARY_OUTPUT_DIRECTORY_DEBUG "${SCRIPT_LIB_DIR}" diff --git a/src/servers/sapphire_api/CMakeLists.txt b/src/servers/sapphire_api/CMakeLists.txt index 2f83716a..0c975b41 100644 --- a/src/servers/sapphire_api/CMakeLists.txt +++ b/src/servers/sapphire_api/CMakeLists.txt @@ -8,7 +8,7 @@ file(GLOB SERVER_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}*.c*") add_executable(sapphire_api ${SERVER_PUBLIC_INCLUDE_FILES} ${SERVER_SOURCE_FILES}) set_target_properties(sapphire_api PROPERTIES - CXX_STANDARD 14 + CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS ON RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/" diff --git a/src/servers/sapphire_api/Forwards.h b/src/servers/sapphire_api/Forwards.h index ece38f18..7788db1b 100644 --- a/src/servers/sapphire_api/Forwards.h +++ b/src/servers/sapphire_api/Forwards.h @@ -1,7 +1,7 @@ #ifndef _FORWARDS_H #define _FORWARDS_H -#include +#include namespace Core { @@ -19,20 +19,20 @@ class Session; class ZonePosition; -typedef boost::shared_ptr< Zone > ZonePtr; -typedef boost::shared_ptr< Item > ItemPtr; -typedef boost::shared_ptr< ItemContainer > ItemContainerPtr; -typedef boost::shared_ptr< Inventory > InventoryPtr; -typedef boost::shared_ptr< Session > SessionPtr; -typedef boost::shared_ptr< ZonePosition > ZonePositionPtr; +typedef std::shared_ptr< Zone > ZonePtr; +typedef std::shared_ptr< Item > ItemPtr; +typedef std::shared_ptr< ItemContainer > ItemContainerPtr; +typedef std::shared_ptr< Inventory > InventoryPtr; +typedef std::shared_ptr< Session > SessionPtr; +typedef std::shared_ptr< ZonePosition > ZonePositionPtr; namespace StatusEffect { class StatusEffect; class StatusEffectContainer; -typedef boost::shared_ptr< StatusEffect > StatusEffectPtr; -typedef boost::shared_ptr< StatusEffectContainer > StatusEffectContainerPtr; +typedef std::shared_ptr< StatusEffect > StatusEffectPtr; +typedef std::shared_ptr< StatusEffectContainer > StatusEffectContainerPtr; } namespace Entity { @@ -42,15 +42,15 @@ class Player; class BattleNpc; -typedef boost::shared_ptr< Chara > ActorPtr; -typedef boost::shared_ptr< Player > PlayerPtr; -typedef boost::shared_ptr< BattleNpc > BattleNpcPtr; +typedef std::shared_ptr< Chara > ActorPtr; +typedef std::shared_ptr< Player > PlayerPtr; +typedef std::shared_ptr< BattleNpc > BattleNpcPtr; } namespace Event { class EventHandler; -typedef boost::shared_ptr< EventHandler > EventPtr; +typedef std::shared_ptr< EventHandler > EventPtr; } namespace Action { @@ -60,9 +60,9 @@ class ActionTeleport; class EventAction; -typedef boost::shared_ptr< Action > ActionPtr; -typedef boost::shared_ptr< ActionTeleport > ActionTeleportPtr; -typedef boost::shared_ptr< EventAction > EventActionPtr; +typedef std::shared_ptr< Action > ActionPtr; +typedef std::shared_ptr< ActionTeleport > ActionTeleportPtr; +typedef std::shared_ptr< EventAction > EventActionPtr; } @@ -79,18 +79,18 @@ class SessionConnection; class ZoneConnection; -typedef boost::shared_ptr< Hive > HivePtr; -typedef boost::shared_ptr< Acceptor > AcceptorPtr; -typedef boost::shared_ptr< Connection > ConnectionPtr; -typedef boost::shared_ptr< WorldConnection > WorldConnectionPtr; -typedef boost::shared_ptr< ZoneConnection > ZoneConnectionPtr; -typedef boost::shared_ptr< SessionConnection > SessionConnectionPtr; +typedef std::shared_ptr< Hive > HivePtr; +typedef std::shared_ptr< Acceptor > AcceptorPtr; +typedef std::shared_ptr< Connection > ConnectionPtr; +typedef std::shared_ptr< WorldConnection > WorldConnectionPtr; +typedef std::shared_ptr< ZoneConnection > ZoneConnectionPtr; +typedef std::shared_ptr< SessionConnection > SessionConnectionPtr; namespace Packets { class GamePacket; -typedef boost::shared_ptr< GamePacket > GamePacketPtr; +typedef std::shared_ptr< GamePacket > GamePacketPtr; } diff --git a/src/servers/sapphire_api/main.cpp b/src/servers/sapphire_api/main.cpp index 609a2d84..0f49f096 100644 --- a/src/servers/sapphire_api/main.cpp +++ b/src/servers/sapphire_api/main.cpp @@ -43,7 +43,6 @@ Core::Data::ExdDataGenerated g_exdDataGen; Core::Network::SapphireAPI g_sapphireAPI; using namespace std; -using namespace boost::property_tree; using HttpServer = SimpleWeb::Server< SimpleWeb::HTTP >; using HttpClient = SimpleWeb::Client< SimpleWeb::HTTP >; @@ -53,13 +52,13 @@ void default_resource_send( const HttpServer& server, const shared_ptr< HttpServ const shared_ptr< ifstream >& ifs ); -auto m_pConfig = boost::make_shared< Core::ConfigMgr >(); +auto m_pConfig = std::make_shared< Core::ConfigMgr >(); HttpServer server; std::string configPath( "rest.ini" ); void reloadConfig() { - m_pConfig = boost::make_shared< Core::ConfigMgr >(); + m_pConfig = std::make_shared< Core::ConfigMgr >(); if( !m_pConfig->loadConfig( configPath ) ) throw "Error loading config "; @@ -747,7 +746,7 @@ void defaultGet( shared_ptr< HttpServer::Response > response, shared_ptr< HttpSe int main( int argc, char* argv[] ) { - auto pLog = boost::shared_ptr< Core::Logger >( new Core::Logger() ); + auto pLog = std::shared_ptr< Core::Logger >( new Core::Logger() ); g_fw.set< Core::Logger >( pLog ); g_log.setLogPath( "log/SapphireAPI" ); g_log.init(); diff --git a/src/servers/sapphire_zone/CMakeLists.txt b/src/servers/sapphire_zone/CMakeLists.txt index 292ffcc3..1c61dd00 100644 --- a/src/servers/sapphire_zone/CMakeLists.txt +++ b/src/servers/sapphire_zone/CMakeLists.txt @@ -23,7 +23,7 @@ file(GLOB SERVER_SOURCE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} add_executable( sapphire_zone ${SERVER_SOURCE_FILES} ) set_target_properties(sapphire_zone PROPERTIES - CXX_STANDARD 14 + CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS ON ENABLE_EXPORTS ON diff --git a/src/tools/discovery_parser/CMakeLists.txt b/src/tools/discovery_parser/CMakeLists.txt index ac6f5744..8aab97d5 100644 --- a/src/tools/discovery_parser/CMakeLists.txt +++ b/src/tools/discovery_parser/CMakeLists.txt @@ -20,7 +20,7 @@ file(GLOB SERVER_SOURCE_FILES add_executable(discovery_parser ${SERVER_PUBLIC_INCLUDE_FILES} ${SERVER_SOURCE_FILES}) set_target_properties(discovery_parser PROPERTIES - CXX_STANDARD 14 + CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS ON RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../bin/" diff --git a/src/tools/event_object_parser/CMakeLists.txt b/src/tools/event_object_parser/CMakeLists.txt index 3af2ac6b..b3d39c4e 100644 --- a/src/tools/event_object_parser/CMakeLists.txt +++ b/src/tools/event_object_parser/CMakeLists.txt @@ -14,7 +14,7 @@ file(GLOB SERVER_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}*.c*") add_executable(event_object_parser ${SERVER_PUBLIC_INCLUDE_FILES} ${SERVER_SOURCE_FILES}) set_target_properties(event_object_parser PROPERTIES - CXX_STANDARD 14 + CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS ON RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../bin/" diff --git a/src/tools/exd_common_gen/CMakeLists.txt b/src/tools/exd_common_gen/CMakeLists.txt index ee45df8a..b65aaa9b 100644 --- a/src/tools/exd_common_gen/CMakeLists.txt +++ b/src/tools/exd_common_gen/CMakeLists.txt @@ -14,7 +14,7 @@ file(GLOB SERVER_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}*.c*") add_executable(exd_common_gen ${SERVER_PUBLIC_INCLUDE_FILES} ${SERVER_SOURCE_FILES}) set_target_properties(exd_common_gen PROPERTIES - CXX_STANDARD 14 + CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS ON RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../bin/" diff --git a/src/tools/exd_common_gen/main.cpp b/src/tools/exd_common_gen/main.cpp index feca65d3..7eef7ead 100644 --- a/src/tools/exd_common_gen/main.cpp +++ b/src/tools/exd_common_gen/main.cpp @@ -8,16 +8,17 @@ #include #include #include -#include +#include #include #include -#include +#include + #include Core::Logger g_log; -Core::Data::ExdData g_exdData; +Core::Data::ExdDataGenerated g_exdData; //const std::string datLocation( "/opt/sapphire_3_15_0/bin/sqpack" ); @@ -44,11 +45,11 @@ std::string generateEnum( const std::string& exd, int8_t nameIndex, const std::s { auto& fields = row.second; uint32_t id = row.first; - auto test = boost::get< std::string >( &fields.at( nameIndex ) ); + auto test = std::get< std::string >( fields.at( nameIndex ) ); if( !test ) continue; auto str = *test; - str.erase( boost::remove_if( str, boost::is_any_of( ",_-':!(){} \x02\x1f\x01\x03" ) ), str.end() ); + str.erase( std::remove_if( str.begin(), str.end(), std::is_any_of( ",_-':!(){} \x02\x1f\x01\x03" ) ) ); if( str.empty() ) continue; str[ 0 ] = std::toupper( str[ 0 ] ); diff --git a/src/tools/exd_struct_gen/CMakeLists.txt b/src/tools/exd_struct_gen/CMakeLists.txt index 55a4f094..cc490615 100644 --- a/src/tools/exd_struct_gen/CMakeLists.txt +++ b/src/tools/exd_struct_gen/CMakeLists.txt @@ -14,7 +14,7 @@ file(GLOB SERVER_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}*.c*") add_executable(exd_struct_gen ${SERVER_PUBLIC_INCLUDE_FILES} ${SERVER_SOURCE_FILES}) set_target_properties(exd_struct_gen PROPERTIES - CXX_STANDARD 14 + CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS ON RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../bin/" diff --git a/src/tools/exd_struct_test/CMakeLists.txt b/src/tools/exd_struct_test/CMakeLists.txt index 817c85a4..24eb5045 100644 --- a/src/tools/exd_struct_test/CMakeLists.txt +++ b/src/tools/exd_struct_test/CMakeLists.txt @@ -14,7 +14,7 @@ file(GLOB SERVER_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}*.c*") add_executable(exd_struct_test ${SERVER_PUBLIC_INCLUDE_FILES} ${SERVER_SOURCE_FILES}) set_target_properties(exd_struct_test PROPERTIES - CXX_STANDARD 14 + CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS ON RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../bin/" diff --git a/src/tools/mob_parse/CMakeLists.txt b/src/tools/mob_parse/CMakeLists.txt index a2a8a440..42647570 100644 --- a/src/tools/mob_parse/CMakeLists.txt +++ b/src/tools/mob_parse/CMakeLists.txt @@ -14,7 +14,7 @@ file(GLOB SERVER_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}*.c*") add_executable(mob_parse ${SERVER_PUBLIC_INCLUDE_FILES} ${SERVER_SOURCE_FILES}) set_target_properties(mob_parse PROPERTIES - CXX_STANDARD 14 + CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS ON RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../bin/" diff --git a/src/tools/pcb_reader/CMakeLists.txt b/src/tools/pcb_reader/CMakeLists.txt index 8417673f..c01d6c42 100644 --- a/src/tools/pcb_reader/CMakeLists.txt +++ b/src/tools/pcb_reader/CMakeLists.txt @@ -14,7 +14,7 @@ file(GLOB SERVER_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}*.c*") add_executable(pcb_reader2 ${SERVER_PUBLIC_INCLUDE_FILES} ${SERVER_SOURCE_FILES}) set_target_properties(pcb_reader2 PROPERTIES - CXX_STANDARD 14 + CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS ON RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../bin/" diff --git a/src/tools/quest_parser/CMakeLists.txt b/src/tools/quest_parser/CMakeLists.txt index 9dc1c308..386495a5 100644 --- a/src/tools/quest_parser/CMakeLists.txt +++ b/src/tools/quest_parser/CMakeLists.txt @@ -20,7 +20,7 @@ file(GLOB SERVER_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}*.c*") add_executable(quest_parse ${SERVER_PUBLIC_INCLUDE_FILES} ${SERVER_SOURCE_FILES}) set_target_properties(quest_parse PROPERTIES - CXX_STANDARD 14 + CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS ON RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../bin/"