67 iAuthorizationToken = aAuthToken; |
67 iAuthorizationToken = aAuthToken; |
68 } |
68 } |
69 |
69 |
70 EXPORT_C CSblpParameters::TFlowIdentifier& CSblpParameters::GetFlowId(TInt aIndex) |
70 EXPORT_C CSblpParameters::TFlowIdentifier& CSblpParameters::GetFlowId(TInt aIndex) |
71 { |
71 { |
72 __ASSERT_DEBUG(aIndex<iFlowIds.Count(),User::Panic(_L("Sblp"),KErrArgument)); |
72 __ASSERT_DEBUG(aIndex<iFlowIds.Count(),User::Panic(_L("CSblpParameters::GetFlowId"),KErrArgument)); |
73 return iFlowIds[aIndex]; |
73 return iFlowIds[aIndex]; |
74 } |
74 } |
75 |
75 |
76 EXPORT_C void CSblpParameters::SetFlowIds(const RArray<TFlowIdentifier> &aFlowIds) |
76 EXPORT_C void CSblpParameters::SetFlowIds(const RArray<TFlowIdentifier> &aFlowIds) |
77 { |
77 { |
|
78 //in case of low memory the function might not set all the ids |
78 iFlowIds.Reset(); |
79 iFlowIds.Reset(); |
79 TInt i; |
80 TInt i; |
80 for(i=0; i<aFlowIds.Count();i++) |
81 for(i=0; i<aFlowIds.Count();i++) |
81 { |
82 { |
82 this->iFlowIds.Append(aFlowIds[i]); |
83 TInt errorCode = this->iFlowIds.Append(aFlowIds[i]); |
|
84 if (errorCode != KErrNone) |
|
85 { |
|
86 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CSBLPPARAMETERS_SETFLOWID, "Not Enough Memory"); |
|
87 } |
83 } |
88 } |
84 } |
89 } |
85 |
90 |
86 EXPORT_C TInt CSblpParameters::GetFlowIds(RArray<TFlowIdentifier>& aFlowIds) |
91 EXPORT_C TInt CSblpParameters::GetFlowIds(RArray<TFlowIdentifier>& aFlowIds) |
87 { |
92 { |
|
93 //in case of low memory the function might not get all the ids and returns an error code |
88 aFlowIds.Reset(); |
94 aFlowIds.Reset(); |
89 TInt i; |
95 TInt i; |
|
96 TInt errorCode = KErrNone; |
90 for(i=0; i<iFlowIds.Count();i++) |
97 for(i=0; i<iFlowIds.Count();i++) |
91 { |
98 { |
92 aFlowIds.Append(this->iFlowIds[i]); |
99 errorCode = aFlowIds.Append(this->iFlowIds[i]); |
|
100 if (errorCode != KErrNone) |
|
101 { |
|
102 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CSBLPPARAMETERS_GETFLOWID, "Not Enough Memory"); |
|
103 return errorCode; |
|
104 } |
93 } |
105 } |
94 return KErrNone; |
106 return KErrNone; |
95 } |
107 } |
96 |
108 |
97 EXPORT_C TInt CSblpParameters::NrOfFlowIds() |
109 EXPORT_C TInt CSblpParameters::NrOfFlowIds() |
166 header.pfqos_configure_len = (TUint16)((byte_len + 7) / 8); |
178 header.pfqos_configure_len = (TUint16)((byte_len + 7) / 8); |
167 header.pfqos_ext_type = EPfqosExtExtension; |
179 header.pfqos_ext_type = EPfqosExtExtension; |
168 header.reserved = 0; |
180 header.reserved = 0; |
169 header.protocol_id = 0; |
181 header.protocol_id = 0; |
170 bufPtr.Append((TUint8*)&header, sizeof(pfqos_configure)); |
182 bufPtr.Append((TUint8*)&header, sizeof(pfqos_configure)); |
171 |
183 |
172 pfqos_extension extensionType; |
184 pfqos_extension extensionType; |
173 extensionType.pfqos_ext_len = 0; |
185 extensionType.pfqos_ext_len = 0; |
174 extensionType.pfqos_ext_type = EPfqosExtExtension; |
186 extensionType.pfqos_ext_type = EPfqosExtExtension; |
175 extensionType.pfqos_extension_type = KPfqosExtensionSBLP; |
187 extensionType.pfqos_extension_type = KPfqosExtensionSBLP; |
176 bufPtr.Append((TUint8*)&extensionType, sizeof(pfqos_extension)); |
188 bufPtr.Append((TUint8*)&extensionType, sizeof(pfqos_extension)); |
185 TAuthorizationToken authToken; |
197 TAuthorizationToken authToken; |
186 pfqos_configblock stringBlock; |
198 pfqos_configblock stringBlock; |
187 iSblp->GetMAT(authToken); |
199 iSblp->GetMAT(authToken); |
188 SetStringBlockHeader(stringBlock,authToken,KDescSblpMediaAuthorizationToken); |
200 SetStringBlockHeader(stringBlock,authToken,KDescSblpMediaAuthorizationToken); |
189 bufPtr.Append((TUint8*)&stringBlock, sizeof(pfqos_configblock)); |
201 bufPtr.Append((TUint8*)&stringBlock, sizeof(pfqos_configblock)); |
|
202 |
190 // put the string now |
203 // put the string now |
191 authToken.ZeroTerminate(); |
204 authToken.ZeroTerminate(); |
192 bufPtr.Append((TUint8*)authToken.Ptr(),KAuthorizationTokenAdjustedStringLength); |
205 bufPtr.Append((TUint8*)authToken.Ptr(),KAuthorizationTokenAdjustedStringLength); |
193 |
206 |
194 |
|
195 // Flowids |
207 // Flowids |
196 pfqos_configblock_int ext; |
208 pfqos_configblock_int ext; |
197 TInt i; |
209 TInt i; |
198 for(i=0; i<iSblp->NrOfFlowIds();i++) |
210 for(i=0; i<iSblp->NrOfFlowIds();i++) |
199 { |
211 { |
200 CSblpParameters::TFlowIdentifier& flowId = iSblp->GetFlowId(i); |
212 CSblpParameters::TFlowIdentifier& flowId = iSblp->GetFlowId(i); |
201 SetIntValue(ext,flowId.iMediaComponentNumber,KDescSblpMediaComponentNumber); |
213 SetIntValue(ext,flowId.iMediaComponentNumber,KDescSblpMediaComponentNumber); |
202 bufPtr.Append((TUint8*)&ext, sizeof(pfqos_configblock_int)); |
214 bufPtr.Append((TUint8*)&ext, sizeof(pfqos_configblock_int)); |
|
215 |
203 SetIntValue(ext,flowId.iIPFlowNumber,KDescSblpIPFlowNumber); |
216 SetIntValue(ext,flowId.iIPFlowNumber,KDescSblpIPFlowNumber); |
204 bufPtr.Append((TUint8*)&ext, sizeof(pfqos_configblock_int)); |
217 bufPtr.Append((TUint8*)&ext, sizeof(pfqos_configblock_int)); |
205 } |
218 } |
206 |
219 |
207 bufPtr.AppendFill(0, header.pfqos_configure_len * 8 - byte_len); |
220 bufPtr.AppendFill(0, header.pfqos_configure_len * 8 - byte_len); |
|
221 |
208 return *iData; |
222 return *iData; |
209 } |
223 } |
210 |
224 |
211 EXPORT_C TInt CSblpPolicy::ParseMessage(const TDesC8& /*aData*/) |
225 EXPORT_C TInt CSblpPolicy::ParseMessage(const TDesC8& /*aData*/) |
212 { |
226 { |
235 |
249 |
236 |
250 |
237 // following code is to create logs |
251 // following code is to create logs |
238 TAuthorizationToken authToken; |
252 TAuthorizationToken authToken; |
239 iSblp->GetMAT (authToken); |
253 iSblp->GetMAT (authToken); |
240 RArray<CSblpParameters::TFlowIdentifier> flowIds; |
254 RArray<CSblpParameters::TFlowIdentifier> flowIds; |
241 iSblp->GetFlowIds(flowIds); |
255 iSblp->GetFlowIds(flowIds); |
|
256 // in case of low memory GetFlowIds might return an error and flowIds might not have all the ids, but we still try to log as much as we can |
242 TBuf<KAuthorizationTokenSize> label; |
257 TBuf<KAuthorizationTokenSize> label; |
243 label.Copy(authToken); |
258 label.Copy(authToken); |
244 |
259 |
245 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CSBLPPOLICY_SETSBLPPARAMETERS_1, "<------------------------------------------------\n"); |
260 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CSBLPPOLICY_SETSBLPPARAMETERS_1, "<------------------------------------------------\n"); |
246 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CSBLPPOLICY_SETSBLPPARAMETERS_2, "CSblpPolicy::SetSblpParameters"); |
261 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CSBLPPOLICY_SETSBLPPARAMETERS_2, "CSblpPolicy::SetSblpParameters"); |