pub struct CommandRequest {
pub request_id: CommandRequestId,
pub expected_revision: u64,
pub envelope: CommandEnvelope,
}Fields§
§request_id: CommandRequestId§expected_revision: u64Must equal the persisted authoritative revision at command admission.
Accepted commands, persisted expected rejections, and completed
settlement boundaries advance the revision. Bare clock movement does
not, so declared external commands also carry envelope.expected_time.
envelope: CommandEnvelopeImplementations§
Source§impl CommandRequest
impl CommandRequest
Sourcepub const fn new(
request_id: CommandRequestId,
expected_revision: u64,
envelope: CommandEnvelope,
) -> CommandRequest
pub const fn new( request_id: CommandRequestId, expected_revision: u64, envelope: CommandEnvelope, ) -> CommandRequest
Examples found in repository?
examples/continuous_game_loop.rs (lines 275-279)
257 fn submit_player_command(&mut self) -> Result<(), CanwuError> {
258 let captured_at = self.presentation_time();
259 let due_at = if self.accumulated_sim_nanos == 0 {
260 self.authority.time()
261 } else {
262 self.authority
263 .time()
264 .checked_add(SIMULATION_QUANTUM)
265 .expect("the scripted command time must remain representable")
266 };
267 let envelope = CommandEnvelope::new(
268 Issuer::Actor(self.ids.commander),
269 Command::MoveArmy {
270 army: self.ids.army,
271 destination: self.ids.eastern_territory,
272 },
273 )
274 .at_time(due_at);
275 let request = CommandRequest::new(
276 CommandRequestId::new(1),
277 self.authority.revision(),
278 envelope,
279 );
280 let ingress = self.authority.enqueue_command(due_at, 0, request)?;
281
282 if self.verbose {
283 println!(
284 "INPUT: queued commander move as {:?}, captured_at={captured_at}, quantized_due_at={due_at}",
285 ingress.ingress_id,
286 );
287 }
288
289 // This drains ingress due at the current canonical time only. The
290 // mid-quantum command remains queued until normal accumulation reaches
291 // its quantized minute; future scheduled work is never jumped to.
292 let receipts = self.authority.advance_canonical(SimDuration::ZERO)?;
293 self.canonical_boundaries += receipts.len();
294 self.refresh_presentation_from_authority();
295 self.presentation.render(self.presentation_time());
296 if self.verbose {
297 self.print_frame(GameSpeed::X1);
298 }
299 self.report_new_events();
300 Ok(())
301 }Trait Implementations§
Source§impl Clone for CommandRequest
impl Clone for CommandRequest
Source§fn clone(&self) -> CommandRequest
fn clone(&self) -> CommandRequest
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for CommandRequest
impl Debug for CommandRequest
Source§impl<'de> Deserialize<'de> for CommandRequest
impl<'de> Deserialize<'de> for CommandRequest
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<CommandRequest, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<CommandRequest, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl PartialEq for CommandRequest
impl PartialEq for CommandRequest
Source§impl Serialize for CommandRequest
impl Serialize for CommandRequest
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl StructuralPartialEq for CommandRequest
Auto Trait Implementations§
impl Freeze for CommandRequest
impl RefUnwindSafe for CommandRequest
impl Send for CommandRequest
impl Sync for CommandRequest
impl Unpin for CommandRequest
impl UnsafeUnpin for CommandRequest
impl UnwindSafe for CommandRequest
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
Mutably borrows from an owned value. Read more