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

« back to all changes in this revision

Viewing changes to lib/megaco/src/binary/megaco_ber_bin_drv_encoder.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:
24
24
-behaviour(megaco_encoder).
25
25
 
26
26
-export([encode_message/3, decode_message/3,
 
27
         decode_mini_message/3, 
27
28
        
28
29
         encode_transaction/3,
29
30
         encode_action_requests/3,
36
37
 
37
38
-include_lib("megaco/src/engine/megaco_message_internal.hrl").
38
39
 
39
 
-define(V1_ASN1_MOD, megaco_ber_bin_drv_media_gateway_control_v1).
40
 
-define(V2_ASN1_MOD, megaco_ber_bin_drv_media_gateway_control_v2).
41
 
 
42
 
-define(V1_TRANS_MOD, megaco_binary_transformer_v1).
43
 
-define(V2_TRANS_MOD, megaco_binary_transformer_v2).
44
 
 
 
40
-define(V1_ASN1_MOD,     megaco_ber_bin_drv_media_gateway_control_v1).
 
41
-define(V2_ASN1_MOD,     megaco_ber_bin_drv_media_gateway_control_v2).
 
42
-define(V3_ASN1_MOD,     megaco_ber_bin_drv_media_gateway_control_v3).
 
43
-define(PREV3A_ASN1_MOD, megaco_ber_bin_drv_media_gateway_control_prev3a).
 
44
-define(PREV3B_ASN1_MOD, megaco_ber_bin_drv_media_gateway_control_prev3b).
 
45
 
 
46
-define(V1_TRANS_MOD,     megaco_binary_transformer_v1).
 
47
-define(V2_TRANS_MOD,     megaco_binary_transformer_v2).
 
48
-define(V3_TRANS_MOD,     megaco_binary_transformer_v3).
 
49
-define(PREV3A_TRANS_MOD, megaco_binary_transformer_prev3a).
 
50
-define(PREV3B_TRANS_MOD, megaco_binary_transformer_prev3b).
 
51
 
 
52
-define(BIN_LIB, megaco_binary_encoder_lib).
 
53
 
 
54
 
 
55
%%----------------------------------------------------------------------
 
56
%% Detect (check) which version a message is
 
57
%% Return {ok, Version} | {error, Reason}
 
58
%%----------------------------------------------------------------------
 
59
 
 
60
version_of([{version3,prev3b}|EC], Binary) ->
 
61
    Decoders = [?V1_ASN1_MOD, ?V2_ASN1_MOD, ?PREV3B_ASN1_MOD], 
 
62
    ?BIN_LIB:version_of(EC, Binary, dynamic, Decoders);
 
63
version_of([{version3,prev3a}|EC], Binary) ->
 
64
    Decoders = [?V1_ASN1_MOD, ?V2_ASN1_MOD, ?PREV3A_ASN1_MOD], 
 
65
    ?BIN_LIB:version_of(EC, Binary, dynamic, Decoders);
 
66
version_of([{version3,v3}|EC], Binary) ->
 
67
    Decoders = [?V1_ASN1_MOD, ?V2_ASN1_MOD, ?V3_ASN1_MOD], 
 
68
    ?BIN_LIB:version_of(EC, Binary, dynamic, Decoders);
 
69
version_of(EC, Binary) ->
 
70
    Decoders = [?V1_ASN1_MOD, ?V2_ASN1_MOD, ?V3_ASN1_MOD], 
 
71
    ?BIN_LIB:version_of(EC, Binary, dynamic, Decoders).
 
72
    
45
73
 
46
74
%%----------------------------------------------------------------------
47
75
%% Convert a 'MegacoMessage' record into a binary
49
77
%%----------------------------------------------------------------------
50
78
 
51
79
 
52
 
encode_message(EncodingConfig,  
 
80
encode_message(EC,  
53
81
               #'MegacoMessage'{mess = #'Message'{version = V}} = MegaMsg) ->
54
 
    encode_message(EncodingConfig, V, MegaMsg).
 
82
    encode_message(EC, V, MegaMsg).
55
83
 
56
 
encode_message(EncodingConfig, 1, MegaMsg) ->
57
 
    megaco_binary_encoder:encode_message(EncodingConfig, MegaMsg, 
58
 
                                         ?V1_ASN1_MOD, ?V1_TRANS_MOD,
59
 
                                         io_list);
60
 
encode_message(EncodingConfig, 2, MegaMsg) ->
61
 
    megaco_binary_encoder:encode_message(EncodingConfig, MegaMsg, 
62
 
                                         ?V2_ASN1_MOD, ?V2_TRANS_MOD,
63
 
                                         io_list).
 
84
encode_message([{version3,_}|EC], 1, MegaMsg) ->
 
85
    ?BIN_LIB:encode_message(EC, MegaMsg, ?V1_ASN1_MOD, ?V1_TRANS_MOD, io_list);
 
86
encode_message(EC, 1, MegaMsg) ->
 
87
    ?BIN_LIB:encode_message(EC, MegaMsg, ?V1_ASN1_MOD, ?V1_TRANS_MOD, io_list);
 
88
encode_message([{version3,_}|EC], 2, MegaMsg) ->
 
89
    ?BIN_LIB:encode_message(EC, MegaMsg, ?V2_ASN1_MOD, ?V2_TRANS_MOD, io_list);
 
90
encode_message(EC, 2, MegaMsg) ->
 
91
    ?BIN_LIB:encode_message(EC, MegaMsg, ?V2_ASN1_MOD, ?V2_TRANS_MOD, io_list);
 
92
encode_message([{version3,prev3b}|EC], 3, MegaMsg) ->
 
93
    ?BIN_LIB:encode_message(EC, MegaMsg, 
 
94
                            ?PREV3B_ASN1_MOD, ?PREV3B_TRANS_MOD, io_list);
 
95
encode_message([{version3,prev3a}|EC], 3, MegaMsg) ->
 
96
    ?BIN_LIB:encode_message(EC, MegaMsg, 
 
97
                            ?PREV3A_ASN1_MOD, ?PREV3A_TRANS_MOD, io_list);
 
98
encode_message([{version3,v3}|EC], 3, MegaMsg) ->
 
99
    ?BIN_LIB:encode_message(EC, MegaMsg, ?V3_ASN1_MOD, ?V3_TRANS_MOD, io_list);
 
100
encode_message(EC, 3, MegaMsg) ->
 
101
    ?BIN_LIB:encode_message(EC, MegaMsg, ?V3_ASN1_MOD, ?V3_TRANS_MOD, io_list).
64
102
 
65
103
 
66
104
%%----------------------------------------------------------------------
70
108
%%----------------------------------------------------------------------
71
109
 
72
110
encode_transaction(EC, 1, Trans) ->
73
 
    %%     megaco_binary_encoder:encode_transaction(EC, Trans,
 
111
    %%     ?BIN_LIB:encode_transaction(EC, Trans,
74
112
    %%                                       ?V1_ASN1_MOD, 
75
113
    %%                                       ?V1_TRANS_MOD,
76
114
    %%                                       io_list);
77
115
    {error, not_implemented};
78
116
encode_transaction(EC, 2, Trans) ->
79
 
    %%     megaco_binary_encoder:encode_transaction(EC, Trans, 
 
117
    %%     ?BIN_LIB:encode_transaction(EC, Trans, 
80
118
    %%                                       ?V2_ASN1_MOD, 
81
119
    %%                                       ?V2_TRANS_MOD,
82
120
    %%                                       io_list).
 
121
    {error, not_implemented};
 
122
encode_transaction(EC, 3, Trans) ->
 
123
    %%     ?BIN_LIB:encode_transaction(EC, Trans, 
 
124
    %%                                       ?V3_ASN1_MOD, 
 
125
    %%                                       ?V3_TRANS_MOD,
 
126
    %%                                       io_list).
83
127
    {error, not_implemented}.
84
128
 
85
129
 
88
132
%% Return {ok, DeepIoList} | {error, Reason}
89
133
%%----------------------------------------------------------------------
90
134
encode_action_requests(EC, 1, ActReqs) when list(ActReqs) ->
91
 
%     megaco_binary_encoder:encode_action_requests(EC, ActReqs,
92
 
%                                                ?V1_ASN1_MOD, 
93
 
%                                                ?V1_TRANS_MOD,
94
 
%                                                io_list);
 
135
    %%     ?BIN_LIB:encode_action_requests(EC, ActReqs,
 
136
    %%                                           ?V1_ASN1_MOD, 
 
137
    %%                                           ?V1_TRANS_MOD,
 
138
    %%                                           io_list);
95
139
    {error, not_implemented};
96
140
encode_action_requests(EC, 2, ActReqs) when list(ActReqs) ->
97
 
%     megaco_binary_encoder:encode_action_requests(EC, ActReqs,
98
 
%                                                ?V1_ASN1_MOD, 
99
 
%                                                ?V1_TRANS_MOD,
100
 
%                                                io_list).
 
141
    %%     ?BIN_LIB:encode_action_requests(EC, ActReqs,
 
142
    %%                                           ?V2_ASN1_MOD, 
 
143
    %%                                           ?V2_TRANS_MOD,
 
144
    %%                                           io_list).
 
145
    {error, not_implemented};
 
146
encode_action_requests(EC, 3, ActReqs) when list(ActReqs) ->
 
147
    %%     ?BIN_LIB:encode_action_requests(EC, ActReqs,
 
148
    %%                                           ?V3_ASN1_MOD, 
 
149
    %%                                           ?V3_TRANS_MOD,
 
150
    %%                                           io_list).
101
151
    {error, not_implemented}.
102
152
 
103
153
 
106
156
%% Return {ok, DeepIoList} | {error, Reason}
107
157
%%----------------------------------------------------------------------
108
158
encode_action_request(EC, 1, ActReq) ->
109
 
%     megaco_binary_encoder:encode_action_request(EC, ActReq,
110
 
%                                               ?V1_ASN1_MOD, 
111
 
%                                               ?V1_TRANS_MOD,
112
 
%                                               io_list);
 
159
    %%     ?BIN_LIB:encode_action_request(EC, ActReq,
 
160
    %%                                          ?V1_ASN1_MOD, 
 
161
    %%                                          ?V1_TRANS_MOD,
 
162
    %%                                          io_list);
113
163
    {error, not_implemented};
114
164
encode_action_request(EC, 2, ActReq) ->
115
 
%     megaco_binary_encoder:encode_action_request(EC, ActReq,
116
 
%                                               ?V1_ASN1_MOD, 
117
 
%                                               ?V1_TRANS_MOD,
118
 
%                                               io_list).
 
165
    %%     ?BIN_LIB:encode_action_request(EC, ActReq,
 
166
    %%                                          ?V2_ASN1_MOD, 
 
167
    %%                                          ?V2_TRANS_MOD,
 
168
    %%                                          io_list).
 
169
    {error, not_implemented};
 
170
encode_action_request(EC, 3, ActReq) ->
 
171
    %%     ?BIN_LIB:encode_action_request(EC, ActReq,
 
172
    %%                                          ?V3_ASN1_MOD, 
 
173
    %%                                          ?V3_TRANS_MOD,
 
174
    %%                                          io_list).
119
175
    {error, not_implemented}.
120
176
 
121
177
 
124
180
%% Return {ok, MegacoMessageRecord} | {error, Reason}
125
181
%%----------------------------------------------------------------------
126
182
 
127
 
version_of(EncodingConfig, Binary) ->
128
 
    AsnModV1 = ?V1_ASN1_MOD, 
129
 
    AsnModV2 = ?V2_ASN1_MOD, 
130
 
    megaco_binary_encoder:version_of(EncodingConfig, Binary, dynamic, 
131
 
                                     AsnModV1, AsnModV2).
132
 
    
133
183
%% Old decode function
134
 
decode_message(EncodingConfig, Binary) ->
135
 
    decode_message(EncodingConfig, 1, Binary).
 
184
decode_message(EC, Binary) ->
 
185
    decode_message(EC, 1, Binary).
136
186
 
137
187
%% Select from message
138
188
%% This does not work at the moment so, we use version 1 for this
139
 
decode_message(EncodingConfig, dynamic, Binary) ->
140
 
    AsnModV1 = ?V1_ASN1_MOD, 
141
 
    AsnModV2 = ?V2_ASN1_MOD, 
142
 
    megaco_binary_encoder:decode_message_dynamic(EncodingConfig, Binary, 
143
 
                                                 AsnModV1, AsnModV2, binary);
144
 
 
145
 
decode_message(EncodingConfig, 1, Binary) ->
146
 
    AsnMod   = ?V1_ASN1_MOD, 
147
 
    TransMod = ?V1_TRANS_MOD, 
148
 
    megaco_binary_encoder:decode_message(EncodingConfig, Binary, 
149
 
                                         AsnMod, TransMod, binary);
150
 
 
151
 
decode_message(EncodingConfig, 2, Binary) ->
152
 
    AsnMod   = ?V2_ASN1_MOD, 
153
 
    TransMod = ?V2_TRANS_MOD, 
154
 
    megaco_binary_encoder:decode_message(EncodingConfig, Binary, 
155
 
                                         AsnMod, TransMod, binary).
 
189
decode_message([{version3,prev3b}|EC], dynamic, Binary) ->
 
190
    Mods = [{?V1_ASN1_MOD,     ?V1_TRANS_MOD},
 
191
            {?V2_ASN1_MOD,     ?V2_TRANS_MOD}, 
 
192
            {?PREV3B_ASN1_MOD, ?PREV3B_TRANS_MOD}], 
 
193
    ?BIN_LIB:decode_message_dynamic(EC, Binary, Mods, binary);
 
194
decode_message([{version3,prev3a}|EC], dynamic, Binary) ->
 
195
    Mods = [{?V1_ASN1_MOD,     ?V1_TRANS_MOD},
 
196
            {?V2_ASN1_MOD,     ?V2_TRANS_MOD}, 
 
197
            {?PREV3A_ASN1_MOD, ?PREV3A_TRANS_MOD}], 
 
198
    ?BIN_LIB:decode_message_dynamic(EC, Binary, Mods, binary);
 
199
decode_message([{version3,v3}|EC], dynamic, Binary) ->
 
200
    Mods = [{?V1_ASN1_MOD, ?V1_TRANS_MOD},
 
201
            {?V2_ASN1_MOD, ?V2_TRANS_MOD}, 
 
202
            {?V3_ASN1_MOD, ?V3_TRANS_MOD}], 
 
203
    ?BIN_LIB:decode_message_dynamic(EC, Binary, Mods, binary);
 
204
decode_message(EC, dynamic, Binary) ->
 
205
    Mods = [{?V1_ASN1_MOD, ?V1_TRANS_MOD},
 
206
            {?V2_ASN1_MOD, ?V2_TRANS_MOD}, 
 
207
            {?V3_ASN1_MOD, ?V3_TRANS_MOD}], 
 
208
    ?BIN_LIB:decode_message_dynamic(EC, Binary, Mods, binary);
 
209
 
 
210
decode_message([{version3,_}|EC], 1, Binary) ->
 
211
    AsnMod   = ?V1_ASN1_MOD, 
 
212
    TransMod = ?V1_TRANS_MOD, 
 
213
    ?BIN_LIB:decode_message(EC, Binary, AsnMod, TransMod, binary);
 
214
decode_message(EC, 1, Binary) ->
 
215
    AsnMod   = ?V1_ASN1_MOD, 
 
216
    TransMod = ?V1_TRANS_MOD, 
 
217
    ?BIN_LIB:decode_message(EC, Binary, AsnMod, TransMod, binary);
 
218
 
 
219
decode_message([{version3,_}|EC], 2, Binary) ->
 
220
    AsnMod   = ?V2_ASN1_MOD, 
 
221
    TransMod = ?V2_TRANS_MOD, 
 
222
    ?BIN_LIB:decode_message(EC, Binary, AsnMod, TransMod, binary);
 
223
decode_message(EC, 2, Binary) ->
 
224
    AsnMod   = ?V2_ASN1_MOD, 
 
225
    TransMod = ?V2_TRANS_MOD, 
 
226
    ?BIN_LIB:decode_message(EC, Binary, AsnMod, TransMod, binary);
 
227
 
 
228
decode_message([{version3,prev3b}|EC], 3, Binary) ->
 
229
    AsnMod   = ?PREV3B_ASN1_MOD, 
 
230
    TransMod = ?PREV3B_TRANS_MOD, 
 
231
    ?BIN_LIB:decode_message(EC, Binary, AsnMod, TransMod, binary);
 
232
decode_message([{version3,prev3a}|EC], 3, Binary) ->
 
233
    AsnMod   = ?PREV3A_ASN1_MOD, 
 
234
    TransMod = ?PREV3A_TRANS_MOD, 
 
235
    ?BIN_LIB:decode_message(EC, Binary, AsnMod, TransMod, binary);
 
236
decode_message([{version3,v3}|EC], 3, Binary) ->
 
237
    AsnMod   = ?V3_ASN1_MOD, 
 
238
    TransMod = ?V3_TRANS_MOD, 
 
239
    ?BIN_LIB:decode_message(EC, Binary, AsnMod, TransMod, binary);
 
240
decode_message(EC, 3, Binary) ->
 
241
    AsnMod   = ?V3_ASN1_MOD, 
 
242
    TransMod = ?V3_TRANS_MOD, 
 
243
    ?BIN_LIB:decode_message(EC, Binary, AsnMod, TransMod, binary);
 
244
 
 
245
 
 
246
decode_mini_message([{version3,prev3b}|EC], dynamic, Bin) ->
 
247
    Mods = [?V1_ASN1_MOD, ?V2_ASN1_MOD, ?PREV3B_ASN1_MOD], 
 
248
    ?BIN_LIB:decode_mini_message_dynamic(EC, Bin, Mods, binary);
 
249
decode_mini_message([{version3,prev3a}|EC], dynamic, Bin) ->
 
250
    Mods = [?V1_ASN1_MOD, ?V2_ASN1_MOD, ?PREV3A_ASN1_MOD], 
 
251
    ?BIN_LIB:decode_mini_message_dynamic(EC, Bin, Mods, binary);
 
252
decode_mini_message([{version3,v3}|EC], dynamic, Bin) ->
 
253
    Mods = [?V1_ASN1_MOD, ?V2_ASN1_MOD, ?V3_ASN1_MOD], 
 
254
    ?BIN_LIB:decode_mini_message_dynamic(EC, Bin, Mods, binary);
 
255
decode_mini_message(EC, dynamic, Bin) ->
 
256
    Mods = [?V1_ASN1_MOD, ?V2_ASN1_MOD, ?V3_ASN1_MOD], 
 
257
    ?BIN_LIB:decode_mini_message_dynamic(EC, Bin, Mods, binary);
 
258
 
 
259
decode_mini_message([{version3,_}|EC], 1, Bin) ->
 
260
    AsnMod = ?V1_ASN1_MOD, 
 
261
    ?BIN_LIB:decode_mini_message(EC, Bin, AsnMod, binary);
 
262
decode_mini_message(EC, 1, Bin) ->
 
263
    AsnMod = ?V1_ASN1_MOD, 
 
264
    ?BIN_LIB:decode_mini_message(EC, Bin, AsnMod, binary);
 
265
decode_mini_message([{version3,_}|EC], 2, Bin) ->
 
266
    AsnMod = ?V2_ASN1_MOD, 
 
267
    ?BIN_LIB:decode_mini_message(EC, Bin, AsnMod, binary);
 
268
decode_mini_message(EC, 2, Bin) ->
 
269
    AsnMod = ?V2_ASN1_MOD, 
 
270
    ?BIN_LIB:decode_mini_message(EC, Bin, AsnMod, binary);
 
271
decode_mini_message([{version3,prev3b}|EC], 3, Bin) ->
 
272
    AsnMod = ?PREV3B_ASN1_MOD, 
 
273
    ?BIN_LIB:decode_mini_message(EC, Bin, AsnMod, binary);
 
274
decode_mini_message([{version3,prev3a}|EC], 3, Bin) ->
 
275
    AsnMod = ?PREV3A_ASN1_MOD, 
 
276
    ?BIN_LIB:decode_mini_message(EC, Bin, AsnMod, binary);
 
277
decode_mini_message([{version3,v3}|EC], 3, Bin) ->
 
278
    AsnMod = ?V3_ASN1_MOD, 
 
279
    ?BIN_LIB:decode_mini_message(EC, Bin, AsnMod, binary);
 
280
decode_mini_message(EC, 3, Bin) ->
 
281
    AsnMod = ?V3_ASN1_MOD, 
 
282
    ?BIN_LIB:decode_mini_message(EC, Bin, AsnMod, binary).