Skip to content

Commit d6a0408

Browse files
committed
factors: Naming updates
Signed-off-by: Lann Martin <[email protected]>
1 parent 4b214c1 commit d6a0408

File tree

4 files changed

+53
-40
lines changed

4 files changed

+53
-40
lines changed

crates/factor-wasi/src/lib.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
pub mod preview1;
22

3-
use spin_factors::{Factor, FactorBuilder, InitContext, PrepareContext, Result, SpinFactors};
3+
use spin_factors::{
4+
Factor, FactorInstancePreparer, InitContext, PrepareContext, Result, SpinFactors,
5+
};
46
use wasmtime_wasi::{ResourceTable, WasiCtx, WasiCtxBuilder, WasiView};
57

68
pub struct WasiFactor;
79

810
impl Factor for WasiFactor {
9-
type Builder = Builder;
10-
type Data = Data;
11+
type InstancePreparer = Builder;
12+
type InstanceState = InstanceState;
1113

1214
fn init<Factors: SpinFactors>(&mut self, mut ctx: InitContext<Factors, Self>) -> Result<()> {
1315
use wasmtime_wasi::bindings;
@@ -46,8 +48,8 @@ pub struct Builder {
4648
wasi_ctx: WasiCtxBuilder,
4749
}
4850

49-
impl FactorBuilder<WasiFactor> for Builder {
50-
fn prepare<Factors: SpinFactors>(
51+
impl FactorInstancePreparer<WasiFactor> for Builder {
52+
fn new<Factors: SpinFactors>(
5153
_factor: &WasiFactor,
5254
_ctx: PrepareContext<Factors>,
5355
) -> Result<Self> {
@@ -56,20 +58,20 @@ impl FactorBuilder<WasiFactor> for Builder {
5658
})
5759
}
5860

59-
fn build(mut self) -> Result<Data> {
60-
Ok(Data {
61+
fn prepare(mut self) -> Result<InstanceState> {
62+
Ok(InstanceState {
6163
ctx: self.wasi_ctx.build(),
6264
table: Default::default(),
6365
})
6466
}
6567
}
6668

67-
pub struct Data {
69+
pub struct InstanceState {
6870
ctx: WasiCtx,
6971
table: ResourceTable,
7072
}
7173

72-
impl WasiView for Data {
74+
impl WasiView for InstanceState {
7375
fn ctx(&mut self) -> &mut WasiCtx {
7476
&mut self.ctx
7577
}

crates/factor-wasi/src/preview1.rs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1-
use spin_factors::{Factor, FactorBuilder, ModuleInitContext, PrepareContext, Result, SpinFactors};
1+
use spin_factors::{
2+
Factor, FactorInstancePreparer, ModuleInitContext, PrepareContext, Result, SpinFactors,
3+
};
24
use wasmtime_wasi::{preview1::WasiP1Ctx, WasiCtxBuilder};
35

46
pub struct WasiPreview1Factor;
57

68
impl Factor for WasiPreview1Factor {
7-
type Builder = Builder;
8-
type Data = WasiP1Ctx;
9+
type InstancePreparer = Builder;
10+
type InstanceState = WasiP1Ctx;
911

10-
fn module_init<Factors: SpinFactors>(&mut self, mut ctx: ModuleInitContext<Factors, Self>) -> Result<()> {
12+
fn module_init<Factors: SpinFactors>(
13+
&mut self,
14+
mut ctx: ModuleInitContext<Factors, Self>,
15+
) -> Result<()> {
1116
ctx.link_bindings(wasmtime_wasi::preview1::add_to_linker_async)
1217
}
1318
}
@@ -16,8 +21,8 @@ pub struct Builder {
1621
wasi_ctx: WasiCtxBuilder,
1722
}
1823

19-
impl FactorBuilder<WasiPreview1Factor> for Builder {
20-
fn prepare<Factors: SpinFactors>(
24+
impl FactorInstancePreparer<WasiPreview1Factor> for Builder {
25+
fn new<Factors: SpinFactors>(
2126
_factor: &WasiPreview1Factor,
2227
_ctx: PrepareContext<Factors>,
2328
) -> Result<Self> {
@@ -26,7 +31,7 @@ impl FactorBuilder<WasiPreview1Factor> for Builder {
2631
})
2732
}
2833

29-
fn build(mut self) -> Result<<WasiPreview1Factor as Factor>::Data> {
34+
fn prepare(mut self) -> Result<<WasiPreview1Factor as Factor>::InstanceState> {
3035
Ok(self.wasi_ctx.build_p1())
3136
}
3237
}

crates/factors-derive/src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ fn expand_factors(input: &DeriveInput) -> syn::Result<TokenStream> {
2121
let vis = &input.vis;
2222

2323
let builders_name = format_ident!("{name}Builders");
24-
let data_name = format_ident!("{name}Data");
24+
let data_name = format_ident!("{name}InstanceState");
2525

2626
if !input.generics.params.is_empty() {
2727
return Err(Error::new_spanned(
@@ -116,7 +116,7 @@ fn expand_factors(input: &DeriveInput) -> syn::Result<TokenStream> {
116116

117117
impl #factors_path::SpinFactors for #name {
118118
type Builders = #builders_name;
119-
type Data = #data_name;
119+
type InstanceState = #data_name;
120120

121121
unsafe fn factor_builder_offset<T: #Factor>() -> Option<usize> {
122122
let type_id = #TypeId::of::<T>();
@@ -132,7 +132,7 @@ fn expand_factors(input: &DeriveInput) -> syn::Result<TokenStream> {
132132
let type_id = #TypeId::of::<T>();
133133
#(
134134
if type_id == #TypeId::of::<#factor_types>() {
135-
return Some(std::mem::offset_of!(Self::Data, #factor_names));
135+
return Some(std::mem::offset_of!(Self::InstanceState, #factor_names));
136136
}
137137
)*
138138
None
@@ -148,7 +148,7 @@ fn expand_factors(input: &DeriveInput) -> syn::Result<TokenStream> {
148148

149149
#vis struct #data_name {
150150
#(
151-
pub #factor_names: <#factor_types as #Factor>::Data,
151+
pub #factor_names: <#factor_types as #Factor>::InstanceState,
152152
)*
153153
}
154154
})

crates/factors/src/lib.rs

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ pub use wasmtime;
88
pub type Error = wasmtime::Error;
99
pub type Result<T, E = Error> = std::result::Result<T, E>;
1010

11-
pub type Linker<Factors> = wasmtime::component::Linker<<Factors as SpinFactors>::Data>;
12-
pub type ModuleLinker<Factors> = wasmtime::Linker<<Factors as SpinFactors>::Data>;
11+
pub type Linker<Factors> = wasmtime::component::Linker<<Factors as SpinFactors>::InstanceState>;
12+
pub type ModuleLinker<Factors> = wasmtime::Linker<<Factors as SpinFactors>::InstanceState>;
1313

1414
pub trait Factor: Any + Sized {
15-
type Builder: FactorBuilder<Self>;
16-
type Data;
15+
type InstancePreparer: FactorInstancePreparer<Self>;
16+
type InstanceState;
1717

1818
/// Initializes this Factor for a runtime. This will be called exactly once
1919
fn init<Factors: SpinFactors>(&mut self, mut ctx: InitContext<Factors, Self>) -> Result<()> {
@@ -37,7 +37,7 @@ pub trait Factor: Any + Sized {
3737

3838
pub struct FactorInitContext<'a, Factors: SpinFactors, Fact: Factor, Linker> {
3939
linker: &'a mut Linker,
40-
get_data: fn(&mut Factors::Data) -> &mut Fact::Data,
40+
get_data: fn(&mut Factors::InstanceState) -> &mut Fact::InstanceState,
4141
}
4242

4343
pub type InitContext<'a, Factors, Fact> = FactorInitContext<'a, Factors, Fact, Linker<Factors>>;
@@ -49,7 +49,7 @@ impl<'a, Factors: SpinFactors, Fact: Factor, Linker> FactorInitContext<'a, Facto
4949
#[doc(hidden)]
5050
pub fn new(
5151
linker: &'a mut Linker,
52-
get_data: fn(&mut Factors::Data) -> &mut Fact::Data,
52+
get_data: fn(&mut Factors::InstanceState) -> &mut Fact::InstanceState,
5353
) -> Self {
5454
Self { linker, get_data }
5555
}
@@ -60,15 +60,18 @@ impl<'a, Factors: SpinFactors, Fact: Factor, Linker> FactorInitContext<'a, Facto
6060

6161
pub fn link_bindings(
6262
&mut self,
63-
add_to_linker: impl Fn(&mut Linker, fn(&mut Factors::Data) -> &mut Fact::Data) -> Result<()>,
63+
add_to_linker: impl Fn(
64+
&mut Linker,
65+
fn(&mut Factors::InstanceState) -> &mut Fact::InstanceState,
66+
) -> Result<()>,
6467
) -> Result<()>
6568
where {
6669
add_to_linker(self.linker, self.get_data)
6770
}
6871
}
6972

7073
impl<'a, Factors: SpinFactors> PrepareContext<'a, Factors> {
71-
pub fn builder_mut<T: Factor>(&mut self) -> Result<&mut T::Builder> {
74+
pub fn builder_mut<T: Factor>(&mut self) -> Result<&mut T::InstancePreparer> {
7275
let err_msg = match Factors::builder_mut::<T>(self.builders) {
7376
Some(Some(builder)) => return Ok(builder),
7477
Some(None) => "builder not yet prepared",
@@ -84,23 +87,24 @@ impl<'a, Factors: SpinFactors> PrepareContext<'a, Factors> {
8487
/// Implemented by `#[derive(SpinFactors)]`
8588
pub trait SpinFactors: Sized {
8689
type Builders;
87-
type Data: Send + 'static;
90+
type InstanceState: Send + 'static;
8891

8992
#[doc(hidden)]
9093
unsafe fn factor_builder_offset<T: Factor>() -> Option<usize>;
9194

9295
#[doc(hidden)]
9396
unsafe fn factor_data_offset<T: Factor>() -> Option<usize>;
9497

95-
fn data_getter<T: Factor>() -> Option<Getter<Self::Data, T::Data>> {
98+
fn data_getter<T: Factor>() -> Option<Getter<Self::InstanceState, T::InstanceState>> {
9699
let offset = unsafe { Self::factor_data_offset::<T>()? };
97100
Some(Getter {
98101
offset,
99102
_phantom: PhantomData,
100103
})
101104
}
102105

103-
fn data_getter2<T1: Factor, T2: Factor>() -> Option<Getter2<Self::Data, T1::Data, T2::Data>> {
106+
fn data_getter2<T1: Factor, T2: Factor>(
107+
) -> Option<Getter2<Self::InstanceState, T1::InstanceState, T2::InstanceState>> {
104108
let offset1 = unsafe { Self::factor_data_offset::<T1>()? };
105109
let offset2 = unsafe { Self::factor_data_offset::<T2>()? };
106110
assert_ne!(
@@ -114,11 +118,13 @@ pub trait SpinFactors: Sized {
114118
})
115119
}
116120

117-
fn builder_mut<T: Factor>(builders: &mut Self::Builders) -> Option<Option<&mut T::Builder>> {
121+
fn builder_mut<T: Factor>(
122+
builders: &mut Self::Builders,
123+
) -> Option<Option<&mut T::InstancePreparer>> {
118124
unsafe {
119125
let offset = Self::factor_builder_offset::<T>()?;
120126
let ptr = builders as *mut Self::Builders;
121-
let opt = &mut *ptr.add(offset).cast::<Option<T::Builder>>();
127+
let opt = &mut *ptr.add(offset).cast::<Option<T::InstancePreparer>>();
122128
Some(opt.as_mut())
123129
}
124130
}
@@ -174,10 +180,10 @@ impl<T, U, V> Clone for Getter2<T, U, V> {
174180
}
175181
impl<T, U, V> Copy for Getter2<T, U, V> {}
176182

177-
pub trait FactorBuilder<T: Factor>: Sized {
178-
fn prepare<Factors: SpinFactors>(_factor: &T, _ctx: PrepareContext<Factors>) -> Result<Self>;
183+
pub trait FactorInstancePreparer<T: Factor>: Sized {
184+
fn new<Factors: SpinFactors>(_factor: &T, _ctx: PrepareContext<Factors>) -> Result<Self>;
179185

180-
fn build(self) -> Result<T::Data>;
186+
fn prepare(self) -> Result<T::InstanceState>;
181187
}
182188

183189
pub struct PrepareContext<'a, Factors: SpinFactors> {
@@ -194,16 +200,16 @@ impl<'a, Factors: SpinFactors> PrepareContext<'a, Factors> {
194200

195201
pub type DefaultBuilder = ();
196202

197-
impl<T: Factor> FactorBuilder<T> for DefaultBuilder
203+
impl<T: Factor> FactorInstancePreparer<T> for DefaultBuilder
198204
where
199-
T::Data: Default,
205+
T::InstanceState: Default,
200206
{
201-
fn prepare<Factors: SpinFactors>(factor: &T, ctx: PrepareContext<Factors>) -> Result<Self> {
207+
fn new<Factors: SpinFactors>(factor: &T, ctx: PrepareContext<Factors>) -> Result<Self> {
202208
(_, _) = (factor, ctx);
203209
Ok(())
204210
}
205211

206-
fn build(self) -> Result<T::Data> {
212+
fn prepare(self) -> Result<T::InstanceState> {
207213
Ok(Default::default())
208214
}
209215
}

0 commit comments

Comments
 (0)