From f413d22bf73f826dacc8881cbfb902e77aa1a84d Mon Sep 17 00:00:00 2001 From: Scott Wood Date: Sun, 27 May 2007 09:38:29 -0500 Subject: [PATCH] Add first draft of marshalling spec --- doc/orb/marshalling | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 doc/orb/marshalling diff --git a/doc/orb/marshalling b/doc/orb/marshalling new file mode 100644 index 0000000..a400d88 --- /dev/null +++ b/doc/orb/marshalling @@ -0,0 +1,41 @@ +segment 0, byte 0 is a request code. Codes are: + 0: Invoke Method + 1: Get Interface List + 2: Return Interface List + +Bytes 1-3 (32-bit) and 1-7 (64-bit) are reserved, and must be zero. +All offsets described in the rest of this file are relative to the +first non-reserved byte (a.k.a. the message payload). The reserved +bytes do not need to be included in the message if the payload is +empty. + +Op0: Invoke Method +------------------ + +The segment 0 payload contains the method's arguments as if they were +a struct, followed by a depth-first traversal of any referenced +structs, excluding references which could potentially lead to loops +(i.e. references to types that exist in a parent node in the +traversal, or their supertypes) or aliases (i.e. references to types +that exist elsewhere in the traversal, or their supertypes). Where +loops or aliases are possible, the reference is encoded as a +segment/offset pair (a 32-bit word, segment is upper 6 bits), and the +data may be placed wherever the sender wishes. Non-inline arrays are +also encoded with segment/offset pairs. Object references are +encoded as 16-bit offsets into the objlist array. + +Op1: Get Interface List +----------------------- + +Return a "Return Interface List" message corresponding to the object +in objlist[0]. For async requests, objlist[1] is the destination for +the return message. + +Op2: Return Interface List +-------------------------- + +For async requests, objlist[1] is the object whose interfaces were +requested. + +The payload consists of a list of GUIDs of interfaces that the object +supports. -- 2.39.2