github.com/igggame/nebulas-go@v2.1.0+incompatible/nbre/cmd/dummy_neb/generator/auth_table_generator.h (about)

     1  // Copyright (C) 2018 go-nebulas authors
     2  //
     3  // This file is part of the go-nebulas library.
     4  //
     5  // the go-nebulas library is free software: you can redistribute it and/or
     6  // modify
     7  // it under the terms of the GNU General Public License as published by
     8  // the Free Software Foundation, either version 3 of the License, or
     9  // (at your option) any later version.
    10  //
    11  // the go-nebulas library is distributed in the hope that it will be useful,
    12  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    13  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    14  // GNU General Public License for more details.
    15  //
    16  // You should have received a copy of the GNU General Public License
    17  // along with the go-nebulas library.  If not, see
    18  // <http://www.gnu.org/licenses/>.
    19  //
    20  #pragma once
    21  #include "cmd/dummy_neb/generator/generator_base.h"
    22  
    23  class auth_table_check_task : public checker_task_base {
    24  public:
    25    virtual void check() = 0;
    26    virtual std::string name() = 0;
    27    virtual std::string serialize_to_string() = 0;
    28    virtual void deserialize_from_string(const std::string &s);
    29  };
    30  
    31  class auth_table_generator : public generator_base {
    32  public:
    33    auth_table_generator(all_accounts *accounts, generate_block *block);
    34  
    35    virtual ~auth_table_generator();
    36  
    37    inline void reset() {
    38      m_nr_admin_addr = address_t();
    39      m_dip_admin_addr = address_t();
    40    }
    41  
    42    inline void set_nr_admin_addr(const address_t &addr) {
    43      m_nr_admin_addr = addr;
    44    }
    45    inline void set_dip_admin_addr(const address_t &addr) {
    46      m_dip_admin_addr = addr;
    47    }
    48    inline void set_auth_admin_addr(const address_t &addr) {
    49      m_auth_admin_addr = addr;
    50    }
    51  
    52    virtual std::shared_ptr<corepb::Account> gen_account();
    53    virtual std::shared_ptr<corepb::Transaction> gen_tx();
    54    virtual checker_tasks::task_container_ptr_t gen_tasks();
    55  
    56  protected:
    57    address_t m_nr_admin_addr;
    58    address_t m_dip_admin_addr;
    59    address_t m_auth_admin_addr;
    60  };
    61  
    62  neb::bytes gen_auth_table_payload(const address_t &nr_admin,
    63                                    const address_t &dip_admin);