Struct fastly::handle::StreamingBodyHandle
source · 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 handle will be automatically aborted if it goes out of scope without calling
finish()
.
Implementations§
source§impl StreamingBodyHandle
impl StreamingBodyHandle
sourcepub fn finish(self) -> Result<(), HandleError>
pub fn finish(self) -> Result<(), HandleError>
Finish writing to a streaming body handle.
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 into_u32(self) -> u32
pub fn into_u32(self) -> u32
Turn a handle into its representation without closing the underlying resource.
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
👎Deprecated since 0.9.3: use std::io::Write::write() instead
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]);
sourcepub fn write_str(&mut self, string: &str) -> usize
👎Deprecated since 0.9.3: use std::io::Write::write() instead
pub fn write_str(&mut self, string: &str) -> usize
Write a string slice 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_str("woof woof");
Trait Implementations§
source§impl Debug for StreamingBodyHandle
impl Debug for StreamingBodyHandle
source§impl From<StreamingBodyHandle> for StreamingBody
impl From<StreamingBodyHandle> for StreamingBody
source§fn from(handle: StreamingBodyHandle) -> Self
fn from(handle: StreamingBodyHandle) -> Self
source§impl Hash for StreamingBodyHandle
impl Hash for StreamingBodyHandle
source§impl PartialEq for StreamingBodyHandle
impl PartialEq for StreamingBodyHandle
source§fn eq(&self, other: &StreamingBodyHandle) -> bool
fn eq(&self, other: &StreamingBodyHandle) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl Write for StreamingBodyHandle
impl Write for StreamingBodyHandle
source§fn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
source§fn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
can_vector
)1.0.0 · source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
write_all_vectored
)