core_processor/
lib.rs

1// This file is part of Gear.
2
3// Copyright (C) 2021-2025 Gear Technologies Inc.
4// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
5
6// This program is free software: you can redistribute it and/or modify
7// it under the terms of the GNU General Public License as published by
8// the Free Software Foundation, either version 3 of the License, or
9// (at your option) any later version.
10
11// This program is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14// GNU General Public License for more details.
15
16// You should have received a copy of the GNU General Public License
17// along with this program. If not, see <https://www.gnu.org/licenses/>.
18
19//! Gear message processor.
20
21#![no_std]
22#![warn(missing_docs)]
23#![doc(html_logo_url = "https://docs.gear.rs/logo.svg")]
24#![doc(html_favicon_url = "https://gear-tech.io/favicons/favicon.ico")]
25
26extern crate alloc;
27
28pub mod common;
29pub mod configs;
30mod context;
31mod executor;
32mod ext;
33mod handler;
34mod precharge;
35mod processing;
36
37pub use context::{
38    ContextChargedForCode, ContextChargedForInstrumentation, ContextChargedForProgram,
39    ProcessExecutionContext, SystemReservationContext,
40};
41pub use ext::{
42    AllocExtError, Ext, FallibleExtError, ProcessorContext, ProcessorExternalities,
43    UnrecoverableExtError,
44};
45pub use handler::handle_journal;
46pub use precharge::{
47    precharge_for_allocations, precharge_for_code, precharge_for_code_length,
48    precharge_for_instrumentation, precharge_for_module_instantiation, precharge_for_program,
49    SuccessfulDispatchResultKind,
50};
51pub use processing::{
52    process, process_allowance_exceed, process_code_not_exists, process_execution_error,
53    process_failed_init, process_program_exited, process_reinstrumentation_error, process_success,
54    process_uninitialized,
55};
56
57/// Informational functions for core-processor and executor.
58pub mod informational {
59    pub use crate::executor::execute_for_reply;
60}