- get_real_obj(Object obj out);
-
- // Returns a local ID of the real object, regardless of whether
- // the calling process has a reference to it, or whether there
- // are other intervening filters. The ID cannot be used to
- // invoke methods, but it can be used to compare the identities
- // of the objects behind different filter objects. If a real
- // reference to the object is later obtained, it will have
- // the same local ID.
-
- get_real_obj_id(ID id out);
- };
-
- interface ObjectManager {
- guid: "C28596AB-EA8B-11D9-8DEB-000A95BB581A";
-
- new_object(ID cla, ID obj out);
- delete_object(ID obj) async;
-
- new_interface(ID cd, ID cla out);
- delete_interface(ID cla, bool call_del) async;
-
- open_object(ID obj, uint handle out);
- close_object(uint handle) async;
-
- // Create a filter object that implements only some of the
- // interfaces implemented by "obj". This is useful to create a
- // more limited reference to pass to less trusted processes. If
- // "exclude" is true, then all interfaces but those specified will
- // be included. Otherwise, only those interfaces specified will be
- // included. A filter with no interfaces may be created to act as
- // a (mostly) opaque handle.
+ // Release "num" references on the object. If exactly "num"
+ // references remain, the object handle is closed and "gone" is
+ // true. If more references remain, the handle is not closed and
+ // "gone" is false. If fewer references than "num" are present
+ // when called, no references are released, and RefCountException
+ // is thrown.