Skip to main content

rocketmq_runtime/
lib.rs

1// Copyright 2023 The RocketMQ Rust Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#![deny(missing_docs)]
16
17//! Runtime substrate for the RocketMQ Rust unified thread model.
18//!
19//! This crate standardizes how components own or borrow a Tokio runtime, how
20//! they derive service-level task scopes through [`RootServiceContext`] and
21//! [`ChildServiceContext`], how
22//! [`TaskGroup`] and [`ScheduledTaskGroup`] track long-running and periodic
23//! tasks, how [`BlockingExecutor`] isolates short blocking work, and how
24//! [`ShutdownReport`] records verifiable shutdown evidence.
25//!
26//! Process entrypoints own [`RuntimeOwner`] and derive a single
27//! [`RootServiceContext`]. Production libraries receive a
28//! [`ChildServiceContext`] or a narrower capability. [`RuntimeContext`] is a
29//! test and migration harness.
30//!
31//! [`prelude`] documents the recommended entry path with an example that runs
32//! as a test.
33
34pub mod blocking;
35/// Common types and operations.
36pub mod common;
37/// Config types and operations.
38mod config;
39/// Context types and operations.
40mod context;
41/// Critical task failure records and handling.
42mod critical;
43mod diagnostics;
44/// Error types and operations.
45mod error;
46mod handle;
47mod metadata_io;
48mod metadata_target;
49mod operation;
50/// Owner types and operations.
51mod owner;
52pub mod prelude;
53mod public_api;
54/// Resource budget types and operations.
55pub mod resource_budget;
56mod resources;
57/// Scheduled types and operations.
58mod scheduled;
59/// Service context types and operations.
60pub mod service_context;
61mod service_lifecycle;
62/// Shutdown deadline types and operations.
63pub mod shutdown_deadline;
64/// Shutdown report types and operations.
65pub mod shutdown_report;
66/// Signal types and operations.
67pub mod signal;
68mod stack;
69/// Task types and operations.
70pub mod task;
71/// Task group types and operations.
72pub mod task_group;
73mod task_spawner;
74
75pub use blocking::BlockingExecutorSnapshot;
76pub use blocking::BlockingKind;
77pub use blocking::BlockingLane;
78pub use blocking::BlockingLanePolicies;
79pub use blocking::BlockingPoolPolicy;
80pub use blocking::BlockingTaskSnapshot;
81pub use config::RuntimeConfig;
82pub use context::RuntimeContext;
83pub use critical::CriticalFailure;
84pub use critical::CriticalFailureKind;
85pub use critical::CriticalFailureState;
86pub use critical::CriticalFailureSubscription;
87pub use error::ExternalOperation;
88pub use error::RuntimeContractPolicy;
89pub use error::RuntimeContractViolation;
90pub use error::RuntimeError;
91pub use error::RuntimeErrorKind;
92pub use error::RuntimeOperation;
93pub use error::RuntimeResult;
94pub use metadata_io::LocalMetadataFileSystem;
95pub use metadata_io::MetadataDeadline;
96pub use metadata_io::MetadataDurability;
97pub use metadata_io::MetadataFileSystem;
98pub use metadata_io::MetadataGeneration;
99pub use metadata_io::MetadataIoActor;
100pub use metadata_io::MetadataIoActorLimitsProfile;
101pub use metadata_io::MetadataIoAdmissionOutcome;
102pub use metadata_io::MetadataIoBlockingLaneProfile;
103pub use metadata_io::MetadataIoCommitAdmissionOutcome;
104pub use metadata_io::MetadataIoCommitObservation;
105pub use metadata_io::MetadataIoCommitOutcome;
106pub use metadata_io::MetadataIoConfig;
107pub use metadata_io::MetadataIoDurabilityOutcome;
108pub use metadata_io::MetadataIoEffectiveProfile;
109pub use metadata_io::MetadataIoLegacyBlockingField;
110pub use metadata_io::MetadataIoObserver;
111pub use metadata_io::MetadataIoOperation;
112pub use metadata_io::MetadataIoPlan;
113pub use metadata_io::MetadataIoReceipt;
114pub use metadata_io::MetadataIoResourceSnapshot;
115pub use metadata_io::MetadataIoShutdownReport;
116pub use metadata_io::MetadataIoSnapshot;
117pub use metadata_io::MetadataLimitSource;
118pub use metadata_io::MetadataWriteRequest;
119pub use metadata_target::{MetadataTargetIdentity, MetadataTargetRegistryStats, MetadataTargetRetirementOutcome};
120pub use public_api::*;
121pub use resource_budget::BudgetCapacity;
122pub use resource_budget::BudgetClass;
123pub use resource_budget::BudgetDimension;
124pub use resource_budget::BudgetLimit;
125pub use resource_budget::BudgetRejection;
126pub use resource_budget::BudgetRejectionReason;
127pub use resource_budget::BudgetSnapshot;
128pub use resource_budget::BudgetedItem;
129pub use resource_budget::BudgetedQueue;
130pub use resource_budget::DynamicBudgetKey;
131pub use resource_budget::DynamicKeyAdmissionRejection;
132pub use resource_budget::DynamicKeyRegistrationFailure;
133pub use resource_budget::DynamicKeyRetirement;
134pub use resource_budget::ForeignPermit;
135pub use resource_budget::FullPolicy;
136pub use resource_budget::HostMemoryFileView;
137pub use resource_budget::ManagedMemoryBudget;
138pub use resource_budget::ManagedMemoryPolicy;
139pub use resource_budget::ManagedMemoryRequest;
140pub use resource_budget::MemoryFileView;
141pub use resource_budget::MemoryLimitSource;
142pub use resource_budget::MonotonicClock;
143pub use resource_budget::PermitRebindOutcome;
144pub use resource_budget::ProcessMemoryLimit;
145pub use resource_budget::QueuePushOutcome;
146pub use resource_budget::QueuePushRejection;
147pub use resource_budget::QueueSnapshot;
148pub use resource_budget::RateLimit;
149pub use resource_budget::ResourceBudgetTree;
150pub use resource_budget::ResourcePermit;
151pub use resource_budget::SystemMonotonicClock;
152pub use scheduled::MissedTickPolicy;
153pub use scheduled::ScheduleMode;
154pub use scheduled::ScheduledExecutionPolicy;
155pub use scheduled::ScheduledTaskConcurrency;
156pub use scheduled::ScheduledTaskConfig;
157pub use scheduled::ScheduledTaskControl;
158pub use scheduled::ScheduledTaskGroup;
159pub use scheduled::ScheduledTaskObserver;
160pub use scheduled::ScheduledTaskRegistrationOutcome;
161pub use scheduled::ScheduledTaskSnapshot;
162pub use service_context::ScopeId;
163pub use service_lifecycle::CriticalFailureRecovery;
164pub use service_lifecycle::DependencyReadiness;
165pub use service_lifecycle::DrainRequestMethods;
166pub use service_lifecycle::ServiceLifecycle;
167pub use service_lifecycle::ServiceLifecycleConfig;
168pub use service_lifecycle::ServiceLifecycleObserver;
169pub use service_lifecycle::ServiceLifecycleState;
170pub use service_lifecycle::ServiceLifecycleTransition;
171pub use service_lifecycle::ShutdownReason;
172pub use service_lifecycle::ShutdownRequest;
173pub use shutdown_report::ShutdownAnnotation;
174pub use shutdown_report::TaskSnapshot;
175pub use signal::wait_for_signal;
176pub use signal::wait_for_signal_result;
177pub use stack::current_thread_committed_stack_bytes;
178pub use task_group::TaskGroupEventCounts;
179pub use task_group::TaskGroupId;
180pub use task_group::TaskGroupLifecycleState;
181pub use task_group::TaskId;
182pub use task_group::TaskKind;
183pub use task_group::TaskName;
184pub use task_group::TaskResult;
185pub use task_spawner::TaskSpawner;