|
1 /* |
|
2 * Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html." |
|
8 * Initial Contributors: |
|
9 * Nokia Corporation - initial contribution. |
|
10 * Contributors: |
|
11 * |
|
12 * Description: |
|
13 * MSRP Implementation |
|
14 * |
|
15 */ |
|
16 |
|
17 // CLASS HEADER |
|
18 #include "CMsrpMessageIdHeader.h" |
|
19 |
|
20 // INTERNAL INCLUDES |
|
21 #include "msrpstrings.h" |
|
22 #include "msrpstrconsts.h" |
|
23 |
|
24 // ----------------------------------------------------------------------------- |
|
25 // CMSRPMessageIdHeader::NewLC |
|
26 // ----------------------------------------------------------------------------- |
|
27 // |
|
28 EXPORT_C CMSRPMessageIdHeader* CMSRPMessageIdHeader::NewLC( |
|
29 const TDesC8& aMessageId ) |
|
30 { |
|
31 CMSRPMessageIdHeader* self = new (ELeave) CMSRPMessageIdHeader(); |
|
32 CleanupStack::PushL( self ); |
|
33 self->ConstructL( aMessageId ); |
|
34 return self; |
|
35 } |
|
36 |
|
37 // ----------------------------------------------------------------------------- |
|
38 // CMSRPMessageIdHeader::NewL |
|
39 // ----------------------------------------------------------------------------- |
|
40 // |
|
41 EXPORT_C CMSRPMessageIdHeader* CMSRPMessageIdHeader::NewL( |
|
42 const TDesC8& aMessageId ) |
|
43 { |
|
44 CMSRPMessageIdHeader* self = CMSRPMessageIdHeader::NewLC( aMessageId ); |
|
45 CleanupStack::Pop( self ); |
|
46 return self; |
|
47 } |
|
48 |
|
49 // ----------------------------------------------------------------------------- |
|
50 // CMSRPMessageIdHeader::NewL |
|
51 // ----------------------------------------------------------------------------- |
|
52 // |
|
53 CMSRPMessageIdHeader* CMSRPMessageIdHeader::NewL( ) |
|
54 { |
|
55 CMSRPMessageIdHeader* self = new (ELeave) CMSRPMessageIdHeader(); |
|
56 CleanupStack::PushL( self ); |
|
57 self->ConstructL( ); |
|
58 CleanupStack::Pop( self ); |
|
59 return self; |
|
60 } |
|
61 |
|
62 // ----------------------------------------------------------------------------- |
|
63 // CMSRPMessageIdHeader::CMSRPMessageIdHeader |
|
64 // ----------------------------------------------------------------------------- |
|
65 // |
|
66 CMSRPMessageIdHeader::CMSRPMessageIdHeader() |
|
67 { |
|
68 } |
|
69 |
|
70 // ----------------------------------------------------------------------------- |
|
71 // CMSRPMessageIdHeader::ConstructL |
|
72 // ----------------------------------------------------------------------------- |
|
73 // |
|
74 void CMSRPMessageIdHeader::ConstructL( |
|
75 const TDesC8& aMessageId ) |
|
76 { |
|
77 MSRPStrings::OpenL(); |
|
78 // set the ID |
|
79 iIdValue = HBufC8::NewL( aMessageId.Length() ); |
|
80 *iIdValue = aMessageId; |
|
81 } |
|
82 |
|
83 // ----------------------------------------------------------------------------- |
|
84 // CMSRPMessageIdHeader::ConstructL |
|
85 // ----------------------------------------------------------------------------- |
|
86 // |
|
87 void CMSRPMessageIdHeader::ConstructL( ) |
|
88 { |
|
89 MSRPStrings::OpenL(); |
|
90 } |
|
91 |
|
92 // ----------------------------------------------------------------------------- |
|
93 // CMSRPMessageIdHeader::~CMSRPMessageIdHeader |
|
94 // ----------------------------------------------------------------------------- |
|
95 // |
|
96 EXPORT_C CMSRPMessageIdHeader::~CMSRPMessageIdHeader() |
|
97 { |
|
98 MSRPStrings::Close(); |
|
99 delete iIdValue; |
|
100 } |
|
101 |
|
102 // ----------------------------------------------------------------------------- |
|
103 // CMSRPMessageIdHeader::InternalizeValueL |
|
104 // ----------------------------------------------------------------------------- |
|
105 // |
|
106 EXPORT_C CMSRPMessageIdHeader* CMSRPMessageIdHeader::InternalizeValueL( |
|
107 RReadStream& aReadStream ) |
|
108 { |
|
109 CMSRPMessageIdHeader* self = CMSRPMessageIdHeader::NewL( ); |
|
110 CleanupStack::PushL( self ); |
|
111 self->DoInternalizeValueL( aReadStream ); |
|
112 CleanupStack::Pop( self ); |
|
113 return self; |
|
114 } |
|
115 |
|
116 // ----------------------------------------------------------------------------- |
|
117 // CMSRPMessageIdHeader::DoInternalizeValueL |
|
118 // ----------------------------------------------------------------------------- |
|
119 // |
|
120 void CMSRPMessageIdHeader::DoInternalizeValueL( RReadStream& aReadStream ) |
|
121 { |
|
122 // value must be in stringpool |
|
123 TUint32 valueLength = aReadStream.ReadUint32L(); |
|
124 if( valueLength > 0 ) |
|
125 { |
|
126 delete iIdValue; |
|
127 iIdValue = NULL; |
|
128 iIdValue = HBufC8::NewL( valueLength ); |
|
129 TPtr8 tempValue( iIdValue->Des() ); |
|
130 aReadStream.ReadL( tempValue, valueLength ); |
|
131 } |
|
132 } |
|
133 |
|
134 // ----------------------------------------------------------------------------- |
|
135 // CMSRPMessageIdHeader::ExternalizeValueL |
|
136 // From CSIPHeaderBase: |
|
137 // ----------------------------------------------------------------------------- |
|
138 // |
|
139 EXPORT_C void CMSRPMessageIdHeader::ExternalizeValueL( RWriteStream& aWriteStream ) const |
|
140 { |
|
141 aWriteStream.WriteInt32L( iIdValue->Length() ); |
|
142 aWriteStream.WriteL( *iIdValue ); |
|
143 } |
|
144 |
|
145 // ----------------------------------------------------------------------------- |
|
146 // CMSRPMessageIdHeader::Name |
|
147 // ----------------------------------------------------------------------------- |
|
148 // |
|
149 RStringF CMSRPMessageIdHeader::Name() const |
|
150 { |
|
151 return MSRPStrings::StringF( MSRPStrConsts::EMessageId ); |
|
152 } |
|
153 |
|
154 // ----------------------------------------------------------------------------- |
|
155 // CMSRPMessageIdHeader::ToTextValueL |
|
156 // ----------------------------------------------------------------------------- |
|
157 // |
|
158 HBufC8* CMSRPMessageIdHeader::ToTextValueL() const |
|
159 { |
|
160 if( iIdValue ) |
|
161 { |
|
162 return iIdValue->Des().AllocL(); |
|
163 } |
|
164 return NULL; |
|
165 } |
|
166 |
|
167 // End of File |