From 4caaf2321df8ec2e460768fc3b6f5c2a017a4339 Mon Sep 17 00:00:00 2001 From: Srdjan Obucina Date: Thu, 5 Sep 2019 20:20:22 +0200 Subject: [PATCH] SON plugin skeleton code - SON plugin skeleton added - SON plugin activated by default --- CMakeLists.txt | 2 +- libraries/plugins/CMakeLists.txt | 1 + .../peerplays_sidechain/CMakeLists.txt | 19 ++++++ .../peerplays_sidechain_plugin.hpp | 34 +++++++++++ .../peerplays_sidechain_plugin.cpp | 59 +++++++++++++++++++ programs/witness_node/CMakeLists.txt | 2 +- programs/witness_node/main.cpp | 2 + 7 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 libraries/plugins/peerplays_sidechain/CMakeLists.txt create mode 100644 libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/peerplays_sidechain_plugin.hpp create mode 100644 libraries/plugins/peerplays_sidechain/peerplays_sidechain_plugin.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 595e1cc0..d7b01087 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,7 +135,7 @@ else( WIN32 ) # Apple AND Linux endif( APPLE ) if( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" ) - set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-builtin-memcmp" ) + set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-builtin-memcmp -Wno-class-memaccess -Wno-parentheses -Wno-terminate -Wno-invalid-offsetof" ) elseif( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" ) if( CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 4.0.0 OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.0.0 ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-partial-specialization" ) diff --git a/libraries/plugins/CMakeLists.txt b/libraries/plugins/CMakeLists.txt index 01079fe2..fb944627 100644 --- a/libraries/plugins/CMakeLists.txt +++ b/libraries/plugins/CMakeLists.txt @@ -9,3 +9,4 @@ add_subdirectory( generate_genesis ) add_subdirectory( generate_uia_sharedrop_genesis ) add_subdirectory( debug_witness ) add_subdirectory( snapshot ) +add_subdirectory( peerplays_sidechain ) diff --git a/libraries/plugins/peerplays_sidechain/CMakeLists.txt b/libraries/plugins/peerplays_sidechain/CMakeLists.txt new file mode 100644 index 00000000..37d514db --- /dev/null +++ b/libraries/plugins/peerplays_sidechain/CMakeLists.txt @@ -0,0 +1,19 @@ +file(GLOB HEADERS "include/graphene/peerplays_sidechain_history/*.hpp") + +add_library( peerplays_sidechain + peerplays_sidechain_plugin.cpp + ) + +target_link_libraries( peerplays_sidechain graphene_chain graphene_app ) +target_include_directories( peerplays_sidechain + PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) + +install( TARGETS + peerplays_sidechain + + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) +INSTALL( FILES ${HEADERS} DESTINATION "include/graphene/peerplays_sidechain" ) + diff --git a/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/peerplays_sidechain_plugin.hpp b/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/peerplays_sidechain_plugin.hpp new file mode 100644 index 00000000..e40d1e54 --- /dev/null +++ b/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/peerplays_sidechain_plugin.hpp @@ -0,0 +1,34 @@ +#pragma once + +#include +#include +#include + +#include + +namespace graphene { namespace peerplays_sidechain { +using namespace chain; + +namespace detail +{ + class peerplays_sidechain_plugin_impl; +} + +class peerplays_sidechain_plugin : public graphene::app::plugin +{ + public: + peerplays_sidechain_plugin(); + virtual ~peerplays_sidechain_plugin(); + + std::string plugin_name()const override; + virtual void plugin_set_program_options( + boost::program_options::options_description& cli, + boost::program_options::options_description& cfg) override; + virtual void plugin_initialize(const boost::program_options::variables_map& options) override; + virtual void plugin_startup() override; + + std::unique_ptr my; +}; + +} } //graphene::peerplays_sidechain_plugin + diff --git a/libraries/plugins/peerplays_sidechain/peerplays_sidechain_plugin.cpp b/libraries/plugins/peerplays_sidechain/peerplays_sidechain_plugin.cpp new file mode 100644 index 00000000..071905ec --- /dev/null +++ b/libraries/plugins/peerplays_sidechain/peerplays_sidechain_plugin.cpp @@ -0,0 +1,59 @@ +#include + +namespace graphene { namespace peerplays_sidechain { + +namespace detail +{ + + +class peerplays_sidechain_plugin_impl +{ + public: + peerplays_sidechain_plugin_impl(peerplays_sidechain_plugin& _plugin) + : _self( _plugin ) + { } + virtual ~peerplays_sidechain_plugin_impl(); + + peerplays_sidechain_plugin& _self; +}; + +peerplays_sidechain_plugin_impl::~peerplays_sidechain_plugin_impl() +{ + return; +} + +} // end namespace detail + +peerplays_sidechain_plugin::peerplays_sidechain_plugin() : + my( new detail::peerplays_sidechain_plugin_impl(*this) ) +{ +} + +peerplays_sidechain_plugin::~peerplays_sidechain_plugin() +{ + return; +} + +std::string peerplays_sidechain_plugin::plugin_name()const +{ + return "peerplays_sidechain"; +} + +void peerplays_sidechain_plugin::plugin_set_program_options( + boost::program_options::options_description& /*cli*/, + boost::program_options::options_description& /*cfg*/ + ) +{ +} + +void peerplays_sidechain_plugin::plugin_initialize(const boost::program_options::variables_map& /*options*/) +{ + ilog("peerplays sidechain plugin: plugin_initialize()"); +} + +void peerplays_sidechain_plugin::plugin_startup() +{ + ilog("peerplays sidechain plugin: plugin_startup()"); +} + +} } diff --git a/programs/witness_node/CMakeLists.txt b/programs/witness_node/CMakeLists.txt index 3d03253b..e43172a0 100644 --- a/programs/witness_node/CMakeLists.txt +++ b/programs/witness_node/CMakeLists.txt @@ -11,7 +11,7 @@ endif() # We have to link against graphene_debug_witness because deficiency in our API infrastructure doesn't allow plugins to be fully abstracted #246 target_link_libraries( witness_node - PRIVATE graphene_app graphene_account_history graphene_affiliate_stats graphene_market_history graphene_witness graphene_chain graphene_debug_witness graphene_bookie graphene_egenesis_full fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) + PRIVATE graphene_app graphene_account_history graphene_affiliate_stats graphene_market_history graphene_witness graphene_chain graphene_debug_witness graphene_bookie graphene_egenesis_full fc peerplays_sidechain ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) # also add dependencies to graphene_generate_genesis graphene_generate_uia_sharedrop_genesis if you want those plugins install( TARGETS diff --git a/programs/witness_node/main.cpp b/programs/witness_node/main.cpp index 34b22a2f..c9a09ca3 100644 --- a/programs/witness_node/main.cpp +++ b/programs/witness_node/main.cpp @@ -31,6 +31,7 @@ //#include #include #include +#include #include //#include @@ -91,6 +92,7 @@ int main(int argc, char** argv) { auto list_plug = node->register_plugin(); auto affiliate_stats_plug = node->register_plugin(); auto bookie_plug = node->register_plugin(); + auto peerplays_sidechain = node->register_plugin(); // auto snapshot_plug = node->register_plugin(); try