indexing description: "Represents a codat id" license: "MIT license (see ../license.txt)" author: "Beat Strasser " date: "$Date$" revision: "$Revision$" class P2P_CODAT_ID inherit P2P_ID_UUID P2P_UUID_TOOLS undefine out, is_equal end create make_from_urn, make, make_with_hash, make_new_with_group feature {NONE} -- Initialization make (group_uuid, codat_uuid: like bytes) is -- Create codat id with `codat_uuid' in peer group `group_uuid' require Group_uuid_valid: group_uuid /= Void and group_uuid.count = uuid_bytes_count Codat_uuid_valid: codat_uuid /= Void and codat_uuid.count = uuid_bytes_count do initialize_bytes bytes.subcopy (group_uuid, 0, uuid_bytes_count - 1, peer_group_uuid_msb) bytes.subcopy (codat_uuid, 0, uuid_bytes_count - 1, codat_uuid_msb) build_uuidformat end make_with_hash (group_uuid, codat_uuid, a_hash: like bytes) is -- Create codat id with `codat_uuid' in peer group `group_uuid' and with `a_hash' require Group_uuid_valid: group_uuid /= Void and group_uuid.count = uuid_bytes_count Codat_uuid_valid: codat_uuid /= Void and codat_uuid.count = uuid_bytes_count Hash_uuid_valid: a_hash /= Void and a_hash.count = codat_hash_lsb - codat_hash_msb + 1 do initialize_bytes bytes.subcopy (group_uuid, 0, uuid_bytes_count - 1, peer_group_uuid_msb) bytes.subcopy (codat_uuid, 0, uuid_bytes_count - 1, codat_uuid_msb) bytes.subcopy (a_hash, 0, codat_hash_lsb - codat_hash_msb, codat_hash_msb) build_uuidformat end make_new_with_group (group_uuid: like bytes) is -- Create new codat id with new uuid in peer group `group_uuid' require Group_uuid_valid: group_uuid /= Void and group_uuid.count = uuid_bytes_count do initialize_bytes bytes.subcopy (group_uuid, 0, uuid_bytes_count - 1, peer_group_uuid_msb) create_random_uuid (bytes, codat_uuid_msb) build_uuidformat end feature -- Access flag_id_type: NATURAL_8 is 1 peer_group_id: P2P_PEERGROUP_UUID is -- Create peer group id do create Result.make_with_uuid (subbytes (peer_group_uuid_msb, peer_group_uuid_lsb)) ensure Result_set: Result /= Void end hash: like bytes is -- Hash bytes do Result := subbytes (codat_hash_msb, codat_hash_lsb) ensure Result_set: Result /= Void end feature {NONE} -- Implementation Peer_group_uuid_msb: INTEGER is 0 Peer_group_uuid_lsb: INTEGER is 15 Codat_uuid_msb, Characteristic_uuid_msb: INTEGER is 16 Codat_uuid_lsb, Characteristic_uuid_lsb: INTEGER is 31 Codat_hash_msb: INTEGER is 32 Codat_hash_lsb: INTEGER is 51 end