gupax/src/README.md
2022-10-15 15:15:27 -04:00

3 KiB

Gupax source files

Structure

File/Folder Purpose
about.rs Struct/impl for About tab
constants.rs General constants needed in Gupax
gupax.rs Struct/impl for Gupax tab
main.rs Struct/enum/impl for App/Tab/State, init functions, main function
node.rs Struct/impl for Community Nodes
p2pool.rs Struct/impl for P2Pool tab
state.rs Struct/impl for gupax.toml, the disk state
status.rs Struct/impl for Status tab
xmrig.rs Struct/impl for XMRig tab

Bootstrap

This is how Gupax works internally when starting up, divided into 3 sections.

  1. INIT

    • Initialize custom console logging with log, env_logger || warn!
    • Initialize misc data (structs, text styles, thread count, images, etc) || panic!
    • Check for admin privilege (for XMRig) || warn!
    • Attempt to read gupax.toml || warn!, initialize config with default options
    • If errors were found, pop-up window
  2. AUTO

    • If auto_update == true, pop-up auto-updating window || info!, skip auto-update
    • Multi-threaded GitHub API check on Gupax -> P2Pool -> XMRig || warn!, skip auto-update
    • Multi-threaded download if current version != new version || warn!, skip auto-update
    • After download, atomically replace current binaries with new || warn!, skip auto-update
    • Update version metadata || warn!, skip auto-update
    • If auto_select == true, ping community nodes and select fastest one || warn!
  3. MAIN

    • All data must be initialized at this point, either via gupax.toml or default options || panic!
    • Start App frame || panic!
    • Write state to gupax.toml on user clicking Save (after checking input for correctness) || warn!
    • If ask_before_quit == true, check for running processes, unsaved state, and update connections before quitting
    • Kill processes, kill connections, exit

State

Internal state is saved in the "OS data folder" as gupax.toml, using the TOML format. If the version can't be parsed (not in the vX.X.X or vX.X format), the auto-updater will be skipped. If not found, a default gupax.toml file will be created with State::default. Gupax will panic! if gupax.toml has IO or parsing issues.

OS Data Folder Example
Windows {FOLDERID_LocalAppData} C:\Users\Alice\AppData\Roaming\Gupax\gupax.toml
macOS $HOME/Library/Application Support /Users/Alice/Library/Application Support/Gupax/gupax.toml
Linux $XDG_DATA_HOME or $HOME/.local/share /home/alice/.local/share/gupax/gupax.toml