Struct fastly::handle::StreamingBodyHandle
source · [−]#[repr(transparent)]pub struct StreamingBodyHandle { /* private fields */ }
Expand description
A low-level interface to a streaming HTTP body.
The interface to this type is very similar to BodyHandle
, however it is write-only, and can
only be created as a result of calling
ResponseHandle::send_to_client()
or
RequestHandle::send_async_streaming()
.
This type implements Write
to write to the end of a body. Note that these operations are
unbuffered, unlike the same operations on the higher-level Body
type.
A streaming body will be automatically closed when it goes out of scope, or when it is passed to
drop()
.
Implementations
sourceimpl StreamingBodyHandle
impl StreamingBodyHandle
sourcepub fn from_body_handle(body_handle: BodyHandle) -> Self
pub fn from_body_handle(body_handle: BodyHandle) -> Self
Make a streaming body handle from a non-streaming handle.
This should only be used when calling the raw ABI directly, and care should be taken not to reuse or alias handle values.
sourcepub unsafe fn as_u32(&self) -> u32
pub unsafe fn as_u32(&self) -> u32
Get the underlying representation of the handle.
This should only be used when calling the raw ABI directly, and care should be taken not to reuse or alias handle values.
sourcepub fn append(&mut self, other: BodyHandle)
pub fn append(&mut self, other: BodyHandle)
Append another body onto the end of this body.
This operation is performed in amortized constant time, and so should always be preferred to reading an entire body and then writing the same contents to another body.
The other body will no longer be valid after this call.
Examples
let mut streaming_body = response_handle.stream_to_client(BodyHandle::new());
streaming_body.append(other_body);
sourcepub fn write_bytes(&mut self, bytes: &[u8]) -> usize
pub fn write_bytes(&mut self, bytes: &[u8]) -> usize
Write a slice of bytes to the end of this streaming body, and return the number of bytes written.
Examples
let mut streaming_body = response_handle.stream_to_client(BodyHandle::new());
streaming_body.write_bytes(&[0, 1, 2, 3]);
Trait Implementations
sourceimpl Debug for StreamingBodyHandle
impl Debug for StreamingBodyHandle
sourceimpl From<StreamingBodyHandle> for StreamingBody
impl From<StreamingBodyHandle> for StreamingBody
sourcefn from(handle: StreamingBodyHandle) -> Self
fn from(handle: StreamingBodyHandle) -> Self
sourceimpl Hash for StreamingBodyHandle
impl Hash for StreamingBodyHandle
sourceimpl PartialEq<StreamingBodyHandle> for StreamingBodyHandle
impl PartialEq<StreamingBodyHandle> for StreamingBodyHandle
sourcefn eq(&self, other: &StreamingBodyHandle) -> bool
fn eq(&self, other: &StreamingBodyHandle) -> bool
sourceimpl Write for StreamingBodyHandle
impl Write for StreamingBodyHandle
sourcefn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
sourcefn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
sourcefn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
can_vector
)1.0.0 · sourcefn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
sourcefn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
write_all_vectored
)