pub enum PingUploadTask {
    Upload {
        request: PingRequest,
    },
    Wait {
        time: u64,
    },
    Done { /* private fields */ },
}
Expand description

An enum representing the possible upload tasks to be performed by an uploader.

When asking for the next ping request to upload, the requester may receive one out of three possible tasks.

Variants§

§

Upload

Fields

§request: PingRequest

The ping request for upload See PingRequest for more information.

An upload task

§

Wait

Fields

§time: u64

The time in milliseconds the requester should wait before requesting a new task.

A flag signaling that the pending pings directories are not done being processed, thus the requester should wait and come back later.

§

Done

A flag signaling that requester doesn’t need to request any more upload tasks at this moment.

There are three possibilities for this scenario:

  • Pending pings queue is empty, no more pings to request;
  • Requester has gotten more than MAX_WAIT_ATTEMPTS (3, by default) PingUploadTask::Wait responses in a row;
  • Requester has reported more than MAX_RECOVERABLE_FAILURES_PER_UPLOADING_WINDOW recoverable upload failures on the same uploading window (see below) and should stop requesting at this moment.

An “uploading window” starts when a requester gets a new PingUploadTask::Upload(PingRequest) response and finishes when they finally get a PingUploadTask::Done or PingUploadTask::Wait response.

Implementations§

source§

impl PingUploadTask

source

pub fn is_upload(&self) -> bool

Whether the current task is an upload task.

source

pub fn is_wait(&self) -> bool

Whether the current task is wait task.

Trait Implementations§

source§

impl<UT> ConvertError<UT> for PingUploadTask

source§

fn try_convert_unexpected_callback_error( e: UnexpectedUniFFICallbackError ) -> Result<Self>

source§

impl Debug for PingUploadTask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<UT> FfiConverter<UT> for PingUploadTask

§

type FfiType = RustBuffer

The low-level type used for passing values of this type over the FFI. Read more
source§

fn lower(v: Self) -> RustBuffer

Lower a rust value of the target type, into an FFI value of type Self::FfiType. Read more
source§

fn try_lift(buf: RustBuffer) -> Result<Self>

Lift a rust value of the target type, from an FFI value of type Self::FfiType. Read more
source§

fn write(obj: Self, buf: &mut Vec<u8>)

Write a rust value into a buffer, to send over the FFI in serialized form. Read more
source§

fn try_read(buf: &mut &[u8]) -> Result<Self>

Read a rust value from a buffer, received over the FFI in serialized form. Read more
source§

const TYPE_ID_META: MetadataBuffer = _

Type ID metadata, serialized into a [MetadataBuffer].
source§

impl<UT> Lift<UT> for PingUploadTask

§

type FfiType = <PingUploadTask as FfiConverter<UT>>::FfiType

source§

fn try_lift(v: Self::FfiType) -> Result<Self>

source§

fn try_read(buf: &mut &[u8]) -> Result<Self>

§

fn try_lift_from_rust_buffer(v: RustBuffer) -> Result<Self, Error>

Convenience method
source§

impl<UT> LiftRef<UT> for PingUploadTask

source§

impl<UT> LiftReturn<UT> for PingUploadTask

§

type ReturnType = <PingUploadTask as Lift<UT>>::FfiType

FFI return type for trait interfaces
source§

fn try_lift_successful_return(v: Self::ReturnType) -> Result<Self>

Lift a successfully returned value from a trait interface
§

fn lift_foreign_return( ffi_return: Self::ReturnType, call_status: RustCallStatus ) -> Self

Lift a foreign returned value from a trait interface Read more
§

fn lift_error(_buf: RustBuffer) -> Self

Lift a Rust value for a callback interface method error result Read more
§

fn handle_callback_unexpected_error(e: UnexpectedUniFFICallbackError) -> Self

Lift a Rust value for an unexpected callback interface error Read more
source§

impl<UT> Lower<UT> for PingUploadTask

§

type FfiType = <PingUploadTask as FfiConverter<UT>>::FfiType

source§

fn lower(obj: Self) -> Self::FfiType

source§

fn write(obj: Self, buf: &mut Vec<u8>)

§

fn lower_into_rust_buffer(obj: Self) -> RustBuffer

Convenience method
source§

impl<UT> LowerError<UT> for PingUploadTask

source§

fn lower_error(obj: Self) -> RustBuffer

Lower this value for scaffolding function return Read more
source§

impl<UT> LowerReturn<UT> for PingUploadTask

§

type ReturnType = <PingUploadTask as Lower<UT>>::FfiType

The type that should be returned by scaffolding functions for this type. Read more
source§

fn lower_return(v: Self) -> Result<Self::ReturnType, RustCallError>

Lower the return value from an scaffolding call Read more
§

fn handle_failed_lift( error: LiftArgsError ) -> Result<Self::ReturnType, RustCallError>

Lower the return value for failed argument lifts Read more
source§

impl PartialEq for PingUploadTask

source§

fn eq(&self, other: &PingUploadTask) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<UT> TypeId<UT> for PingUploadTask

source§

const TYPE_ID_META: MetadataBuffer = _

source§

impl Eq for PingUploadTask

source§

impl StructuralEq for PingUploadTask

source§

impl StructuralPartialEq for PingUploadTask

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, UT> HandleAlloc<UT> for T
where T: Send + Sync,

§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
§

unsafe fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
§

unsafe fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<> Read more
§

unsafe fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.