iop_ior.erl

来自「OTP是开放电信平台的简称」· ERL 代码 · 共 1,532 行 · 第 1/5 页

ERL
1,532
字号
		 [#'IOP_TaggedComponent'{tag=?TAG_CODE_SETS, 					 component_data=?DEFAULT_CODESETS}]	 end,    IOR = case ?ORB_FLAG_TEST(EnvFlags, ?ORB_ENV_ENABLE_NAT) of	      false ->		  create(orber:giop_version(), Mod:typeID(), orber:host(), 			 orber:iiop_port(), orber:iiop_ssl_port(),			 {Mod, Type, Key, UserDef, OrberDef, Flags}, 			 MC, Flags, EnvFlags);	      true ->		  create(orber:giop_version(), Mod:typeID(), orber:nat_host(), 			 orber:nat_iiop_port(), orber:nat_iiop_ssl_port(),			 {Mod, Type, Key, UserDef, OrberDef, Flags}, 			 MC, Flags, EnvFlags)	  	  end,    print_helper(IoDevice, IOR);print(_, _) ->    exit("Bad parameter").print_helper(IoDevice, #'IOP_IOR'{type_id=TypeID, profiles=Profs}) ->    Data = io_lib:format("================== IOR ====================~n"			 "------------------ IFR ID -----------------~n~s~n", 			 [TypeID]),    NewData = print_profiles(Profs, []),    print_it(IoDevice, lists:flatten([Data|NewData])).print_profiles([], Acc) ->   lists:flatten([Acc | io_lib:format("================== END ====================~n", [])]);print_profiles([#'IOP_TaggedProfile'		{tag=?TAG_INTERNET_IOP,		 profile_data = #'IIOP_ProfileBody_1_0'{iiop_version=							#'IIOP_Version'{major=Major,									minor=Minor},							host=Host, port=Port,							object_key=Objkey}}|T], Acc) ->    Profile = io_lib:format("~n------------------ IIOP Profile -----------~n"			    "Version.............: ~p.~p~n"			    "Host................: ~s~n"			    "Port................: ~p~n", 			    [Major, Minor, Host, Port]),    ObjKeyStr = print_objkey(Objkey),    print_profiles(T, [Profile, ObjKeyStr | Acc]);print_profiles([#'IOP_TaggedProfile'		{tag=?TAG_INTERNET_IOP,		 profile_data = #'IIOP_ProfileBody_1_1'{iiop_version=							#'IIOP_Version'{major=Major,									minor=Minor},							host=Host,							port=Port,							object_key=Objkey,							components=Components}}|T], Acc) ->    Profile = io_lib:format("~n------------------ IIOP Profile -----------~n"			    "Version.............: ~p.~p~n"			    "Host................: ~s~n"			    "Port................: ~p~n", 			    [Major, Minor, Host, Port]),    ComponentsStr = print_components(Components, []),    ObjKeyStr = print_objkey(Objkey),    print_profiles(T, [Profile, ObjKeyStr, ComponentsStr |Acc]);print_profiles([#'IOP_TaggedProfile'{tag=?TAG_MULTIPLE_COMPONENTS,				     profile_data = Components}|T], Acc) ->    MComp = io_lib:format("~n------------------ Multiple Components ----~n", []),    ComponentsStr = print_components(Components, []),    print_profiles(T, [MComp, ComponentsStr | Acc]);print_profiles([#'IOP_TaggedProfile'{tag=?TAG_SCCP_IOP,				     profile_data = _Data}|T], Acc) ->    SCCP = io_lib:format("~n------------------ SCCP IOP ---------------~n", []),    print_profiles(T, [SCCP | Acc]);print_profiles([#'IOP_TaggedProfile'{tag=Tag,				     profile_data = Data}|T], Acc) ->    TAG = io_lib:format("~n------------------ TAG ~p -----------------~n"			"Data................: ~p~n", [Tag, Data]),    print_profiles(T, [TAG|Acc]).print_components([], Data) -> lists:flatten(lists:reverse(Data));print_components([#'IOP_TaggedComponent'{tag=?TAG_ORB_TYPE, 					 component_data=ORB}|T], Data) ->    OType = io_lib:format("   TAG_ORB_TYPE~n"			  "ORB Type............: ~p~n", [ORB]),    print_components(T, [OType | Data]);print_components([#'IOP_TaggedComponent'{tag=?TAG_CODE_SETS, 					 component_data=					 #'CONV_FRAME_CodeSetComponentInfo'					 {'ForCharData' = Char,					  'ForWcharData' = Wchar}}|T], Data) ->    CharSet = io_lib:format("   TAG_CODE_SETS~n"			    "Native Char.........: ~p~n"			    "Char Conversion.....: ~p~n"			    "Native Wchar........: ~p~n"			    "Wchar Conversion....: ~p~n", 			    [Char#'CONV_FRAME_CodeSetComponent'.native_code_set,			     Char#'CONV_FRAME_CodeSetComponent'.conversion_code_sets,			     Wchar#'CONV_FRAME_CodeSetComponent'.native_code_set,			     Wchar#'CONV_FRAME_CodeSetComponent'.conversion_code_sets]),    print_components(T, [CharSet | Data]);print_components([#'IOP_TaggedComponent'{tag=?TAG_ALTERNATE_IIOP_ADDRESS, 					 component_data=#'ALTERNATE_IIOP_ADDRESS'					 {'HostID'=Host, 'Port'=Port}}|T], Data) ->    AltAddr = io_lib:format("   TAG_ALTERNATE_IIOP_ADDRESS~n"			    "Alternate Address...: ~s:~p~n", [Host, Port]),    print_components(T, [AltAddr | Data]);print_components([#'IOP_TaggedComponent'{tag=?TAG_SSL_SEC_TRANS, 					 component_data=#'SSLIOP_SSL'					 {target_supports=Supports, 					  target_requires=Requires,					  port=Port}}|T], Data) ->    SSL = io_lib:format("   TAG_SSL_SEC_TRANS~n"			"SSL Port............: ~p~n"			"SSL Requires........: ~p~n"			"SSL Supports........: ~p~n", [Port, Requires, Supports]),    print_components(T, [SSL | Data]);%% Fault Tolerant Componentsprint_components([#'IOP_TaggedComponent'{tag=?TAG_FT_GROUP, 					 component_data=#'FT_TagFTGroupTaggedComponent'					 {version = Version,					  ft_domain_id = DomainId,					  object_group_id = ObjectGroupId,					  object_group_ref_version = ObjGrRefVer}}|T], Data) ->    Comp = io_lib:format("   TAG_FT_GROUP~n"			 "Version.............: ~p~n"			 "Domain Id...........: ~p~n"			 "Obj Group Id........: ~p~n"			 "Obj Group Ref Ver...: ~p~n", 			 [Version, DomainId, ObjectGroupId, ObjGrRefVer]),    print_components(T, [Comp | Data]);print_components([#'IOP_TaggedComponent'{tag=?TAG_FT_PRIMARY, 					 component_data=#'FT_TagFTPrimaryTaggedComponent'					 {primary = Primary}}|T], Data) ->    Comp = io_lib:format("   TAG_FT_PRIMARY~n"			 "Primary.............: ~p~n", [Primary]),    print_components(T, [Comp | Data]);print_components([#'IOP_TaggedComponent'{tag=?TAG_FT_HEARTBEAT_ENABLED, 					 component_data=#'FT_TagFTHeartbeatEnabledTaggedComponent'					 {heartbeat_enabled = HBE}}|T], Data) ->    Comp = io_lib:format("   TAG_FT_HEARTBEAT_ENABLED~n"			 "Heart Beat Enabled..: ~p~n", [HBE]),    print_components(T, [Comp | Data]);%% Security - CSIIOPprint_components([#'IOP_TaggedComponent'{tag=?TAG_CSI_SEC_MECH_LIST, 					 component_data=#'CSIIOP_CompoundSecMechList'					 {stateful=Stateful,					  mechanism_list = MechList}}|T], Data) ->    Comp = io_lib:format("   TAG_CSI_SEC_MECH_LIST~n"			 "Stateful............: ~p~n"			 "Mechanisms..........: ~p~n", [Stateful, MechList]),    print_components(T, [Comp | Data]);print_components([#'IOP_TaggedComponent'{tag=?TAG_TLS_SEC_TRANS, 					 component_data=#'CSIIOP_TLS_SEC_TRANS'					 {target_supports = TargetS,					  target_requires = TargetR,					  addresses = Addresses}}|T], Data) ->    Comp = io_lib:format("   TAG_TLS_SEC_TRANS~n"			 "Target Supports.....: ~p~n"			 "Target Requires.....: ~p~n"			 "Addresses...........: ~p~n", 			 [TargetS, TargetR, Addresses]),    print_components(T, [Comp | Data]);print_components([#'IOP_TaggedComponent'{tag=?TAG_SECIOP_SEC_TRANS, 					 component_data=#'CSIIOP_SECIOP_SEC_TRANS'					 {target_supports = TargetS,					  target_requires = TargetR,					  mech_oid = MechOID,					  target_name = TargetName,					  addresses = Addresses}}|T], Data) ->    Comp = io_lib:format("   TAG_SECIOP_SEC_TRANS~n"			 "Target Supports.....: ~p~n"			 "Target Requires.....: ~p~n"			 "Mechanism OID.......: ~p~n"			 "Target Name.........: ~p~n"			 "Addresses...........: ~p~n", 			 [TargetS, TargetR, MechOID, TargetName, Addresses]),    print_components(T, [Comp | Data]);%% Unused components.print_components([#'IOP_TaggedComponent'{tag=TAG, 					 component_data=CData}|T], Data) ->    Unused = io_lib:format("Unused Component....: ~s~n", [match_tag(TAG)]),    Octets = print_octets(CData, [], 1, []),    print_components(T, [lists:flatten([Unused | Octets])| Data]).print_objkey(Objkey) when tuple(Objkey) ->    io_lib:format("Local Object........:~n~p~n", [Objkey]);print_objkey(Objkey) ->    Hdr = io_lib:format("External Object.....: ~n", []),    Octets = print_octets(Objkey, [], 1, []),    lists:flatten([Hdr | Octets]).print_octets([], [], _, Data) ->    lists:reverse(Data);print_octets([], Acc, C, Data) ->    Filling = lists:duplicate((4*(9-C)), 32),    FData = io_lib:format("~s", [Filling]),    Rest = io_lib:format("  ~p~n", [lists:reverse(Acc)]),    [lists:reverse(Data), FData | Rest];print_octets([H|T], Acc, 8, Data) when H > 31 , H < 127 ->    D1 = io_lib:format("~4w", [H]),    D2 = io_lib:format("  ~p~n", [lists:reverse([H|Acc])]),    print_octets(T, [], 1, [D2, D1 | Data]);print_octets([H|T], Acc, 1, Data) when H > 31 , H < 127 ->    D1 = io_lib:format("~3w", [H]),    print_octets(T, [H|Acc], 2, [D1 | Data]);print_octets([H|T], Acc, C, Data) when H > 31 , H < 127 ->    D1 = io_lib:format("~4w", [H]),    print_octets(T, [H|Acc], C+1, [D1 | Data]);print_octets([H|T], Acc, 8, Data) ->    D1 = io_lib:format("~4w", [H]),    D2 = io_lib:format("  ~p~n", [lists:reverse([$.|Acc])]),    print_octets(T, [], 1, [D2, D1 | Data]);print_octets([H|T], Acc, 1, Data) ->    D1 = io_lib:format("~3w", [H]),    print_octets(T, [$.|Acc], 2, [D1|Data]);print_octets([H|T], Acc, C, Data) ->    D1 = io_lib:format("~4w", [H]),    print_octets(T, [$.|Acc], C+1, [D1|Data]).print_it(undefined, Data) ->    io:format(Data);print_it(error_report, Data) ->    error_logger:error_report(Data);print_it(info_msg, Data) ->    error_logger:info_msg(Data);print_it(string, Data) ->    lists:flatten(Data);print_it({error_report, Msg}, Data) ->    error_logger:error_report(io_lib:format("================== Reason =================~n~s~n~s", 					    [Msg, Data]));print_it({info_msg, Msg}, Data) ->    error_logger:info_msg(io_lib:format("================== Comment ================~n~s~n~s", 					[Msg, Data]));print_it(IoDevice, Data) ->    io:format(IoDevice, Data, []).match_tag(?TAG_ORB_TYPE) -> ?TAG_ORB_TYPE_STR;match_tag(?TAG_CODE_SETS) -> ?TAG_CODE_SETS_STR;match_tag(?TAG_POLICIES) -> ?TAG_POLICIES_STR;match_tag(?TAG_ALTERNATE_IIOP_ADDRESS) -> ?TAG_ALTERNATE_IIOP_ADDRESS_STR;match_tag(?TAG_COMPLETE_OBJECT_KEY) -> ?TAG_COMPLETE_OBJECT_KEY_STR;match_tag(?TAG_ENDPOINT_ID_POSITION) -> ?TAG_ENDPOINT_ID_POSITION_STR;match_tag(?TAG_LOCATION_POLICY) -> ?TAG_LOCATION_POLICY_STR;match_tag(?TAG_ASSOCIATION_OPTIONS) -> ?TAG_ASSOCIATION_OPTIONS_STR;match_tag(?TAG_SEC_NAME) -> ?TAG_SEC_NAME_STR;match_tag(?TAG_SPKM_1_SEC_MECH) -> ?TAG_SPKM_1_SEC_MECH_STR;match_tag(?TAG_SPKM_2_SEC_MECH) -> ?TAG_SPKM_2_SEC_MECH_STR;match_tag(?TAG_KerberosV5_SEC_MECH) -> ?TAG_KerberosV5_SEC_MECH_STR;match_tag(?TAG_CSI_ECMA_Secret_SEC_MECH) -> ?TAG_CSI_ECMA_Secret_SEC_MECH_STR;match_tag(?TAG_CSI_ECMA_Hybrid_SEC_MECH) -> ?TAG_CSI_ECMA_Hybrid_SEC_MECH_STR;match_tag(?TAG_SSL_SEC_TRANS) -> ?TAG_SSL_SEC_TRANS_STR;match_tag(?TAG_CSI_ECMA_Public_SEC_MECH) -> ?TAG_CSI_ECMA_Public_SEC_MECH_STR;match_tag(?TAG_GENERIC_SEC_MECH) -> ?TAG_GENERIC_SEC_MECH_STR;match_tag(?TAG_FIREWALL_TRANS) -> ?TAG_FIREWALL_TRANS_STR;match_tag(?TAG_SCCP_CONTACT_INFO) -> ?TAG_SCCP_CONTACT_INFO_STR;match_tag(?TAG_JAVA_CODEBASE) -> ?TAG_JAVA_CODEBASE_STR;match_tag(?TAG_TRANSACTION_POLICY) -> ?TAG_TRANSACTION_POLICY_STR;match_tag(?TAG_FT_GROUP) -> ?TAG_FT_GROUP_STR;match_tag(?TAG_FT_PRIMARY) -> ?TAG_FT_PRIMARY_STR;match_tag(?TAG_FT_HEARTBEAT_ENABLED) -> ?TAG_FT_HEARTBEAT_ENABLED_STR;match_tag(?TAG_MESSAGE_ROUTERS) -> ?TAG_MESSAGE_ROUTERS_STR;match_tag(?TAG_OTS_POLICY) -> ?TAG_OTS_POLICY_STR;match_tag(?TAG_INV_POLICY) -> ?TAG_INV_POLICY_STR;match_tag(?TAG_CSI_SEC_MECH_LIST) -> ?TAG_CSI_SEC_MECH_LIST_STR;match_tag(?TAG_NULL_TAG) -> ?TAG_NULL_TAG_STR;match_tag(?TAG_SECIOP_SEC_TRANS) -> ?TAG_SECIOP_SEC_TRANS_STR;match_tag(?TAG_TLS_SEC_TRANS) -> ?TAG_TLS_SEC_TRANS_STR;match_tag(?TAG_DCE_STRING_BINDING) -> ?TAG_DCE_STRING_BINDING_STR;match_tag(?TAG_DCE_BINDING_NAME) -> ?TAG_DCE_BINDING_NAME_STR;match_tag(?TAG_DCE_NO_PIPES) -> ?TAG_DCE_NO_PIPES_STR;match_tag(?TAG_DCE_SEC_MECH) -> ?TAG_DCE_SEC_MECH_STR;match_tag(?TAG_INET_SEC_TRANS) -> ?TAG_INET_SEC_TRANS_STR;match_tag(Tag) -> integer_to_list(Tag).%%-----------------------------------------------------------------%% Func: string_code/1%%-----------------------------------------------------------------string_code(IOR) ->    Flags = orber:get_flags(),    case ?ORB_FLAG_TEST(Flags, ?ORB_ENV_ENABLE_NAT) of	false ->	    string_code(IOR, Flags, orber:host(), 			orber:iiop_port(), orber:iiop_ssl_port());	true ->	    string_code(IOR, Flags, orber:nat_host(), 			orber:nat_iiop_port(), orber:nat_iiop_ssl_port())    end.string_code(IOR, Host) ->    Flags = orber:get_flags(),    case ?ORB_FLAG_TEST(Flags, ?ORB_ENV_ENABLE_NAT) of	false ->	    string_code(IOR, Flags, Host, 			orber:iiop_port(), orber:iiop_ssl_port());	true ->	    string_code(IOR, Flags, Host, 			orber:nat_iiop_port(), orber:nat_iiop_ssl_port())    end.string_code(IOR, Host, Port) ->    Flags = orber:get_flags(),    case ?ORB_FLAG_TEST(Flags, ?ORB_ENV_ENABLE_NAT) of	false ->	    string_code(IOR, Flags, Host, Port, orber:iiop_ssl_port());	true ->	    string_code(IOR, Flags, Host, Port, orber:nat_iiop_ssl_port())    end.string_code(IOR, Host, Port, SSLPort) ->    string_code(IOR, orber:get_flags(), Host, Port, SSLPort).

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?