Skip to main content

rocketmq_remoting/
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#![allow(dead_code)]
16#![allow(incomplete_features)]
17#![feature(impl_trait_in_assoc_type)]
18extern crate core;
19
20pub mod clients;
21pub mod code;
22pub mod codec;
23pub mod connection;
24pub mod net;
25pub mod prelude;
26pub mod protocol;
27
28pub use crate::protocol::rocketmq_serializable;
29
30pub mod base;
31pub mod common;
32pub mod remoting;
33pub mod remoting_server;
34pub mod request_processor;
35pub mod rpc;
36pub mod runtime;
37
38// Error helpers for unified error system
39pub mod connection_v2;
40pub mod error_helpers;
41pub mod local;
42pub mod smart_encode_buffer;
43
44// Public Re-exports - Simplified Import Paths
45// This section provides convenient access to commonly used types through
46// re-exports. Original module paths remain functional for backward compatibility.
47
48// Core codec types - commonly used for network encoding/decoding
49pub use crate::codec::remoting_command_codec::CompositeCodec;
50pub use crate::codec::remoting_command_codec::RemotingCommandCodec;
51
52// Core protocol types - most frequently used across the codebase
53pub use crate::protocol::command_custom_header::CommandCustomHeader;
54pub use crate::protocol::command_custom_header::FromMap;
55pub use crate::protocol::RemotingCommand;
56
57// Request/Response codes - used for command identification
58pub use crate::code::request_code::RequestCode;
59pub use crate::code::response_code::RemotingSysResponseCode;
60
61// Most Common Headers (Top-Level Exports)
62// These headers are used frequently throughout the codebase and are available
63// at the crate root for convenient access:
64//   use rocketmq_remoting::{PullMessageRequestHeader, SendMessageRequestHeader};
65
66// Message operations (highest frequency - used 125+ times)
67pub use crate::protocol::header::ack_message_request_header::AckMessageRequestHeader;
68pub use crate::protocol::header::message_operation_header::send_message_request_header::SendMessageRequestHeader;
69pub use crate::protocol::header::pop_message_request_header::PopMessageRequestHeader;
70pub use crate::protocol::header::pull_message_request_header::PullMessageRequestHeader;
71
72// Client management (heartbeat, routing, etc.)
73pub use crate::protocol::header::client_request_header::GetRouteInfoRequestHeader;
74pub use crate::protocol::header::heartbeat_request_header::HeartbeatRequestHeader;
75
76// NameServer operations (broker registration, config management)
77pub use crate::protocol::header::namesrv::broker_request::UnRegisterBrokerRequestHeader;
78pub use crate::protocol::header::namesrv::register_broker_header::RegisterBrokerRequestHeader;
79
80// Administrative operations (topic management, etc.)
81pub use crate::protocol::header::create_topic_request_header::CreateTopicRequestHeader;
82pub use crate::protocol::header::delete_topic_request_header::DeleteTopicRequestHeader;
83pub use crate::protocol::header::get_topic_config_request_header::GetTopicConfigRequestHeader;
84
85// Common response headers
86pub use crate::protocol::header::get_max_offset_response_header::GetMaxOffsetResponseHeader;
87pub use crate::protocol::header::get_min_offset_response_header::GetMinOffsetResponseHeader;
88pub use crate::protocol::header::pop_message_response_header::PopMessageResponseHeader;
89pub use crate::protocol::header::pull_message_response_header::PullMessageResponseHeader;
90
91// Transaction operations (frequently used in transactional messaging)
92pub use crate::protocol::header::check_transaction_state_request_header::CheckTransactionStateRequestHeader;
93pub use crate::protocol::header::end_transaction_request_header::EndTransactionRequestHeader;
94
95// Offset management (common in consumer operations)
96pub use crate::protocol::header::query_consumer_offset_request_header::QueryConsumerOffsetRequestHeader;
97pub use crate::protocol::header::update_consumer_offset_header::UpdateConsumerOffsetRequestHeader;
98
99// Client management
100pub use crate::protocol::header::unregister_client_request_header::UnregisterClientRequestHeader;
101
102// RPC types (remote procedure call infrastructure)
103pub use crate::rpc::rpc_request::RpcRequest;
104pub use crate::rpc::rpc_request_header::RpcRequestHeader;
105pub use crate::rpc::rpc_response::RpcResponse;
106pub use crate::rpc::topic_request_header::TopicRequestHeader;
107
108// Most Common Bodies (Top-Level Exports)
109
110// Message operations
111pub use crate::protocol::body::batch_ack_message_request_body::BatchAckMessageRequestBody;
112
113// Broker operations
114pub use crate::protocol::body::broker_body::cluster_info::ClusterInfo;
115
116// Consumer operations
117pub use crate::protocol::body::consumer_connection::ConsumerConnection;
118pub use crate::protocol::body::consumer_running_info::ConsumerRunningInfo;
119pub use crate::protocol::body::get_consumer_list_by_group_response_body::GetConsumerListByGroupResponseBody;
120
121// Topic operations
122pub use crate::protocol::body::topic_info_wrapper::topic_config_wrapper::TopicConfigSerializeWrapper;
123
124// Subscription operations
125pub use crate::protocol::body::subscription_group_wrapper::SubscriptionGroupWrapper;
126
127// Lock operations
128pub use crate::protocol::body::request::lock_batch_request_body::LockBatchRequestBody;
129pub use crate::protocol::body::response::lock_batch_response_body::LockBatchResponseBody;
130
131// Query operations
132pub use crate::protocol::body::query_assignment_response_body::QueryAssignmentResponseBody;
133
134// NameServer operations
135pub use crate::protocol::body::broker_body::register_broker_body::RegisterBrokerBody;
136
137// Producer operations
138pub use crate::protocol::body::producer_connection::ProducerConnection;
139
140// Utility types
141pub use crate::protocol::body::kv_table::KVTable;