pub struct Session {Show 21 fields
pub name: String,
pub wasm: Vec<u8>,
pub assets: Assets,
pub params: HashMap<String, String>,
pub allow_net: bool,
pub allow_hosts: Vec<String>,
pub fetch: FetchMode,
pub app_id: Option<String>,
pub save: SaveTarget,
pub consent: Option<Consent>,
pub manifest: Option<Manifest>,
pub mod_requests: Vec<(String, Vec<String>)>,
pub storage: Storage,
pub load: LoadOptions,
pub gl_lib: Option<PathBuf>,
pub gl_software: bool,
pub gl_stats: bool,
pub profile: Option<PathBuf>,
pub media: MediaPolicy,
pub fullscreen: Option<bool>,
pub watch_assets: Vec<AssetWatch>,
}Fields§
§name: Stringshown in logs and the window title
wasm: Vec<u8>a .wasm module, or a .cwasm if load.allow_precompiled
assets: Assets§params: HashMap<String, String>§allow_net: bool§allow_hosts: Vec<String>with allow_net: only these hosts (--allow-net=a.org,*.b.org; empty: all)
fetch: FetchModegasm:fetch: live, recording or replaying responses (headless)
app_id: Option<String>--app-id: the game’s identity in gasm:fetch’s User-Agent
save: SaveTargetgasm:files: where the game’s saves for the player go
consent: Option<Consent>the window runner: ask the player about hosts and saves the command line didn’t allow
manifest: Option<Manifest>the game’s capabilities manifest (embedded, asset gasm.manifest or --manifest)
mod_requests: Vec<(String, Vec<String>)>mounted mods whose manifests ask for hosts: (file, hosts); each needs the player’s yes (or hosts –allow-net covers), else it’s unmounted before the game starts
storage: Storage§load: LoadOptions§gl_lib: Option<PathBuf>where ANGLE is (gasm:gl games): None searches the usual places (angle::find)
gl_software: boolgasm:gl on SwiftShader (software Vulkan) instead of the GPU
gl_stats: bool--gl-stats: count gasm:gl calls and print them when the game ends
profile: Option<PathBuf>--profile <out.json>: the main thread’s guest stacks (host::Profile)
media: MediaPolicygasm:media: --allow-media (the manifest’s “media” and the player’s consent are
added when the game starts)
fullscreen: Option<bool>a window that can go fullscreen (the window runner), and whether it starts so: what set_fullscreen and is_fullscreen answer from the first call (gasm_init’s too)
watch_assets: Vec<AssetWatch>--watch-asset name=path: files re-read as assets whenever they change
(create each watch before opening its file, so no change is missed)
Implementations§
Source§impl Session
impl Session
Sourcepub fn open_gl(
&self,
window: Option<NativeWindow>,
size: (u32, u32),
) -> Result<Angle, String>
pub fn open_gl( &self, window: Option<NativeWindow>, size: (u32, u32), ) -> Result<Angle, String>
ANGLE for this session’s gasm:gl game: offscreen at w×h, or in a window.
Sourcepub fn compile_in_background(&self) -> JoinHandle<Result<Module, Stop>>
pub fn compile_in_background(&self) -> JoinHandle<Result<Module, Stop>>
Instantiate the guest and run its init. reproducible: headless rules
(virtual time, fixed random sequence, hashing). gl: the GL that executes a
gasm:gl guest’s calls (None: the null GL).
Compile the module on a background thread (the window runner shows the splash
meanwhile); hand the result to Session::start_compiled.
pub fn start( self, audio: Option<Box<dyn AudioOut>>, gfx: Gfx, gl: Option<Angle>, reproducible: bool, hashing: bool, ) -> Result<Game, Stop>
Auto Trait Implementations§
impl !Freeze for Session
impl !RefUnwindSafe for Session
impl !Sync for Session
impl Send for Session
impl Unpin for Session
impl UnsafeUnpin for Session
impl UnwindSafe for Session
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.impl<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more