X-Git-Url: http://git.buserror.net/cgi-bin/gitweb.cgi?p=polintos%2Fscott%2Fpriv.git;a=blobdiff_plain;f=idl%2Fobjmgr.idl;fp=idl%2Fobjmgr.idl;h=764e055f6c1137319a9a1df421615fda67da6711;hp=bf7d08a4e35a62df93091b82e44fd13fc4b129fa;hb=9cd5b143a255c39bf26b3accae3f15edda03ccc7;hpb=07f827f6957bfb9b3c29f8730670bf1ed51581ff diff --git a/idl/objmgr.idl b/idl/objmgr.idl index bf7d08a..764e055 100644 --- a/idl/objmgr.idl +++ b/idl/objmgr.idl @@ -14,11 +14,15 @@ struct VStruct virtual { }; namespace Objects { - // FIXME: make this a built-in ID type that fixes things - // up when moving between systems. It can be native word - // sized, rather than always long. + typedef uint ID; + + struct GUID { + ulong[2] data; + }; - typedef ulong ID; + struct IHash { + uint[5] data; + }; struct TypeDesc { enum BasicType { @@ -118,7 +122,7 @@ namespace Objects { interface IDSpace { guid: "06489629-9C25-4C14-9A5B-6C59639C87D6"; - new_object(Mem.AddrSpace aspace, ulong entry, ID obj out); + new_object(ID obj, IHash hash); // Release "num" references on the object. If exactly "num" // references remain, the object handle is closed and "gone" is @@ -132,6 +136,18 @@ namespace Objects { // a refcount of 1. release(ID obj, int num, bool gone out); + + // Delete an object regardless of the number of references. + // If the object is local, then all remote references will + // become dangling; any attempt to pass the handle to the + // ORB will result in an InvalidReference exception. + + revoke(ID obj); + + // Return the number of references to an object. + // This method is intended for debugging only. + + get_refs(ID obj, int num out); }; // This is a generic Factory interface; specific factories may