-*- indented-text -*- rep-orbit ********* rep-orbit is a port of Owen Taylor's excellent Perl bindings for ORBit -- CORBA-ORBit (http://people.redhat.com/~otaylor/corba/orbit.html) -- to the librep Lisp system (http://librep.sourceforge.net/). The port is currently synchronized with CORBA-ORBit 0.3.0. It requires recent versions of librep (0.11+) and ORBit (0.5.0+) Mapping ======= Interfaces (objects) are represented by closures, calling the closure with the name of an operation or attribute invokes that method. When invoking operations, any further parameters are passed to the operation. `Inout' and `out' parameters should be enclosed in a singleton list, providing the required indirection. Invoke attributes with a single parameter to set their value. Sequence -> LIST Array -> VECTOR Union -> (DISCRIMINATOR . VALUE) Struct -> ((FIELD-NAME . VALUE) ... ) Fixed -> DIGIT-STRING [ wrong, should include tc->digits ] Enum -> SYMBOL Exception -> ((FIELD-NAME . VALUE) ... ) exceptions can be caught using condition-case, they will have tag `corba', with data (PKG-NAME . Exception) Any -> (TypeCode . VALUE) TypeCode -> Object Object -> FUN (FUN 'OPERATION ARGS...) -> RESULT (FUN '_get_ATTRIBUTE) -> VALUE (FUN '_set_ATTRIBUTE VALUE) implicit methods: _get_repoid -> STRING _get_interface -> Object is_a REPO-ID -> BOOL is_equivalent OTHER -> BOOL non_existent -> BOOL [unimplemented by ORBit] float, double, long double -> PRINTED-STRING [marshals from ints as well] `inout' or `out' parameters are indirected through a containing cons cell Constants are mapped to constant variables with names INTERFACE::NAME ORB interface ============= The ORB is represented by a closure stored in the variable `corba-orb'. Call it as a normal Object (method as first argument, args as rest). Supported methods include: object_to_string Object -> IOR-STRING string_to_object IOR-STRING -> Object resolve_initial_references STRING -> Object load_idl_file FILENAME -> BOOL preload ID-STRING -> BOOL POA interface ============= Get a POA by calling (corba-orb 'resolve_initial_references "RootPOA"), it's an object supporting the following methods: _get_the_name -> STRING _get_the_parent -> Object _get_the_POAManager -> Object create_POA [unimplemented] destroy activate_object SERVANT -> OBJECT-ID activate_object_with_id OBJECT-ID SERVANT deactivate_object OBJECT-ID create_reference STRING -> Object create_reference_with_id OBJECT-ID STRING -> Object servant_to_id SERVANT -> OBJECT-ID servant_to_reference SERVANT -> Object reference_to_servant Object -> SERVANT reference_to_id Object -> OBJECT-ID id_to_servant OBJECT-ID -> SERVANT servant_to_id SERVANT -> OBJECT-ID The POAManager supports the following methods: activate hold_requests WAIT-FOR-COMPLETION discard_requests WAIT-FOR-COMPLETION deactivate ETHEREALIZE-OBJECTS WAIT-FOR-COMPLETION Miscellaneous Functions ======================= corba-object-p ARG -> BOOL corba-servant-p ARG -> BOOL corba-servant-new PKG-NAME IMPL-FUNCTION -> SERVANT IMPL-FUNCTION is a function called as (OPERATION ARGS...) to service requests. Arguments are passed as for outward requests corba-servant-destroy SERVANT corba-typecode-new REPO-ID -> TypeCode corba-interface-to-id NAME -> REPO-ID corba-id-to-interface REPO-ID -> NAME corba-load-interface Object -> NAME corba-set-cookie COOKIE corba-check-cookies BOOL corba-user-exception PKG-NAME VALUE corba-system-exception PKG-NAME MINOR COMPLETION-STATUS corba-struct-new REPO-ID -> STRUCT corba-struct-get STRUCT FIELD -> VALUE corba-struct-set STRUCT FIELD VALUE License ======= This work is Copyright Owen Taylor, 1998-1999, and licensed under the terms of the GNU Library General Public License (LGPL) See the included file LICENSE-LGPL for details. Parts are Copyright John Harper, 2000, also under the terms of the GNU Library General Public License (LGPL)