Sha256: 01c441671894c0450d67ac37c1d71f2ba94bf26498debcb1335e3cbfbb57ff89

Contents?: true

Size: 1.6 KB

Versions: 2

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

module Deamons
  # Simple process to add wash trades to a market in order to simulate trade matching for QA and dev
  class Geth
    require 'utils'

    def initialize
      Process.fork do
        Process.daemon(true)
        pid = Process.pid
        redirect("#{pid}.outfile", "#{pid}.errfile")
        write_pid_file(pid, "#{pid}.pid")
        start
      end
      puts "Starting Daemon..."
    end

    def start
      cmd = "#{ENV.fetch('GETH')} --syncmode=light --rinkeby --rpc --rpcaddr=0.0.0.0 --rpcport=8545 --port=30303 --rpcapi='db,personal,eth,net,web3' --rpccorsdomain='*' --rpcvhosts='*'"
      system(cmd)
      cmd = "#{ENV.fetch('NGROK')}./ngrok http 8545"
      system(cmd)
      rescue ::StandardError => e
        STDERR.puts e.backtrace
        STDERR.puts '\n'
    end

    # Attempts to write the pid of the forked process to the pid file.
    # @param [Integer]  pid
    # @param [String]  pidfile
    # @return [Integer and File]
    def write_pid_file(pid, pidfile)
      File.open pidfile, "w" do |f|
        f.write pid
      end
    rescue ::Exception => e
      $stderr.puts "While writing the PID to file, unexpected #{e.class}: #{e}"
      Process.kill "HUP", pid
    end

    # Send stdout and stderr to log files for the child process
    # @param [String]  outfile
    # @param [String]  errfile
    # @return [TrueClass]
    def redirect(outfile, errfile)
      $stdin.reopen '/dev/null'
      out = File.new outfile, "a"
      err = File.new errfile, "a"
      $stdout.reopen out
      $stderr.reopen err
      $stdout.sync = $stderr.sync = true
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
SimBot-0.1.30 lib/Deamons/geth.rb
SimBot-0.1.29 lib/Deamons/geth.rb