indexing description: "Represents a peer group id in UUID format" license: "MIT license (see ../license.txt)" author: "Beat Strasser " date: "$Date$" revision: "$Revision$" class P2P_PEERGROUP_UUID inherit P2P_PEERGROUP_ID undefine parse_unique_id, is_unique_id_valid, make_from_urn end P2P_ID_UUID redefine make_from_urn end create make_from_urn, make, make_with_uuid, make_new_with_parent feature {NONE} -- Initialization make_with_uuid (a_uuid: like bytes) is -- Create peer group id with `uuid' and without parent uuid do initialize_bytes bytes.subcopy (a_uuid, 0, uuid_bytes_count - 1, group_uuid_msb) build_uuidformat end make (a_uuid, parent_uuid: like bytes) is -- Create child peer group with given `uuid' of `parent_uuid' group do initialize_bytes bytes.subcopy (a_uuid, 0, uuid_bytes_count - 1, group_uuid_msb) bytes.subcopy (parent_uuid, 0, uuid_bytes_count - 1, parent_group_uuid_msb) build_uuidformat end make_new_with_parent (parent: like bytes) is -- Create new child peer group id of `parent' group with new uuid do initialize_bytes create_random_uuid (bytes, group_uuid_msb) bytes.subcopy (parent, 0, uuid_bytes_count - 1, parent_group_uuid_msb) build_uuidformat end make_from_urn (urn: STRING_8) -- Create id from `urn' string do initialize_bytes Precursor (urn) end feature -- Access flag_id_type: NATURAL_8 is 2 parent_peer_group_id: P2P_PEERGROUP_UUID is -- Parent peer group id require Valid: is_valid do create Result.make_with_uuid (subbytes (parent_group_uuid_msb, parent_group_uuid_lsb)) ensure Result_set: Result /= Void end is_worldgroup_id: BOOLEAN is -- Is current id the world group id? local wpg: P2P_WORLDGROUP_ID do create wpg.make Result := wpg.uuid.is_equal (subbytes (group_uuid_msb, group_uuid_lsb)) end is_netgroup_id: BOOLEAN is -- Is current id the net group id? local npg: P2P_NETGROUP_ID do create npg.make Result := npg.uuid.is_equal (subbytes (group_uuid_msb, group_uuid_lsb)) end feature {NONE} -- Implementation Group_uuid_msb, Characteristic_uuid_msb: INTEGER is 0 Group_uuid_lsb, Characteristic_uuid_lsb: INTEGER is 15 Parent_group_uuid_msb: INTEGER is 16 Parent_group_uuid_lsb: INTEGER is 31 end