X-Git-Url: http://git.buserror.net/cgi-bin/gitweb.cgi?p=polintos%2Fscott%2Fpriv.git;a=blobdiff_plain;f=doc%2Forb%2Fmarshalling;h=054bdbe0b43710dd6974be09d485218f0893dcc6;hp=286eff4115b71229c264405d93f84e60165aa156;hb=85ce56295c6eb99eba6334bad9d4b1b02ebf9cde;hpb=39d6852ead7a839f9e15e21e517dfd7a795e5cdd diff --git a/doc/orb/marshalling b/doc/orb/marshalling index 286eff4..054bdbe 100644 --- a/doc/orb/marshalling +++ b/doc/orb/marshalling @@ -1,3 +1,8 @@ +---NOTE--- this is old, ignore. + +Will be deleted once I'm sure there's no information remaining that needs to +be copied elsewhere. + Segment 0, byte 0 is a request code. Currently defined codes are: 0: Invoke Method 1: Get Interface List @@ -39,12 +44,16 @@ objlist array. Virtual structs are prefaced with a header, which consists of the following, in order: -1. 128-bit GUID of the most derived vstruct type -2. 160-bit SHA-1 of the vstruct type info -3. 32-bit objlist-offset of an introspection object -4. 32-bit length of vstruct, including header, and all referenced +1. 32-bit length of vstruct, including header, and all referenced data chunks, which must be contiguously appended to the vstruct body -5. 32-bit reserved field +2. 32-bit offset of start of actual struct +3. 128-bit GUID of the most derived vstruct type +5. 32-bit objlist-offset of the vstruct's object handles, the first +of which is introspection object +6. 32-bit length of vstruct objlist in handles +7. 32-bit offset of an area within the vstruct where the objlist can +be copied. +8. 32-bit reserved field The requirement for all referenced data chunks to be contiguous with the vstruct means that scatter-gather and zero-copy cannot be done; @@ -54,8 +63,15 @@ later be accessed through introspection, or be passed to another process that does know the derived type). For this reason, vstructs should generally not be used to pass large chunks of data. -The introspection object reference may be NULL; in this case, the -SHA-1 field is ignored. +Likewise, object handles must be preserved even if they are only +referenced in an unknown-type portion of the vstruct. To facilitate +this, all handles referenced from the vstruct must be contiguous in +the objlist (even if this means duplications), and there must be an +area in the vstruct blob where unmarshalling code can copy the +translated objlist. + +The introspection object reference at the beginning of the vstruct +objlist may be NULL. Op1: Get Interface List -----------------------