Issue 706: Internalizing roles-IDL optimization (externalization) Source: (, ) Nature: Uncategorized Severity: Summary: Summary: The IDL for internalizing roles could be optimized to reduce the size of the externalized data as well as simplifying the implementation Resolution: Revised Text: Actions taken: August 25, 1997: received issue Discussion: End of Annotations:===== Return-Path: Date: Mon, 25 Aug 1997 15:03:18 -0700 From: Mike Sample To: externalization@omg.org Subject: Internalizing roles - IDL optimization? It seems that the IDL for internalizing roles could be optimized to reduce the size of the externalized data as well as simplifying the implementation. The original IDL for a Externalization Role is: module CosCompoundExternalization { ... interface Role : ::CosGraphs::Role { void externalize_role (in ::CosStream::StreamIO sio); void internalize_role (in ::CosStream::StreamIO sio); ::CosGraphs::PropagationValue externalize_propagation ( in RelationshipHandle rel, in ::CosRelationships::RoleName toRoleName, out boolean sameForAll); }; }; Changing internalize_role as follows allows some optimization: void internalize_role (in ::CosStream::StreamIO sio in Node related_object); CosCompoundExternalization::Node is responsible for externalizing and internalizing its associated Role objects (eg. its internalize_node implementation is expected to call internalize_role on each of its associated roles). The node simply has to pass itself along to the internalize_role thus allowing the role to set it's related object and skip saving a reference to it. This optimization should save the streamIO object from detecting that the roles' call to write_object is a reference to a previously externalized object & writing the reference to it. So, what have I missed? Mike Sample Open Text Corp.