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):
AMI4CCM_<Iface>— async operations with asendc_prefix.AMI4CCM_<Iface>ReplyHandler— type-specific callbacks +_excepoperations.
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_Ttemplated module). ZeroDDS has no CCM container/executor; see audit filedocs/spec-coverage/omg-ami4ccm-1.1.md. The implied-IDL transformation (conformance point 1) is fully covered; the connector fragment (conformance point 2) isn/awithout 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::ExceptionHoldermodel — spec §7.4.1.- multiplex
- Multiplex receptacle — Spec §7.7, p. 13.
- pragma
#pragma ami4ccmparser — 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.