diff options
author | kenshi84 <kenshi84@protonmail.ch> | 2017-01-27 00:07:23 +0900 |
---|---|---|
committer | kenshi84 <kenshi84@protonmail.ch> | 2017-02-08 22:45:15 +0900 |
commit | 8027ce0c75f882de0523e668defa0bc3c8564e96 (patch) | |
tree | 40066ffa7c7afb28907291c93863d8cfdb14920c /src/cryptonote_core/miner.h | |
parent | Merge pull request #1679 (diff) | |
download | monero-8027ce0c75f882de0523e668defa0bc3c8564e96.tar.xz |
extract some basic code from libcryptonote_core into libcryptonote_basic
Diffstat (limited to 'src/cryptonote_core/miner.h')
-rw-r--r-- | src/cryptonote_core/miner.h | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/src/cryptonote_core/miner.h b/src/cryptonote_core/miner.h deleted file mode 100644 index f24f6e960..000000000 --- a/src/cryptonote_core/miner.h +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright (c) 2014-2016, The Monero Project -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, are -// permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this list of -// conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, this list -// of conditions and the following disclaimer in the documentation and/or other -// materials provided with the distribution. -// -// 3. Neither the name of the copyright holder nor the names of its contributors may be -// used to endorse or promote products derived from this software without specific -// prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL -// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF -// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers - -#pragma once - -#include <boost/program_options.hpp> -#include <atomic> -#include "cryptonote_basic.h" -#include "difficulty.h" -#include "math_helper.h" - - -namespace cryptonote -{ - - struct i_miner_handler - { - virtual bool handle_block_found(block& b) = 0; - virtual bool get_block_template(block& b, const account_public_address& adr, difficulty_type& diffic, uint64_t& height, const blobdata& ex_nonce) = 0; - protected: - ~i_miner_handler(){}; - }; - - /************************************************************************/ - /* */ - /************************************************************************/ - class miner - { - public: - miner(i_miner_handler* phandler); - ~miner(); - bool init(const boost::program_options::variables_map& vm, bool testnet); - static void init_options(boost::program_options::options_description& desc); - bool set_block_template(const block& bl, const difficulty_type& diffic, uint64_t height); - bool on_block_chain_update(); - bool start(const account_public_address& adr, size_t threads_count, const boost::thread::attributes& attrs); - uint64_t get_speed() const; - uint32_t get_threads_count() const; - void send_stop_signal(); - bool stop(); - bool is_mining() const; - const account_public_address& get_mining_address() const; - bool on_idle(); - void on_synchronized(); - //synchronous analog (for fast calls) - static bool find_nonce_for_given_block(block& bl, const difficulty_type& diffic, uint64_t height); - void pause(); - void resume(); - void do_print_hashrate(bool do_hr); - - private: - bool worker_thread(); - bool request_block_template(); - void merge_hr(); - - struct miner_config - { - uint64_t current_extra_message_index; - - BEGIN_KV_SERIALIZE_MAP() - KV_SERIALIZE(current_extra_message_index) - END_KV_SERIALIZE_MAP() - }; - - - volatile uint32_t m_stop; - epee::critical_section m_template_lock; - block m_template; - std::atomic<uint32_t> m_template_no; - std::atomic<uint32_t> m_starter_nonce; - difficulty_type m_diffic; - uint64_t m_height; - volatile uint32_t m_thread_index; - volatile uint32_t m_threads_total; - std::atomic<int32_t> m_pausers_count; - epee::critical_section m_miners_count_lock; - - std::list<boost::thread> m_threads; - epee::critical_section m_threads_lock; - i_miner_handler* m_phandler; - account_public_address m_mine_address; - epee::math_helper::once_a_time_seconds<5> m_update_block_template_interval; - epee::math_helper::once_a_time_seconds<2> m_update_merge_hr_interval; - std::vector<blobdata> m_extra_messages; - miner_config m_config; - std::string m_config_folder_path; - std::atomic<uint64_t> m_last_hr_merge_time; - std::atomic<uint64_t> m_hashes; - std::atomic<uint64_t> m_current_hash_rate; - epee::critical_section m_last_hash_rates_lock; - std::list<uint64_t> m_last_hash_rates; - bool m_do_print_hashrate; - bool m_do_mining; - - }; -} - - - |