MCPcopy Create free account
hub / github.com/awslabs/llrt / get_write_parameters

Function get_write_parameters

modules/llrt_buffer/src/buffer.rs:463–491  ·  view source on GitHub ↗
(args: &Rest<Value<'_>>, len: usize)

Source from the content-addressed store, hash-verified

461 string: String,
462 args: Rest<Value<'js>>,
463) -> Result<usize> {
464 let (offset, length, encoding) = get_write_parameters(&ctx, &args, this.0.len())?;
465
466 let target = ObjectBytes::from(&ctx, this.0.as_inner())?;
467
468 let mut writable_length = 0;
469
470 if let Some((array_buffer, target_byte_length, target_byte_offset)) =
471 target.get_array_buffer()?
472 {
473 let target_bytes =
474 resolve_view_bytes(&ctx, array_buffer, target_byte_length, target_byte_offset)?;
475
476 let encoder = Encoder::from_str(&encoding).or_throw(&ctx)?;
477
478 if encoder.as_label() == "utf-8" {
479 let (source_slice, valid_length) = safe_byte_slice(&string, length.min(string.len()));
480 writable_length = valid_length;
481 target_bytes[offset..offset + writable_length].copy_from_slice(source_slice);
482 } else {
483 let decode_bytes = encoder.decode_from_string(string).or_throw(&ctx)?;
484 writable_length = length.min(decode_bytes.len());
485 target_bytes[offset..offset + writable_length]
486 .copy_from_slice(&decode_bytes[..writable_length]);
487 };
488 }
489
490 Ok(writable_length)
491}
492
493fn get_write_parameters<'js>(
494 ctx: &Ctx<'js>,

Callers 1

writeFunction · 0.85

Calls 3

firstMethod · 0.80
to_stringMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected