blob: b1dcd54d81494f5cf7bf8a3212fff71ba5113650 [file] [log] [blame]
anjana_sreekumar@infosys.com991c2062020-01-08 11:42:57 +05301[% IF ieData.ieCardinality == 1 -%]
2
3 // Encode the Ie Header
4 header.ieType = [% ieData.ieType %]IeType;
5 header.instance = [% ieData.instance %];
6 header.length = 0; // We will encode the IE first and then update the length
7 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
8 startIndex = buffer.getCurrentIndex();
9 [% ieData.ieType %]Ie [% ieData.ieLocalVar %]=
10 dynamic_cast<
11 [% ieData.ieType %]Ie&>(GtpV2IeFactory::getInstance().getIeObject([% ieData.ieType %]IeType));
12[% IF ieData.grouped == 'Yes'-%]
13 [% ieData.grpIeInstClassName %] groupedIeInstance =
14 dynamic_cast<
15 [% ieData.grpIeInstClassName %]&>([% ieData.ieLocalVar %].getGroupedIe(msgType, [% ieData.instance %]));
16 rc = groupedIeInstance.encode[% ieData.grpIeInstClassName %](buffer, data.[% ieData.ieVarName %]);
17[% ELSE -%]
18 rc = [% ieData.ieLocalVar %].encode[% ieData.ieType %]Ie(buffer, data.[% ieData.ieVarName %]);
19[% END -%]
20 endIndex = buffer.getCurrentIndex();
21 length = endIndex - startIndex;
22
23 // encode the length value now
24 buffer.goToIndex(startIndex - 3);
25 buffer.writeUint16(length, false);
26 buffer.goToIndex(endIndex);
27[% ELSE -%]
28 // First validate if the applicatoin provided more than the expected cardinality
29 if (data.[% ieData.ieVarName %]Count > [% ieData.ieCardinality %])
30 {
31 errorStream.add((char *)"Number of entries of [% ieData.ieVarName %] exceeded\n");
32 errorStream.add((char *)"Expected count: [% ieData.ieCardinality %] Received count: ");
33 errorStream.add((char *)"data.[% ieData.ieVarName %]Count");
34 errorStream.endOfLine();
35 return false;
36 }
37 for (Uint8 i = 0; i < data.[% ieData.ieVarName %]Count; i++)
38 {
39 // Encode the Ie Header
40 header.ieType = [% ieData.ieType %]IeType;
41 header.instance = [% ieData.instance %];
42 header.length = 0; // We will encode the IE first and then update the length
43 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
44 startIndex = buffer.getCurrentIndex();
45 [% ieData.ieType %]Ie [% ieData.ieLocalVar %]=
46 dynamic_cast<
47 [% ieData.ieType %]Ie&>(GtpV2IeFactory::getInstance().
48 getIeObject([% ieData.ieType %]IeType));
49[% IF ieData.grouped == 'Yes'-%]
50 [% ieData.grpIeInstClassName %] groupedIeInstance = dynamic_cast<[% ieData.grpIeInstClassName %]&>([% ieData.ieLocalVar %].getGroupedIe(msgType, [% ieData.instance %]));
51 rc = groupedIeInstance.encode[% ieData.grpIeInstClassName %](buffer, data.[% ieData.ieVarName %][i]);
52[% ELSE -%]
53 rc = [% ieData.ieLocalVar %].encode[% ieData.ieType %]Ie(buffer, data.[% ieData.ieVarName %][i]);
54[% END -%]
55 endIndex = buffer.getCurrentIndex();
56 length = endIndex - startIndex;
57
58 // encode the length value now
59 buffer.goToIndex(startIndex - 3);
60 buffer.writeUint16(length, false);
61 buffer.goToIndex(endIndex);
62 }
63[% END -%]