pub struct Delay(/* private fields */);
default
only.Expand description
Provide the crate::Delay
to specify the event for crate::Command
execution start.
The default configuration is created with Delay::new
providing a crate::DelayKind
to
specify the event type and parameters for the Delay
.
Additionally, the Delay
can be created using from*()
methods.
Delay::from(duration)
Delay::from_tcp_socket(addr)
Delay::from_udp_request(addr, request)
Delay::from_path(path)
§Examples
Suppose your command needs to start 60 seconds after the benchmark started:
use std::time::Duration;
use iai_callgrind::{Command, Delay, DelayKind};
let command = Command::new(env!("CARGO_BIN_EXE_my-echo")).delay(Delay::new(
DelayKind::DurationElapse(Duration::from_secs(60)),
));
let command_from =
Command::new(env!("CARGO_BIN_EXE_my-echo")).delay(Delay::from(Duration::from_secs(60)));
let command_duration =
Command::new(env!("CARGO_BIN_EXE_my-echo")).delay(Duration::from_secs(60));
However, an iai-callgrind Delay
is not limited to a duration, it can be any
path creation event, a successful TCP connect or as well a received UDP response.
use iai_callgrind::{Command, Delay, DelayKind};
let command = Command::new("echo").delay(Delay::new(DelayKind::PathExists(
"/your/path/to/wait/for".into(),
)));
let command_from = Command::new("echo").delay(Delay::from_path("/your/path/to/wait/for"));
use std::net::SocketAddr;
use std::time::Duration;
use iai_callgrind::{Command, Delay, DelayKind};
let command = Command::new("echo").delay(
Delay::new(DelayKind::TcpConnect(
"127.0.0.1:31000".parse::<SocketAddr>().unwrap(),
))
.timeout(Duration::from_secs(3))
.poll(Duration::from_millis(50)),
);
let command_from = Command::new("echo").delay(
Delay::from_tcp_socket("127.0.0.1:31000".parse::<SocketAddr>().unwrap())
.timeout(Duration::from_secs(3))
.poll(Duration::from_millis(50)),
);
use std::net::SocketAddr;
use std::time::Duration;
use iai_callgrind::{Command, Delay, DelayKind};
let command = Command::new("echo").delay(
Delay::new(DelayKind::UdpResponse(
"127.0.0.1:34000".parse::<SocketAddr>().unwrap(),
vec![1],
))
.timeout(Duration::from_secs(3))
.poll(Duration::from_millis(50)),
);
let command_from = Command::new("echo").delay(
Delay::from_udp_request("127.0.0.1:34000".parse::<SocketAddr>().unwrap(), vec![1])
.timeout(Duration::from_secs(3))
.poll(Duration::from_millis(50)),
);
Implementations§
Source§impl Delay
impl Delay
Sourcepub fn from_path<T>(path: T) -> Self
pub fn from_path<T>(path: T) -> Self
Instantiate a Delay
which will wait until a path exists (Path::exists
).
use iai_callgrind::{Command, Delay};
let command = Command::new("echo").delay(Delay::from_path("/your/path/to/wait/for"));
Sourcepub fn from_tcp_socket<T>(addr: T) -> Selfwhere
T: Into<SocketAddr>,
pub fn from_tcp_socket<T>(addr: T) -> Selfwhere
T: Into<SocketAddr>,
Instantiate a Delay
which will wait until successful TCP connect
(std::net::TcpStream::connect
).
use std::net::SocketAddr;
use iai_callgrind::{Command, Delay};
let command = Command::new("echo").delay(Delay::from_tcp_socket(
"127.0.0.1:31000".parse::<SocketAddr>().unwrap(),
));
Sourcepub fn from_udp_request<T, U>(addr: T, req: U) -> Self
pub fn from_udp_request<T, U>(addr: T, req: U) -> Self
Instantiate a Delay
which will wait until a UDP response is received after
sending the UDP request. The poll duration is also used as the reconnect and request resend
interval. (std::net::UdpSocket::bind
, std::net::UdpSocket::connect
,
std::net::UdpSocket::recv
).
use std::net::SocketAddr;
use iai_callgrind::{Command, Delay};
let command = Command::new("echo").delay(Delay::from_udp_request(
"127.0.0.1:34000".parse::<SocketAddr>().unwrap(),
vec![1],
));
Sourcepub fn poll<T: Into<Duration>>(self, duration: T) -> Self
pub fn poll<T: Into<Duration>>(self, duration: T) -> Self
Update the Delay
poll interval.
The poll interval should be considered together with the Delay::timeout
, and ideally
should have a value of n * timeout duration
.
In case the poll interval is set to a value >=
timeout duration it is attempted to set
the poll interval to a value of timeout duration - 5ms
.
use std::net::SocketAddr;
use std::time::Duration;
use iai_callgrind::{Command, Delay};
let command = Command::new("echo").delay(
Delay::from_udp_request("127.0.0.1:34000".parse::<SocketAddr>().unwrap(), vec![1])
.poll(Duration::from_millis(150)),
);
Sourcepub fn timeout<T: Into<Duration>>(self, duration: T) -> Self
pub fn timeout<T: Into<Duration>>(self, duration: T) -> Self
Update the Delay
timeout interval.
The timeout duration should be considered together with the poll interval. For further
details please refer to Delay::poll
. The minimum timeout duration is 10ms
.
use std::net::SocketAddr;
use std::time::Duration;
use iai_callgrind::{Command, Delay};
let command = Command::new("echo").delay(
Delay::from_tcp_socket("127.0.0.1:31000".parse::<SocketAddr>().unwrap())
.timeout(Duration::from_secs(5)),
);