use std::future::Future;
use std::net::SocketAddr;
use std::sync::Arc;
use std::time::Duration;
use std::time::Instant;
use crate::codec::remoting_command_codec::FrameLimits;
use crate::config::ServerConfig;
use crate::file_region::FileTransferMode;
use rocketmq_error::SharedError;
use rocketmq_runtime::BlockingExecutor;
use rocketmq_runtime::ChildServiceContext;
use rocketmq_runtime::ShutdownDeadline;
use rocketmq_runtime::ShutdownReport;
use rocketmq_runtime::TaskGroup;
use rocketmq_security_api::Principal;
use tokio::net::TcpListener;
use tokio::sync::broadcast;
use tokio::sync::mpsc;
use tokio::sync::oneshot;
use tracing::error;
use tracing::info;
use tracing::warn;
use crate::admission::AdmissionController;
use crate::admission::AdmissionLimits;
use crate::admission::ResourceLimit;
use crate::proxy_protocol::ProxyProtocolConfig;
use crate::runtime::RPCHook;
use crate::security::TransportSecurity;
use crate::server::TransportListener;
use crate::telemetry::TransportTelemetry;
use crate::tls::TlsServerRuntime;
const DEFAULT_MAX_CONNECTIONS: usize = 1000;
const DEFAULT_TLS_HANDSHAKE_TIMEOUT: Duration = Duration::from_secs(10);
mod connection_handler;
mod server;
mod shutdown;
pub use server::TransportServer;