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 + -
显示快捷键?