Skip to content
This repository was archived by the owner on Jul 14, 2025. It is now read-only.

Commit 3a6486e

Browse files
authored
pre-kubecon patches (#226)
* enabling cors for all Signed-off-by: danbugs <[email protected]> * updated slight version Signed-off-by: danbugs <[email protected]> * kubecon patch Signed-off-by: danbugs <[email protected]> Signed-off-by: danbugs <[email protected]>
1 parent 95f60d6 commit 3a6486e

File tree

7 files changed

+82
-8
lines changed

7 files changed

+82
-8
lines changed

Cargo.lock

Lines changed: 12 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/http/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ wit-bindgen-wasmtime = { git = "https://github.com/Mossaka/wit-bindgen", rev = "
1313
url = "2.2"
1414
wit-error-rs = { git = "https://github.com/danbugs/wit-error-rs", rev = "05362f1a4a3a9dc6a1de39195e06d2d5d6491a5e" }
1515
routerify = "3"
16+
routerify-cors = "3"
1617
crossbeam-utils = "0.8"
1718
crossbeam-channel = "0.5"
1819
slight-events-api = { path = "../events-api" }

crates/http/src/lib.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use http::*;
1313
use hyper::{Body, Server};
1414
use routerify::ext::RequestExt;
1515
use routerify::{Router, RouterBuilder, RouterService};
16+
use routerify_cors::enable_cors_all;
1617
use slight_common::{impl_resource, Buildable, Builder, Ctx, HostState};
1718
use slight_events_api::ResourceMap;
1819
use tokio::sync::mpsc::{unbounded_channel, UnboundedReceiver, UnboundedSender};
@@ -229,14 +230,15 @@ impl<T: Buildable + Send + Sync + 'static> http::Http for Http<T> {
229230

230231
// The outer builder is used to define the route paths, while creating a scope
231232
// for the inner builder which passes states to the route handler.
232-
let mut outer_builder: RouterBuilder<Body, anyhow::Error> =
233-
Router::builder().data(instance_builder);
233+
let mut outer_builder: RouterBuilder<Body, http::Error> = Router::builder()
234+
.middleware(enable_cors_all())
235+
.data(instance_builder);
234236

235237
// There is a one-to-one mapping between the outer router's scope and inner router builder.
236238
let mut inner_routes = vec![];
237239
for route in router.routes.iter() {
238240
// per route state
239-
let mut inner_builder: RouterBuilder<Body, anyhow::Error> = Router::builder();
241+
let mut inner_builder: RouterBuilder<Body, http::Error> = Router::builder();
240242
inner_builder = inner_builder.data(route.clone());
241243
match route.method {
242244
Methods::GET => {
@@ -289,7 +291,7 @@ impl<T: Buildable + Send + Sync + 'static> http::Http for Http<T> {
289291

290292
async fn handler<T: Buildable + Send + Sync + 'static>(
291293
request: hyper::Request<Body>,
292-
) -> Result<hyper::Response<Body>> {
294+
) -> Result<hyper::Response<Body>, http::Error> {
293295
log::debug!("received request: {:?}", &request);
294296
let (parts, body) = request.into_parts();
295297

@@ -331,7 +333,11 @@ async fn handler<T: Buildable + Send + Sync + 'static>(
331333
// handler.handle_http(&mut store, req)
332334
// }).await???;
333335
// let rt = tokio::runtime::Handle::current();
334-
let res = handler.handle_http(&mut store, req).await??;
336+
let res = handler
337+
.handle_http(&mut store, req)
338+
.await
339+
.map_err(|e| anyhow::anyhow!(e.to_string()))?
340+
.map_err(|e| anyhow::anyhow!(e.to_string()))?;
335341
// let res = rt.block_on(async {
336342
// handler.handle_http(&mut store, req)
337343
// })??;

crates/mq/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ impl mq::Mq for Mq {
8585

8686
tracing::log::info!("Opening implementor {}", &state.implementor);
8787

88-
let inner = Self::Mq::new(&state.implementor, &state, &state.name).await;
88+
let inner = Self::Mq::new(&state.implementor, &state, name).await;
8989

9090
state
9191
.resource_map

examples/multi_capability-demo-clang/bindings/kv.c

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,19 @@ void kv_expected_unit_error_free(kv_expected_unit_error_t *ptr) {
8989
kv_error_free(&ptr->val.err);
9090
}
9191
}
92+
void kv_list_string_free(kv_list_string_t *ptr) {
93+
for (size_t i = 0; i < ptr->len; i++) {
94+
kv_string_free(&ptr->ptr[i]);
95+
}
96+
canonical_abi_free(ptr->ptr, ptr->len * 8, 4);
97+
}
98+
void kv_expected_list_string_error_free(kv_expected_list_string_error_t *ptr) {
99+
if (!ptr->is_err) {
100+
kv_list_string_free(&ptr->val.ok);
101+
} else {
102+
kv_error_free(&ptr->val.err);
103+
}
104+
}
92105
void kv_expected_observable_error_free(kv_expected_observable_error_t *ptr) {
93106
if (!ptr->is_err) {
94107
kv_observable_free(&ptr->val.ok);
@@ -186,6 +199,35 @@ void kv_kv_set(kv_kv_t self, kv_string_t *key, kv_payload_t *value, kv_expected_
186199
}
187200
}*ret0 = expected;
188201
}
202+
__attribute__((import_module("kv"), import_name("kv::keys")))
203+
void __wasm_import_kv_kv_keys(int32_t, int32_t);
204+
void kv_kv_keys(kv_kv_t self, kv_expected_list_string_error_t *ret0) {
205+
int32_t ptr = (int32_t) &RET_AREA;
206+
__wasm_import_kv_kv_keys((self).idx, ptr);
207+
kv_expected_list_string_error_t expected;
208+
switch ((int32_t) (*((uint8_t*) (ptr + 0)))) {
209+
case 0: {
210+
expected.is_err = false;
211+
212+
expected.val.ok = (kv_list_string_t) { (kv_string_t*)(*((int32_t*) (ptr + 4))), (size_t)(*((int32_t*) (ptr + 8))) };
213+
break;
214+
}
215+
case 1: {
216+
expected.is_err = true;
217+
kv_error_t variant;
218+
variant.tag = (int32_t) (*((uint8_t*) (ptr + 4)));
219+
switch ((int32_t) variant.tag) {
220+
case 0: {
221+
variant.val.error_with_description = (kv_string_t) { (char*)(*((int32_t*) (ptr + 8))), (size_t)(*((int32_t*) (ptr + 12))) };
222+
break;
223+
}
224+
}
225+
226+
expected.val.err = variant;
227+
break;
228+
}
229+
}*ret0 = expected;
230+
}
189231
__attribute__((import_module("kv"), import_name("kv::delete")))
190232
void __wasm_import_kv_kv_delete(int32_t, int32_t, int32_t, int32_t);
191233
void kv_kv_delete(kv_kv_t self, kv_string_t *key, kv_expected_unit_error_t *ret0) {

examples/multi_capability-demo-clang/bindings/kv.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,19 @@ extern "C"
6363
} val;
6464
} kv_expected_unit_error_t;
6565
void kv_expected_unit_error_free(kv_expected_unit_error_t *ptr);
66+
typedef struct {
67+
kv_string_t *ptr;
68+
size_t len;
69+
} kv_list_string_t;
70+
void kv_list_string_free(kv_list_string_t *ptr);
71+
typedef struct {
72+
bool is_err;
73+
union {
74+
kv_list_string_t ok;
75+
kv_error_t err;
76+
} val;
77+
} kv_expected_list_string_error_t;
78+
void kv_expected_list_string_error_free(kv_expected_list_string_error_t *ptr);
6679
typedef struct {
6780
bool is_err;
6881
union {
@@ -74,6 +87,7 @@ extern "C"
7487
void kv_kv_open(kv_string_t *name, kv_expected_kv_error_t *ret0);
7588
void kv_kv_get(kv_kv_t self, kv_string_t *key, kv_expected_payload_error_t *ret0);
7689
void kv_kv_set(kv_kv_t self, kv_string_t *key, kv_payload_t *value, kv_expected_unit_error_t *ret0);
90+
void kv_kv_keys(kv_kv_t self, kv_expected_list_string_error_t *ret0);
7791
void kv_kv_delete(kv_kv_t self, kv_string_t *key, kv_expected_unit_error_t *ret0);
7892
void kv_kv_watch(kv_kv_t self, kv_string_t *key, kv_expected_observable_error_t *ret0);
7993
#ifdef __cplusplus

slight/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "slight"
3-
version = "0.1.0"
3+
version = "0.2.0"
44
edition = "2021"
55
authors = ["DeisLabs Engineering Team"]
66

0 commit comments

Comments
 (0)