// // Created by mwo on 28/05/17. // #ifndef XMRBLOCKS_MEMPOOLSTATUS_H #define XMRBLOCKS_MEMPOOLSTATUS_H #include "MicroCore.h" #include #include #include #include #include #include namespace xmreg { struct MempoolStatus { struct mempool_tx { crypto::hash tx_hash; tx_info info; transaction tx; uint64_t sum_inputs {0}; uint64_t sum_outputs {0}; uint64_t no_inputs {0}; uint64_t no_outputs {0}; uint64_t num_nonrct_inputs {0}; uint64_t mixin_no {0}; string fee_str; string xmr_inputs_str; string xmr_outputs_str; string timestamp_str; string txsize; }; // to keep network_info in cache // and to show previous info in case current querry for // the current info timesout. struct network_info { uint64_t height; bool testnet; bool current; crypto::hash top_block_hash; uint64_t target_height; uint64_t difficulty; uint64_t target; uint64_t tx_count; uint64_t tx_pool_size; uint64_t alt_blocks_count; uint64_t outgoing_connections_count; uint64_t incoming_connections_count; uint64_t white_peerlist_size; uint64_t grey_peerlist_size; uint64_t cumulative_difficulty; uint64_t block_size_limit; uint64_t start_time; uint64_t hash_rate; uint64_t fee_per_kb; uint64_t info_timestamp; }; static boost::thread m_thread; static mutex mempool_mutx; static atomic is_running; static uint64_t mempool_refresh_time; static atomic mempool_no; // no of txs static atomic mempool_size; // size in bytes. static bf::path blockchain_path; static string deamon_url; static bool testnet; // make object for accessing the blockchain here static MicroCore* mcore; static Blockchain* core_storage; // vector of mempool transactions that all threads // can refer to // static vector mempool_txs; static atomic current_network_info; static void set_blockchain_variables(MicroCore* _mcore, Blockchain* _core_storage); static void start_mempool_status_thread(); static bool read_mempool(); static bool read_network_info(); static vector get_mempool_txs(); static bool is_thread_running(); }; } #endif //XMRBLOCKS_MEMPOOLSTATUS_H