// Copyright (c) 2011-2016 The Cryptonote developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #pragma once #include #include #include #include "WalletRpcServerCommandsDefinitions.h" #include "WalletLegacy/WalletLegacy.h" #include "Common/CommandLine.h" #include "Rpc/HttpServer.h" #include namespace Tools { /************************************************************************/ /* */ /************************************************************************/ class wallet_rpc_server : CryptoNote::HttpServer { public: wallet_rpc_server( System::Dispatcher& dispatcher, Logging::ILogger& log, CryptoNote::IWalletLegacy &w, CryptoNote::INode &n, CryptoNote::Currency& currency, const std::string& walletFilename); static void init_options(boost::program_options::options_description& desc); bool init(const boost::program_options::variables_map& vm); bool run(); void send_stop_signal(); static const command_line::arg_descriptor arg_rpc_bind_port; static const command_line::arg_descriptor arg_rpc_bind_ip; private: virtual void processRequest(const CryptoNote::HttpRequest& request, CryptoNote::HttpResponse& response) override; //json_rpc bool on_getbalance(const wallet_rpc::COMMAND_RPC_GET_BALANCE::request& req, wallet_rpc::COMMAND_RPC_GET_BALANCE::response& res); bool on_transfer(const wallet_rpc::COMMAND_RPC_TRANSFER::request& req, wallet_rpc::COMMAND_RPC_TRANSFER::response& res); bool on_store(const wallet_rpc::COMMAND_RPC_STORE::request& req, wallet_rpc::COMMAND_RPC_STORE::response& res); bool on_get_payments(const wallet_rpc::COMMAND_RPC_GET_PAYMENTS::request& req, wallet_rpc::COMMAND_RPC_GET_PAYMENTS::response& res); bool on_get_transfers(const wallet_rpc::COMMAND_RPC_GET_TRANSFERS::request& req, wallet_rpc::COMMAND_RPC_GET_TRANSFERS::response& res); bool on_get_height(const wallet_rpc::COMMAND_RPC_GET_HEIGHT::request& req, wallet_rpc::COMMAND_RPC_GET_HEIGHT::response& res); bool on_reset(const wallet_rpc::COMMAND_RPC_RESET::request& req, wallet_rpc::COMMAND_RPC_RESET::response& res); bool handle_command_line(const boost::program_options::variables_map& vm); Logging::LoggerRef logger; CryptoNote::IWalletLegacy& m_wallet; CryptoNote::INode& m_node; uint16_t m_port; std::string m_bind_ip; CryptoNote::Currency& m_currency; const std::string m_walletFilename; System::Dispatcher& m_dispatcher; System::Event m_stopComplete; }; }