indexing description: "Id creator example" license: "MIT license (see ../../license.txt)" author: "Beat Strasser " date: "$Date$" revision: "$Revision$" class P2P_IDCREATOR_MAIN inherit ARGUMENTS create make feature {NONE} -- Initialization make is -- Create id creator example do create id_creator.make if argument_count < 1 then print_usage elseif argument (1).as_lower.is_equal (mode_mcid) then create_mcid elseif argument (1).as_lower.is_equal (mode_msid) and argument_count = 2 then create_msid (argument (2)) elseif argument (1).as_lower.is_equal (mode_netgroup) then create_netgroup elseif argument (1).as_lower.is_equal (mode_null) then create_nullid elseif argument (1).as_lower.is_equal (mode_peergroup) and argument_count = 1 then create_peergroup (id_creator.worldgroup_id.out) elseif argument (1).as_lower.is_equal (mode_peergroup) and argument_count = 2 then create_peergroup (argument (2)) elseif argument (1).as_lower.is_equal (mode_peer) and argument_count = 1 then create_peer (id_creator.netgroup_id.out) elseif argument (1).as_lower.is_equal (mode_peer) and argument_count = 2 then create_peer (argument (2)) elseif argument (1).as_lower.is_equal (mode_worldgroup) then create_worldgroup else print_usage end end feature {NONE} -- Implementation Mode_mcid: STRING is "mcid" Mode_msid: STRING is "msid" Mode_netgroup: STRING is "netgroup" Mode_null: STRING is "null" Mode_peergroup: STRING is "peergroup" Mode_peer: STRING is "peer" Mode_worldgroup: STRING is "worldgroup" id_creator: P2P_ID_CREATOR print_usage is -- Print usage do io.put_string ("Usage:") io.put_new_line io.put_string ("%T" + argument (0) + " " + mode_mcid) io.put_new_line io.put_string ("%T" + argument (0) + " " + mode_msid + " a_mcid") io.put_new_line io.put_string ("%T" + argument (0) + " " + mode_netgroup) io.put_new_line io.put_string ("%T" + argument (0) + " " + mode_null) io.put_new_line io.put_string ("%T" + argument (0) + " " + mode_peergroup + " [parent_group]") io.put_new_line io.put_string ("%T" + argument (0) + " " + mode_peer + " [a_peergroup]") io.put_new_line io.put_string ("%T" + argument (0) + " " + mode_worldgroup) io.put_new_line end create_mcid is -- Create new MCID local mcid: P2P_MODULE_CLASS_ID do create mcid.make_new io.put_string ("New MCID: " + mcid.out) io.put_new_line end create_msid (a_mcid: STRING) is -- Create new MSID require Mcid_valid: a_mcid /= Void local mcid: P2P_MODULE_CLASS_ID msid: P2P_MODULE_SPECIFICATION_ID do create mcid.make_from_urn (a_mcid) if mcid.is_valid then create msid.make_new_with_class (mcid.uuid) io.put_string ("New MSID: " + msid.out) io.put_new_line io.put_string ("MCID: " + mcid.out) io.put_new_line end end create_netgroup is -- Print netgroup id do io.put_string ("NetGroup ID: " + id_creator.netgroup_id.out) io.put_new_line end create_nullid is -- Print null id do io.put_string ("Null ID: " + id_creator.null_id.out) io.put_new_line end create_peergroup (a_parent_group: STRING) is -- Create new peer group id require Parent_group_valid: a_parent_group /= Void local parent: P2P_PEERGROUP_ID gid, parent_uuid: P2P_PEERGROUP_UUID do -- parse group id parent := id_creator.create_peergroup_id (a_parent_group) parent_uuid ?= parent -- try to create a peer group id with the given parent group if parent /= Void and parent.is_valid and parent.is_netgroup_id then create gid.make_new_with_parent (id_creator.netgroup_id.uuid) elseif parent /= Void and parent.is_valid and parent.is_worldgroup_id then create gid.make_new_with_parent (id_creator.worldgroup_id.uuid) elseif parent_uuid /= Void and parent_uuid.is_valid then create gid.make_new_with_parent (parent_uuid.uuid) else io.put_string ("Unrecognized parent group id") io.put_new_line end if gid /= Void and gid.is_valid then io.put_string ("New Peer Group ID: " + gid.out) io.put_new_line io.put_string ("Parent Group ID: " + parent.out) io.put_new_line end end create_peer (a_peergroup: STRING) is -- Create new peer id require Peergroup_valid: a_peergroup /= Void local gid: P2P_PEERGROUP_ID guuid: P2P_PEERGROUP_UUID pid: P2P_PEER_ID do -- parse group id gid := id_creator.create_peergroup_id (a_peergroup) guuid ?= gid -- try to create a peer id with the given group id if gid /= Void and gid.is_valid and gid.is_netgroup_id then create pid.make_new_with_group (id_creator.netgroup_id.uuid) elseif gid /= Void and gid.is_valid and gid.is_worldgroup_id then create pid.make_new_with_group (id_creator.worldgroup_id.uuid) elseif guuid /= Void and guuid.is_valid then create pid.make_new_with_group (guuid.uuid) else io.put_string ("Unrecognized peer group id") io.put_new_line end -- print peer id if pid /= Void and pid.is_valid then io.put_string ("New Peer ID: " + pid.out) io.put_new_line io.put_string ("Group ID: " + gid.out) io.put_new_line end end create_worldgroup is -- Print worldgroup id do io.put_string ("WorldGroup ID: " + id_creator.worldgroup_id.out) io.put_new_line end end