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 ist eine Transformations-Spec: aus einer normalen IDL-
interface-Definition werden zwei zusaetzliche Local-Interfaces
abgeleitet (Spec §7.3 + §7.5):
AMI4CCM_<Iface>— Async-Operations mitsendc_-Praefix.AMI4CCM_<Iface>ReplyHandler— Type-spezifische Callbacks +_excep-Operations.
Plus CCM_AMI::ExceptionHolder als Datenmodell fuer Exception-
Lieferung (Spec §7.4.1) und Pragma-Parsing fuer
#pragma ami4ccm interface "<name>" und
#pragma ami4ccm receptacle "<comp>::<recep>" (Spec §7.7).
Die Transformation arbeitet auf dem AST-Layer von zerodds_idl::ast:
Eingabe ist InterfaceDef, Ausgabe sind zwei neu konstruierte
InterfaceDef-Instanzen (InterfaceKind::Local), die jedes
Codegen-Backend (cpp/cs/java/ts) wie normale Interfaces behandeln
kann.
§Was nicht abgedeckt ist
- AMI4CCM Connector + Deployment (Spec §7.6 + §7.8) — der
Connector-Fragment-Code wird via D&C in einen CCM-Container
deployed (
Components::EnterpriseComponent,CCM_AMI::Connector_T-Templated-Module). ZeroDDS hat keinen CCM- Container/Executor; siehe Audit-Filedocs/spec-coverage/omg-ami4ccm-1.1.md. Die Implied-IDL- Transformation (Conformance-Punkt 1) ist voll abgedeckt; der Connector-Fragment (Conformance-Punkt 2) istn/aohne CCM-Runtime. - CCM-Pragma-Pre-Processor-Integration — Pragma-Parsing ist als eigenstaendige Funktion realisiert; Integration in den IDL- Preprocessor laesst sich darauf aufbauen, sobald CCM ein Top-Level-Vorhaben ist.
§Beispiel
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::ExceptionHolderModell — Spec §7.4.1.- multiplex
- Multiplex-Receptacle — Spec §7.7, S. 13.
- pragma
#pragma ami4ccm-Parser — Spec §7.7.- scope_
resolver - Scope-aware Symbol-Tabellen-Builder fuer den AMI4CCM-Naming- Conflict-Resolver — Spec §7.5 / §7.3.1.
- transform
- Implied-IDL-Transformation — Spec §7.3 + §7.5.