Skip to main content

Selected

Struct Selected 

Source
pub struct Selected { /* private fields */ }
Available on crate feature client only.
Expand description

Step 2: the peer’s endpoints for the chosen version are known, and can be checked before anything is sent.

Implementations§

Source§

impl Selected

Source

pub const fn version(&self) -> &VersionNumber

The version that was selected.

Source

pub const fn details(&self) -> &VersionDetails

The endpoints the peer advertised for it.

Source

pub fn require( &self, required: &[(ModuleId, InterfaceRole)], ) -> Result<(), OcpiError>

Checks that the peer implements everything this party needs.

In case the Sender (starting the credentials exchange process) cannot find the endpoints it expects, it is expected NOT to send the POST request with credentials to the Receiver. Log a message/notify the administrator.

§Errors

Returns OcpiError::Remote with 3003 No matching endpoints naming what is missing. Call this before Selected::register; nothing has been sent to the peer yet, so stopping here is exactly what the specification asks for.

Source

pub async fn register( self, transport: &Transport, credentials: &Credentials, ) -> Result<Peer, OcpiError>

POST {credentials} with CREDENTIALS_TOKEN_B, receiving CREDENTIALS_TOKEN_C.

Consumes self, so CREDENTIALS_TOKEN_A is gone afterwards: “it MAY no longer be used.”

credentials must carry CREDENTIALS_TOKEN_B — the token the peer will use to call this party — and the versions URL of this party. The token in the response is CREDENTIALS_TOKEN_C, which is what the returned Peer authenticates with.

§Errors

Returns OcpiError::MethodNotAllowed when the peer says this party is already registered — “This method MUST return a HTTP status code 405: method not allowed if the client has already been registered before” — and OcpiError::Remote with 3001 when the peer could not call back.

Source

pub async fn update( self, transport: &Transport, current_token: &CredentialsToken, credentials: &Credentials, ) -> Result<Peer, OcpiError>

PUT {credentials}, for a peer this party is already registered with.

A PUT will switch to the version that contains this credentials endpoint if it’s different from the current version. The server must fetch the client’s endpoints again, even if the version has not changed.

§Errors

Returns OcpiError::MethodNotAllowed when the peer says this party is not registered — the mirror image of Selected::register.

Trait Implementations§

Source§

impl Debug for Selected

Source§

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

Formats the value using the given formatter. Read more

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.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. 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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

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

Source§

type Error = !

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>,

Source§

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more