Expand description
OMG CORBA 3.3 Part 2 §15 — General Inter-ORB Protocol (GIOP).
Crate zerodds-corba-giop. Safety classification: STANDARD.
Spec OMG CORBA 3.3 Part 2 §15 (docs/standards/cache/omg/corba-3.3-part2.pdf,
imported during the Sprint-1 setup phase).
§Scope
Full GIOP wire codec — all 8 message types for GIOP 1.0, 1.1
and 1.2 (including bidirectional GIOP). Reuses CDR-1 from crates/cdr/.
Implemented message types (spec §15.4.1-15.4.9):
Request(spec §15.4.2) — client→server method invocation.Reply(spec §15.4.3) — server→client response including all 6 reply statuses (NO_EXCEPTION/USER_EXCEPTION/SYSTEM_EXCEPTION/ LOCATION_FORWARD/LOCATION_FORWARD_PERM/NEEDS_ADDRESSING_MODE).CancelRequest(spec §15.4.4) — client cancels a pending request.LocateRequest(spec §15.4.5) — client probes an object’s location.LocateReply(spec §15.4.6) — server answers a LocateRequest.CloseConnection(spec §15.4.7) — server closes the connection.MessageError(spec §15.4.8) — wire-format error indication.Fragment(spec §15.4.9) — multi-frame message body.
GIOP versions:
1.0— initial format. Request/Reply header includesrequesting_principal. No fragment support, no bidirectional GIOP.1.1—byte_orderbecomes aflagsoctet (bit 0 = byte_order, bit 1 = fragment). Fragment for Request+Reply. The request header gains a 3-bytereservedfield.1.2— Request/Reply header reorganized:request_idfirst,service_contextlast. TheTargetAddressunion replaces theobject_key. Body 8-byte aligned. Fragment for all message types. Bidirectional GIOP viaBiDirIIOPServiceContext.
§What is not here
- Transport — TCP/UDS delivery in
crates/corba-iiop/. - IOR format — object-reference marshalling in
crates/corba-ior/. - POA — servant dispatch in
crates/corba-poa/. - Codeset conversion —
crates/cdr/handles UTF-8/UTF-16 natively; ISO-Latin conversion is a caller-layer concern (rare in modern CORBA deployments).
§Example
use zerodds_corba_giop::{MAGIC_BYTES, Version};
assert_eq!(MAGIC_BYTES, *b"GIOP");
let v = Version { major: 1, minor: 2 };
assert_eq!(v.major, 1);Re-exports§
pub use cancel_request::CancelRequest;pub use close_connection::CloseConnection;pub use code_set::CodeSetContext;pub use code_set::well_known as code_set_ids;pub use codec::Message;pub use codec::decode_message;pub use codec::decode_message_ctx;pub use codec::encode_message;pub use error::GiopError;pub use error::GiopResult;pub use flags::Flags;pub use fragment::Fragment;pub use fragment::FragmentHeader;pub use header::MAGIC;pub use header::MAGIC_BYTES;pub use header::MessageHeader;pub use locate_reply::LocateReply;pub use locate_reply::LocateStatusType;pub use locate_request::LocateRequest;pub use message_error::MessageError;pub use message_type::MessageType;pub use reply::Reply;pub use reply::ReplyStatusType;pub use request::Request;pub use request::ResponseFlags;pub use service_context::ServiceContext;pub use service_context::ServiceContextList;pub use service_context::ServiceContextTag;pub use target_address::ObjectKey;pub use target_address::TargetAddress;pub use version::Version;
Modules§
- cancel_
request - CancelRequest message — spec §15.4.4.
- close_
connection - CloseConnection message — spec §15.4.7.
- code_
set CONV_FRAME::CodeSetContext— Codeset-Negotiation-ServiceContext (§13.10.2.5).- codec
- Top-level GIOP message codec — dispatches to all 8 message types.
- error
- GIOP wire codec errors.
- flags
- GIOP flags octet — spec §15.4.1.
- fragment
- Fragment message — spec §15.4.9.
- header
- GIOP message header — 12 bytes, spec §15.4.1.
- locate_
reply - LocateReply message — spec §15.4.6.
- locate_
request - LocateRequest-Message — Spec §15.4.5.
- message_
error - MessageError-Message — Spec §15.4.8.
- message_
type - GIOP Message-Type Enum — Spec §15.4.1 Table 15-1.
- reply
- Reply-Message — Spec §15.4.3.
- request
- Request-Message — Spec §15.4.2.
- service_
context - IOP::ServiceContext + ServiceContextList — Spec §15.3.1.
- target_
address - TargetAddress (GIOP 1.2+) — Spec §15.4.2.2 / §15.4.5.
- version
- GIOP Version (Spec §15.4.1).