[][src]Crate gwasm_api

gwasm-api - gWasm API for Rust apps

gWasm is Golem's new meta use-case which allows Golem's developers/users to deploy their Wasm apps on Golem Network. This API providers convenience structures and functions for creating a gWasm task and connecting with Golem Network all from native Rust code.

Example

use gwasm_api::prelude::*;
use anyhow::Result;
use std::path::Path;

struct ProgressTracker;

impl ProgressUpdate for ProgressTracker {
    fn update(&mut self, progress: f64) {
        println!("Current progress = {}", progress);
    }
}

fn main() -> Result<()> {
    let binary = GWasmBinary {
        js: &[0u8; 100],   // JavaScript file generated by Emscripten
        wasm: &[0u8; 100], // Wasm binary generated by Emscripten
    };
    let task = TaskBuilder::new("workspace", binary)
        .push_subtask_data(vec![0u8; 100])
        .build()?;
    let computed_task = compute(
        Path::new("datadir"),
        "127.0.0.1",
        61000,
        Net::TestNet,
        task,
        ProgressTracker,
    )?;

    for subtask in computed_task.subtasks {
        for (_, reader) in subtask.data {
            assert!(!reader.buffer().is_empty());
        }
    }

    Ok(())
}

More examples

  • g-flite is a CLI which uses gwasm-api internally

Modules

error

Errors that can be returned by the library

golem

Convenience async functions for creating gWasm tasks, connecting to a Golem instance, and listening for task's progress as it's computed on Golem.

prelude

The gwasm-api prelude

task

Convenience types for creating and managing gWasm tasks

timeout

Types representing Golem Task's timeout values

Enums

Net

Traits

ProgressUpdate

Trait specifying the required interface for an object tracking the computation's progress

Functions

compute

A convenience function for running a gWasm Task on Golem