[][src]Struct svc_agent::mqtt::OutgoingShortTermTimingProperties

pub struct OutgoingShortTermTimingProperties { /* fields omitted */ }

Timing properties of a single message in a chain.

Consider a service that receives a request and in part makes a request to another service. The second service sends the response and then first services sends the response to the client. Here we have a chain of four messages: request -> request -> response -> response.

For monitoring and analytical purposes it's useful to know how long it takes as a whole and which part of the system make the biggest latency.

The conventions contain a number of properties that messages must contain.

For API simplicity in svc-agent they are separated in two structs. Those which gets passed through the whole chain are LongTermTimingProperties and those which are related only to a single message in the chain are in this struct.

When starting processing a request you should save the current time and when it's finished you should call until_now(#method.until_now) function with this value and then pass the result object to OutgoingMessageProperties.

If you make an authorization call to an external system during the processing you may want to measure it during the call and set it to the object to monitor authorization latency as well.

Example

let start_timestamp = Utc::now();
let authz_time = authorize(&request)?;
let response_payload = process_request(&request)?;

let mut short_term_timing = OutgoingShortTermTimingProperties::until_now(start_timestamp);
short_term_timing.set_authorization_time(authz_time);

request.to_response(response_payload, ResponseStatus::OK, short_term_timing, "v1")

Implementations

impl OutgoingShortTermTimingProperties[src]

pub fn until_now(start_timestamp: DateTime<Utc>) -> Self[src]

Builds OutgoingShortTermTimingProperties and sets processing time in one call.

Arguments

  • start_timestamp – UTC timestamp of message processing beginning.

Example

let mut short_term_timing = OutgoingShortTermTimingProperties::until_now(start_timestamp);

pub fn new(timestamp: DateTime<Utc>) -> Self[src]

Builds OutgoingShortTermTimingProperties by explicit timestamp.

Arguments

timestamp – UTC timestamp of message processing finish.

Example

let mut short_term_timing = OutgoingShortTermTimingProperties::until_now(Utc::now());

pub fn set_processing_time(&mut self, processing_time: Duration) -> &mut Self[src]

pub fn set_authorization_time(
    &mut self,
    authorization_time: Duration
) -> &mut Self
[src]

Trait Implementations

impl Clone for OutgoingShortTermTimingProperties[src]

impl Debug for OutgoingShortTermTimingProperties[src]

impl<'de> Deserialize<'de> for OutgoingShortTermTimingProperties[src]

impl Serialize for OutgoingShortTermTimingProperties[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,