Skip to main content

Crate zerodds_ami4ccm

Crate zerodds_ami4ccm 

Source
Expand description

OMG AMI4CCM 1.1 — Asynchronous Method Invocation for CORBA Component Model.

Crate zerodds-ami4ccm. Safety classification: STANDARD. Spec formal/2015-08-03 (docs/standards/cache/omg/ami4ccm-1.1.pdf).

§Scope

AMI4CCM is a transformation spec: from a normal IDL interface definition, two additional local interfaces are derived (spec §7.3 + §7.5):

  1. AMI4CCM_<Iface> — async operations with a sendc_ prefix.
  2. AMI4CCM_<Iface>ReplyHandler — type-specific callbacks + _excep operations.

Plus CCM_AMI::ExceptionHolder as the data model for exception delivery (spec §7.4.1) and pragma parsing for #pragma ami4ccm interface "<name>" and #pragma ami4ccm receptacle "<comp>::<recep>" (spec §7.7).

The transformation operates on the AST layer of zerodds_idl::ast: the input is InterfaceDef, the output is two newly constructed InterfaceDef instances (InterfaceKind::Local), which every codegen backend (cpp/cs/java/ts) can treat like normal interfaces.

§What is not covered

  • AMI4CCM connector + deployment (spec §7.6 + §7.8) — the connector fragment code is deployed via D&C into a CCM container (Components::EnterpriseComponent, CCM_AMI::Connector_T templated module). ZeroDDS has no CCM container/executor; see audit file docs/spec-coverage/omg-ami4ccm-1.1.md. The implied-IDL transformation (conformance point 1) is fully covered; the connector fragment (conformance point 2) is n/a without a CCM runtime.
  • CCM pragma pre-processor integration — pragma parsing is realized as a standalone function; integration into the IDL preprocessor can be built on top of it once CCM is a top-level undertaking.

§Example

use zerodds_ami4ccm::{Ami4CcmPragma, parse_pragma};

let p = parse_pragma("#pragma ami4ccm interface \"Stock::StockManager\"").unwrap();
assert_eq!(
    p,
    Ami4CcmPragma::Interface {
        name: "Stock::StockManager".into(),
    }
);

Re-exports§

pub use connector::Connector;
pub use connector::ConnectorPort;
pub use connector::Facet;
pub use connector::PortType;
pub use deployment::ConnectorImplementation;
pub use deployment::ConnectorPlanFragment;
pub use deployment::ImplementationDescriptor;
pub use deployment::PlanInstance;
pub use exception_holder::ExceptionHolder;
pub use exception_holder::UserExceptionBase;
pub use multiplex::ReceptacleArity;
pub use multiplex::context_method_for_receptacle;
pub use multiplex::sequence_typedef_for_interface;
pub use pragma::Ami4CcmPragma;
pub use pragma::ParsePragmaError;
pub use pragma::parse_pragma;
pub use scope_resolver::context_from_specification;
pub use scope_resolver::populate_from_specification;
pub use transform::Ami4CcmInterfaces;
pub use transform::TransformContext;
pub use transform::transform_interface;
pub use transform::transform_interface_in_context;

Modules§

connector
AMI4CCM connector fragment — spec §7.6 + Annex A.
deployment
Deployment support — spec §7.8.
exception_holder
CCM_AMI::ExceptionHolder model — spec §7.4.1.
multiplex
Multiplex receptacle — Spec §7.7, p. 13.
pragma
#pragma ami4ccm parser — Spec §7.7.
scope_resolver
Scope-aware symbol-table builder for the AMI4CCM naming-conflict resolver — Spec §7.5 / §7.3.1.
transform
Implied-IDL transformation — Spec §7.3 + §7.5.