~ubuntu-branches/debian/squeeze/erlang/squeeze

« back to all changes in this revision

Viewing changes to lib/orber/src/iop_ior.erl

  • Committer: Bazaar Package Importer
  • Author(s): Erlang Packagers, Sergei Golovan
  • Date: 2006-12-03 17:07:44 UTC
  • mfrom: (2.1.11 feisty)
  • Revision ID: james.westby@ubuntu.com-20061203170744-rghjwupacqlzs6kv
Tags: 1:11.b.2-4
[ Sergei Golovan ]
Fixed erlang-base and erlang-base-hipe prerm scripts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
%%-----------------------------------------------------------------
33
33
%% External exports
34
34
%%-----------------------------------------------------------------
35
 
-export([code/4, decode/4, string_code/1, string_decode/1,
 
35
-export([code/4, decode/4, string_decode/1,
 
36
         string_code/1, string_code/2, string_code/3, string_code/4, 
36
37
         get_key/1, get_key/2, get_typeID/1, create/9,
37
38
         get_objkey/1, check_nil/1, get_privfield/1, set_privfield/2, 
38
39
         get_orbfield/1, set_orbfield/2, 
238
239
            {'internal_registered', {pseudo, Key}, OrberDef, Flags, Module};
239
240
        atom(Key) ->
240
241
            {'internal_registered', Key, OrberDef, Flags, Module}
241
 
    end.
 
242
    end;
 
243
get_key(What) ->
 
244
    orber:dbg("[~p] iop_ior:get_key(~p); Invalid IOR", 
 
245
              [?LINE, What], ?DEBUG_LEVEL),
 
246
    corba:raise(#'INV_OBJREF'{completion_status=?COMPLETED_NO}).
 
247
    
242
248
 
243
249
get_key(#'IOP_IOR'{profiles=P}, Exclude)  ->
244
 
    get_key_1(P, true, 0, Exclude, #host_data{}).
 
250
    get_key_1(P, true, 0, Exclude, #host_data{});
 
251
get_key(What, _Exclude) ->
 
252
    orber:dbg("[~p] iop_ior:get_key(~p); Invalid IOR", 
 
253
              [?LINE, What], ?DEBUG_LEVEL),
 
254
    corba:raise(#'INV_OBJREF'{completion_status=?COMPLETED_NO}).
 
255
 
245
256
 
246
257
get_key_1([], false, _, _, _)  ->
247
258
    orber:dbg("[~p] iop_ior:get_key_1([]); bad object reference, profile not found.", 
1112
1123
%% Func: string_code/1
1113
1124
%%-----------------------------------------------------------------
1114
1125
string_code(IOR) ->
1115
 
    Version = orber:giop_version(),
1116
 
    {IorByteSeq0, Length0} = cdr_encode:enc_type('tk_octet', Version, 0, [], 0),
1117
 
    {IorByteSeq, _} = code(Version, IOR, IorByteSeq0, Length0),
 
1126
    Flags = orber:get_flags(),
 
1127
    case ?ORB_FLAG_TEST(Flags, ?ORB_ENV_ENABLE_NAT) of
 
1128
        false ->
 
1129
            string_code(IOR, Flags, orber:host(), 
 
1130
                        orber:iiop_port(), orber:iiop_ssl_port());
 
1131
        true ->
 
1132
            string_code(IOR, Flags, orber:nat_host(), 
 
1133
                        orber:nat_iiop_port(), orber:nat_iiop_ssl_port())
 
1134
    end.
 
1135
 
 
1136
string_code(IOR, Host) ->
 
1137
    Flags = orber:get_flags(),
 
1138
    case ?ORB_FLAG_TEST(Flags, ?ORB_ENV_ENABLE_NAT) of
 
1139
        false ->
 
1140
            string_code(IOR, Flags, Host, 
 
1141
                        orber:iiop_port(), orber:iiop_ssl_port());
 
1142
        true ->
 
1143
            string_code(IOR, Flags, Host, 
 
1144
                        orber:nat_iiop_port(), orber:nat_iiop_ssl_port())
 
1145
    end.
 
1146
 
 
1147
string_code(IOR, Host, Port) ->
 
1148
    Flags = orber:get_flags(),
 
1149
    case ?ORB_FLAG_TEST(Flags, ?ORB_ENV_ENABLE_NAT) of
 
1150
        false ->
 
1151
            string_code(IOR, Flags, Host, Port, orber:iiop_ssl_port());
 
1152
        true ->
 
1153
            string_code(IOR, Flags, Host, Port, orber:nat_iiop_ssl_port())
 
1154
    end.
 
1155
 
 
1156
string_code(IOR, Host, Port, SSLPort) ->
 
1157
    string_code(IOR, orber:get_flags(), Host, Port, SSLPort).
 
1158
 
 
1159
string_code(IOR, Flags, IP, Port, SSLPort) ->
 
1160
    Env = #giop_env{version = orber:giop_version(),
 
1161
                    flags = Flags, host = IP, iiop_port = Port, 
 
1162
                    iiop_ssl_port = SSLPort, domain = orber:domain(),
 
1163
                    partial_security = orber:partial_security()},
 
1164
    {IorByteSeq0, Length0} = cdr_encode:enc_type('tk_octet', Env, 0, [], 0),
 
1165
    {IorByteSeq, _} = code(Env, IOR, IorByteSeq0, Length0),
1118
1166
    IorByteSeq1 = binary_to_list(list_to_binary(lists:reverse(IorByteSeq))),
1119
1167
    IorHexSeq = bytestring_to_hexstring(IorByteSeq1),
1120
1168
    [$I,$O,$R,$: | IorHexSeq].
1122
1170
%%-----------------------------------------------------------------
1123
1171
%% Func: code/3
1124
1172
%%-----------------------------------------------------------------
1125
 
code(Version, #'IOP_IOR'{type_id=TypeId, profiles=Profiles}, Bytes, Len) ->
 
1173
code(#giop_env{version = Version} = Env, #'IOP_IOR'{type_id=TypeId, profiles=Profiles}, Bytes, Len) ->
1126
1174
    ProfileSeq =code_profile_datas(Version, Profiles),
1127
1175
    %% Byte order
1128
1176
    cdr_encode:enc_type(?IOR_TYPEDEF,
1129
 
                        Version, 
 
1177
                        Env, 
1130
1178
                        #'IOP_IOR'{type_id=TypeId, profiles=ProfileSeq},
1131
1179
                        Bytes, Len);
1132
 
code(Version, {Mod, Type, Key, UserDef, OrberDef, Flags}, Bytes, Len) ->
1133
 
    EnvFlags = orber:get_flags(),
 
1180
%% No Local Interface supplied. Use configuration parameters.
 
1181
code(#giop_env{version = Version, host = 0, flags = EnvFlags} = Env, 
 
1182
     {Mod, Type, Key, UserDef, OrberDef, Flags}, Bytes, Len) ->
1134
1183
    MC = case ?ORB_FLAG_TEST(EnvFlags, ?ORB_ENV_EXCLUDE_CODESET_COMPONENT) of
1135
1184
             true ->
1136
1185
                 [];
1151
1200
                         MC, Flags, EnvFlags)
1152
1201
          
1153
1202
          end,
1154
 
    code(Version, IOR, Bytes, Len).
 
1203
    code(Env, IOR, Bytes, Len);
 
1204
code(#giop_env{version = Version, host = Host, iiop_port = IIOPort, 
 
1205
               iiop_ssl_port = SSLPort, flags = EnvFlags} = Env, 
 
1206
     {Mod, Type, Key, UserDef, OrberDef, Flags}, Bytes, Len) ->
 
1207
    MC = case ?ORB_FLAG_TEST(EnvFlags, ?ORB_ENV_EXCLUDE_CODESET_COMPONENT) of
 
1208
             true ->
 
1209
                 [];
 
1210
             false ->
 
1211
                 [#'IOP_TaggedComponent'{tag=?TAG_CODE_SETS, 
 
1212
                                         component_data=?DEFAULT_CODESETS}]
 
1213
         end,
 
1214
    IOR = create(Version, Mod:typeID(), Host, check_port(IIOPort, normal), 
 
1215
                 check_port(SSLPort, ssl), {Mod, Type, Key, UserDef, OrberDef, Flags}, 
 
1216
                 MC, Flags, EnvFlags),
 
1217
    code(Env, IOR, Bytes, Len).
1155
1218
 
 
1219
check_port(Port, _Type) when integer(Port) ->
 
1220
    Port;
 
1221
check_port(_, normal) ->
 
1222
    orber:iiop_port();
 
1223
check_port(_, ssl) ->
 
1224
    orber:iiop_ssl_port().
1156
1225
 
1157
1226
code_profile_datas(_, []) ->
1158
1227
    [];