@0x82abdb5c1dcf399d; using import "traits.capnp".TraitSuper; using import "utils.capnp".Fallible; using import "traits_error.capnp".TraitError; # OID for this trait: 1.3.6.1.4.1.61783.612.1.4 # │ │ │ │ # RLKM UG PEN ╯ │ │ │ # │ │ │ # FabAccess subtree ╯ │ │ # │ │ # Traits ╯ │ # │ # Lockers ╯ interface TraitLocker extends (TraitSuper) { getState @0 () -> StateLocker; engage @1 () -> Fallible(TraitLocker, TraitError(ErrorLocker)) unengage @2 () -> Fallible(TraitLocker, TraitError(ErrorLocker)); } struct StateLocker { union { locked @0 :Void; unlocked @1 :Void; open @2 :Void; unenganged @3 :Void; } } struct ErrorLocker { union { isLocked @0 :Void; isUnlocked @1 :Void; isOpen @2 :Void; incomplete @3 :AnyPointer; # Object is incomplete in some way. # TODO: Define this interface } }