[−][src]Struct svc_agent::mqtt::OutgoingShortTermTimingProperties
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]
&mut self,
authorization_time: Duration
) -> &mut Self
Trait Implementations
impl Clone for OutgoingShortTermTimingProperties
[src]
fn clone(&self) -> OutgoingShortTermTimingProperties
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for OutgoingShortTermTimingProperties
[src]
impl<'de> Deserialize<'de> for OutgoingShortTermTimingProperties
[src]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
__D: Deserializer<'de>,
impl Serialize for OutgoingShortTermTimingProperties
[src]
Auto Trait Implementations
impl RefUnwindSafe for OutgoingShortTermTimingProperties
impl Send for OutgoingShortTermTimingProperties
impl Sync for OutgoingShortTermTimingProperties
impl Unpin for OutgoingShortTermTimingProperties
impl UnwindSafe for OutgoingShortTermTimingProperties
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
T: for<'de> Deserialize<'de>,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,