lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

lib.rs (6180B)


      1 #![forbid(unsafe_code)]
      2 #![cfg_attr(coverage_nightly, feature(coverage_attribute))]
      3 #![doc = include_str!("../README.md")]
      4 
      5 mod admin;
      6 mod build_info;
      7 mod config;
      8 mod entropy;
      9 mod error;
     10 mod lifecycle;
     11 mod operations;
     12 mod status;
     13 mod time;
     14 
     15 pub use admin::{
     16     ADMIN_CONTRACT_VERSION, ADMIN_CORRELATION_ID_MAX_UTF8_BYTES, ADMIN_ERROR_CODE_MAX_UTF8_BYTES,
     17     ADMIN_ERROR_MESSAGE_MAX_UTF8_BYTES, ADMIN_OPERATION_ID_MAX_UTF8_BYTES,
     18     AdminContractVersionError, AdminCorrelationId, AdminError, AdminErrorCode, AdminErrorCodeError,
     19     AdminErrorMessage, AdminErrorMessageError, AdminFailureResponse, AdminIdentifierError,
     20     AdminIdentifierField, AdminMutationRequest, AdminOperationId, AdminPayloadError,
     21     AdminPeerAuthorizationPolicy, AdminPeerAuthorizationPolicyError, AdminPeerAuthorizationSupport,
     22     AdminSuccessResponse, AdminTransportLimitField, AdminTransportLimitValues,
     23     AdminTransportLimits, AdminTransportLimitsError,
     24 };
     25 #[cfg(any(target_os = "linux", target_os = "macos"))]
     26 pub use admin::{
     27     ADMIN_MIN_RESPONSE_BODY_UTF8_BYTES, ADMIN_ROUTE_PARAMETER_NAME_MAX_UTF8_BYTES,
     28     ADMIN_ROUTE_PARAMETER_VALUE_MAX_UTF8_BYTES, ADMIN_ROUTE_PATH_MAX_UTF8_BYTES, AdminClient,
     29     AdminClientError, AdminClientErrorKind, AdminClientTarget, AdminClientTargetError,
     30     AdminHttpMethod, AdminRequest, AdminRequestDecodeError, AdminRouteFailure,
     31     AdminRouteFailureStatus, AdminRouteOutcome, AdminRouteOutcomeError, AdminRoutePath,
     32     AdminRoutePathError, AdminRouteRegistrationError, AdminRouter, AdminServer,
     33     AdminServerConfigError, AdminServerError, UNIX_ADMIN_ACTIVE_PROBE_TIMEOUT,
     34     UNIX_ADMIN_GROUP_DIRECTORY_MODE, UNIX_ADMIN_GROUP_SOCKET_MODE, UNIX_ADMIN_OWNER_DIRECTORY_MODE,
     35     UNIX_ADMIN_OWNER_SOCKET_MODE, UnixAdminSocketBinding, UnixAdminSocketError,
     36     UnixAdminSocketWriterAuthority,
     37 };
     38 pub use build_info::{
     39     BuildInfo, BuildInfoEnvironment, BuildInfoError, BuildInfoField, BuildMode, ContractVersions,
     40     StatusBuildInfo,
     41 };
     42 pub use config::{
     43     BoundedCount, BoundedCountError, ByteLimit, ByteLimitError, CONFIG_DOCUMENT_MAX_UTF8_BYTES,
     44     CONFIG_SCHEMA_ID_MAX_UTF8_BYTES, ConfigDocumentError, ConfigDocumentErrorKind,
     45     ConfigDocumentExpectation, ConfigDocumentExpectationError, ConfigDocumentLocation,
     46     LoggingFormat, LoggingFormatError, OptionalOperationsBind, OptionalOperationsBindError,
     47     PositiveDuration, PositiveDurationError, load_config_document,
     48 };
     49 pub use entropy::{EntropyError, EntropySource, SystemEntropy};
     50 pub use error::{HostError, HostErrorCode, HostErrorKind, SafeHostError};
     51 pub use lifecycle::{
     52     CancellationToken, GracefulShutdown, ProcessSignal, ProcessSignalAction, ProcessSignalAdapter,
     53     ProcessSignalFuture, ProcessSignalSource, ProcessSignalSourceClosed, ProcessSignalStage,
     54     ShutdownConfigError, ShutdownDisposition, ShutdownPhase, ShutdownPhaseFailure,
     55     ShutdownPhaseFuture, ShutdownPhaseHandler, ShutdownStartError, ShutdownSummary,
     56     SupervisedTaskExit, SupervisedTaskExitStatus, SupervisionFailure, SupervisionFailureKind,
     57     TaskClassification, TaskCompletionExpectation, TaskMetadata, TaskMetadataError, TaskName,
     58     TaskRegistrationError, TaskSupervisor, UnfinishedWork,
     59 };
     60 pub use operations::{
     61     BoundOperationsServer, BoundedMetricsSnapshot, CommonMetricGroup, LIVEZ_PATH,
     62     METRICS_CONTENT_TYPE, METRICS_MAX_DESCRIPTORS, METRICS_MAX_LABELS_PER_SAMPLE,
     63     METRICS_MAX_RENDER_UTF8_BYTES, METRICS_MAX_SAMPLES, METRICS_PATH, MetricComponentId,
     64     MetricDescriptor, MetricHealthState, MetricKind, MetricLabel, MetricLabelKey, MetricName,
     65     MetricSample, MetricTaskOutcome, MetricValue, MetricsContractError, MetricsRenderError,
     66     OPERATIONS_HEALTH_CONTENT_TYPE, OPERATIONS_HTTP_MIN_HEADER_BYTES, OperationsBindPolicy,
     67     OperationsConfigError, OperationsConfigField, OperationsHealthResponse,
     68     OperationsListenAddress, OperationsListenAddressError, OperationsListenerConfig,
     69     OperationsServer, OperationsServerError, OperationsTransportLimitField,
     70     OperationsTransportLimitValues, OperationsTransportLimits, OperationsTransportLimitsError,
     71     READYZ_PATH, StableRelayId, livez, readyz,
     72 };
     73 pub use radroots_runtime_paths::{InstanceId, ServiceId};
     74 pub use status::{
     75     CONFIGURATION_SCHEMA_VERSION, CachedServiceState, CachedServiceStatePublisher,
     76     CachedServiceStateReader, CommonReasonCode, ConfigurationIdentity, ConfigurationSource,
     77     IntegrityState, PersistenceHealth, PersistenceSummary, ProviderHealth, Readiness, ReasonCode,
     78     ReasonCodes, SERVICE_STATUS_CONTRACT_VERSION, SERVICE_STATUS_MAX_UTF8_BYTES,
     79     ServiceOperationalState, ServicePhase, ServiceStatus, ServiceStatusDetail, Sha256Digest,
     80     StatusContractError, StatusEncodingError, StatusId, StatusModelError, StatusPublisherDropped,
     81     TransportHealth, UptimeMillis, cached_service_state,
     82 };
     83 pub use time::{
     84     MonotonicClock, MonotonicClockError, MonotonicDeadline, MonotonicTime, SystemMonotonicClock,
     85     SystemWallClock, UnixTimeSeconds, WallClock, WallClockError,
     86 };
     87 
     88 /// Constructs validated build information from the consuming service's compile-time environment.
     89 ///
     90 /// Release builds fail closed when any governed build variable is absent. Debug builds use stable
     91 /// development placeholders so ordinary local development does not require release orchestration.
     92 #[macro_export]
     93 macro_rules! compile_time_build_info {
     94     (feature_profile: $feature_profile:expr, contract_versions: $contract_versions:expr $(,)?) => {{
     95         let mode = if cfg!(debug_assertions) {
     96             $crate::BuildMode::Development
     97         } else {
     98             $crate::BuildMode::Release
     99         };
    100         $crate::BuildInfo::from_compile_time(
    101             mode,
    102             $crate::BuildInfoEnvironment {
    103                 service_version: Some(env!("CARGO_PKG_VERSION")),
    104                 service_commit: option_env!("RADROOTS_SERVICE_REVISION"),
    105                 lib_revision: option_env!("RADROOTS_LIB_REVISION"),
    106                 rust_version: option_env!("RADROOTS_RUST_VERSION"),
    107                 target: option_env!("RADROOTS_BUILD_TARGET"),
    108                 feature_profile: Some($feature_profile),
    109                 contract_versions: $contract_versions,
    110             },
    111         )
    112     }};
    113 }