diff options
author | Alice Ryhl <aliceryhl@google.com> | 2023-11-02 12:11:04 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-11-02 12:11:04 +0000 |
commit | 5b1c750c7506e5054e3373bd1b0d4a65560a4783 (patch) | |
tree | 5f95a8dac05d0cce254136de01ec466bf0f54f36 /src/runtime/dump.rs | |
parent | c8fc590cc95e6cfd8a866f9f0208299e919a96e4 (diff) | |
parent | 26142af839f9f62dfaafa33818e4cfdf3582fb86 (diff) | |
download | tokio-5b1c750c7506e5054e3373bd1b0d4a65560a4783.tar.gz |
Update Tokio to the latest LTS release v1.32.0 am: 26142af839
Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/tokio/+/2815234
Change-Id: I63172610b8f3055b9ef75fd63391892a121d01d9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'src/runtime/dump.rs')
-rw-r--r-- | src/runtime/dump.rs | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/runtime/dump.rs b/src/runtime/dump.rs new file mode 100644 index 0000000..994b7f9 --- /dev/null +++ b/src/runtime/dump.rs @@ -0,0 +1,76 @@ +//! Snapshots of runtime state. +//! +//! See [Handle::dump][crate::runtime::Handle::dump]. + +use std::fmt; + +/// A snapshot of a runtime's state. +/// +/// See [Handle::dump][crate::runtime::Handle::dump]. +#[derive(Debug)] +pub struct Dump { + tasks: Tasks, +} + +/// Snapshots of tasks. +/// +/// See [Handle::dump][crate::runtime::Handle::dump]. +#[derive(Debug)] +pub struct Tasks { + tasks: Vec<Task>, +} + +/// A snapshot of a task. +/// +/// See [Handle::dump][crate::runtime::Handle::dump]. +#[derive(Debug)] +pub struct Task { + trace: Trace, +} + +/// An execution trace of a task's last poll. +/// +/// See [Handle::dump][crate::runtime::Handle::dump]. +#[derive(Debug)] +pub struct Trace { + inner: super::task::trace::Trace, +} + +impl Dump { + pub(crate) fn new(tasks: Vec<Task>) -> Self { + Self { + tasks: Tasks { tasks }, + } + } + + /// Tasks in this snapshot. + pub fn tasks(&self) -> &Tasks { + &self.tasks + } +} + +impl Tasks { + /// Iterate over tasks. + pub fn iter(&self) -> impl Iterator<Item = &Task> { + self.tasks.iter() + } +} + +impl Task { + pub(crate) fn new(trace: super::task::trace::Trace) -> Self { + Self { + trace: Trace { inner: trace }, + } + } + + /// A trace of this task's state. + pub fn trace(&self) -> &Trace { + &self.trace + } +} + +impl fmt::Display for Trace { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + self.inner.fmt(f) + } +} |