Skip to content

Commit

Permalink
Update wasm-compose example based on latest changes. (#1154)
Browse files Browse the repository at this point in the history
This commit updates the wasm-compose example based on the latest
`cargo-component` changes.
  • Loading branch information
peterhuene committed Aug 4, 2023
1 parent 64fee0e commit 559ede0
Show file tree
Hide file tree
Showing 9 changed files with 31 additions and 36 deletions.
2 changes: 1 addition & 1 deletion crates/wasm-compose/example/middleware/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ publish = false

[dependencies]
flate2 = "1.0.24"
wit-bindgen = { version = "0.6.0", default_features = false }
cargo-component-bindings = { git = "https://github.com/bytecodealliance/cargo-component" }

[lib]
crate-type = ["cdylib"]
Expand Down
10 changes: 6 additions & 4 deletions crates/wasm-compose/example/middleware/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
use bindings::example::service::handler as downstream;
use bindings::exports::example::service::handler::{Error, Handler, Request, Response};
cargo_component_bindings::generate!();

use bindings::{
example::service::handler as downstream,
exports::example::service::handler::{Error, Handler, Request, Response},
};
use flate2::{write::GzEncoder, Compression};
use std::io::Write;

Expand Down Expand Up @@ -44,5 +48,3 @@ impl Handler for Component {
Ok(response)
}
}

bindings::export!(Component);
12 changes: 6 additions & 6 deletions crates/wasm-compose/example/server/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ publish = false

[dependencies]
async-std = { version = "1.12.0", features = ["attributes"] }
clap = { version = "3.2.23", features = ["derive"] }
driftwood = "0.0.6"
clap = { version = "4.3.19", features = ["derive"] }
driftwood = "0.0.7"
tide = "0.16.0"
wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "46826c62735dc22cc512fd5d23aa702a92e8a364", features = ["component-model"] }
wasmtime-wasi = { git = "https://github.com/bytecodealliance/wasmtime", rev = "46826c62735dc22cc512fd5d23aa702a92e8a364" }
wasi-cap-std-sync = { git = "https://github.com/bytecodealliance/wasmtime", rev = "46826c62735dc22cc512fd5d23aa702a92e8a364" }
anyhow = "1.0.71"
wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "7b9189b", features = ["component-model"] }
wasmtime-wasi = { git = "https://github.com/bytecodealliance/wasmtime", rev = "7b9189b" }
wasi-cap-std-sync = { git = "https://github.com/bytecodealliance/wasmtime", rev = "7b9189b" }
anyhow = "1.0.72"

[workspace]
2 changes: 1 addition & 1 deletion crates/wasm-compose/example/server/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ search-paths:
instantiations:
$input:
arguments:
example:service/handler: svc
example:service/handler@0.1.0: svc
29 changes: 11 additions & 18 deletions crates/wasm-compose/example/server/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use tide::{
};

use wasmtime::{component::*, Config, Engine, Store};
use wasmtime_wasi::preview2::{wasi, Table, WasiCtx, WasiCtxBuilder, WasiView};
use wasmtime_wasi::preview2::{command, Table, WasiCtx, WasiCtxBuilder, WasiView};

use exports::example::service::*;

Expand Down Expand Up @@ -118,33 +118,26 @@ impl ServerApp {
let body = req.body_bytes().await?;
let headers = req
.iter()
.map(|(n, v)| (n.as_str().as_bytes(), v.as_str().as_bytes()))
.map(|(n, v)| {
(
n.as_str().as_bytes().to_vec(),
v.as_str().as_bytes().to_vec(),
)
})
.collect::<Vec<_>>();

// Create a new store for the request
let state = req.state();
let mut linker = Linker::new(&state.engine);
wasi::filesystem::filesystem::add_to_linker(&mut linker, |x| x)?;
wasi::io::streams::add_to_linker(&mut linker, |x| x)?;
wasi::cli_base::environment::add_to_linker(&mut linker, |x| x)?;
wasi::cli_base::preopens::add_to_linker(&mut linker, |x| x)?;
wasi::cli_base::exit::add_to_linker(&mut linker, |x| x)?;
wasi::cli_base::stdin::add_to_linker(&mut linker, |x| x)?;
wasi::cli_base::stdout::add_to_linker(&mut linker, |x| x)?;
wasi::cli_base::stderr::add_to_linker(&mut linker, |x| x)?;
command::add_to_linker(&mut linker)?;

let wasi_view = ServerWasiView::new()?;
let mut store = Store::new(&state.engine, wasi_view);
let (service, _) = Service::instantiate_async(&mut store, &state.component, &linker).await?;
let (service, _) =
Service::instantiate_async(&mut store, &state.component, &linker).await?;
service
.example_service_handler()
.call_execute(
&mut store,
handler::Request {
headers: &headers,
body: &body,
},
)
.call_execute(&mut store, &handler::Request { headers, body })
.await?
.map(TryInto::try_into)
.map_err(handler::Error::into_tide)?
Expand Down
2 changes: 1 addition & 1 deletion crates/wasm-compose/example/service.wit
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package example:service
package example:service@0.1.0

interface handler {
record request {
Expand Down
2 changes: 1 addition & 1 deletion crates/wasm-compose/example/service/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ edition = "2021"
publish = false

[dependencies]
wit-bindgen = { version = "0.6.0", default_features = false }
cargo-component-bindings = { git = "https://github.com/bytecodealliance/cargo-component" }

[lib]
crate-type = ["cdylib"]
Expand Down
4 changes: 2 additions & 2 deletions crates/wasm-compose/example/service/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
cargo_component_bindings::generate!();

use bindings::exports::example::service::handler::{Error, Handler, Request, Response};
use std::str;

Expand Down Expand Up @@ -27,5 +29,3 @@ impl Handler for Component {
})
}
}

bindings::export!(Component);
4 changes: 2 additions & 2 deletions crates/wasm-compose/src/encoding.rs
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ impl<'a> TypeState<'a> {
type_exports_rev: HashMap::new(),
instance_exports: HashMap::new(),
type_defs: HashMap::new(),
encodable: encodable,
encodable,
},
);
self.scopes.push(prev);
Expand Down Expand Up @@ -1324,7 +1324,7 @@ fn toposort<'a>(
}
if let Some(list) = deps.get(cur) {
for dep in list {
toposort(*dep, deps, order);
toposort(dep, deps, order);
}
}
let ok = order.insert(cur);
Expand Down

0 comments on commit 559ede0

Please sign in to comment.