aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/dump.rs
diff options
context:
space:
mode:
authorAlice Ryhl <aliceryhl@google.com>2023-11-02 12:11:04 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-11-02 12:11:04 +0000
commit5b1c750c7506e5054e3373bd1b0d4a65560a4783 (patch)
tree5f95a8dac05d0cce254136de01ec466bf0f54f36 /src/runtime/dump.rs
parentc8fc590cc95e6cfd8a866f9f0208299e919a96e4 (diff)
parent26142af839f9f62dfaafa33818e4cfdf3582fb86 (diff)
downloadtokio-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.rs76
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)
+ }
+}