equal
deleted
inserted
replaced
266 iProvider->SetNotify(this); |
266 iProvider->SetNotify(this); |
267 |
267 |
268 return this; |
268 return this; |
269 } |
269 } |
270 |
270 |
271 void CTransportFlowShim::HostResolverSpecificUnbind() |
|
272 { |
|
273 // Can't have both HR & SAP |
|
274 __ASSERT_DEBUG(!iProvider, User::Panic(KSpecAssert_ESockSSocksspshm, 9)); |
|
275 |
|
276 if(iSubConnectionProvider.IsOpen()) |
|
277 { |
|
278 iSessionControlNotify = NULL; |
|
279 iSessionDataNotify = NULL; |
|
280 iHostResolverNotify = NULL; |
|
281 if (!Idle()) |
|
282 { |
|
283 SetIdle(); |
|
284 ProcessDCIdleState(); |
|
285 } |
|
286 } |
|
287 else |
|
288 { |
|
289 DeleteThisFlow(); |
|
290 } |
|
291 } |
|
292 |
|
293 void CTransportFlowShim::Unbind() |
271 void CTransportFlowShim::Unbind() |
294 { |
272 { |
295 LOG( ESockLog::Printf(_L8("CTransportFlowShim %08x:\tUnbind()"), this) ); |
273 LOG( ESockLog::Printf(_L8("CTransportFlowShim %08x:\tUnbind()"), this) ); |
296 |
274 |
297 // Infant mortality case in which binding never completed, |
275 // Infant mortality case in which binding never completed, |
299 { |
277 { |
300 delete this; |
278 delete this; |
301 return; |
279 return; |
302 } |
280 } |
303 |
281 |
304 // Legacy support for host resolvers involves a separate north bound MUpperControl interface |
282 // Legacy support for host resolvers |
305 if(iHostResolverNotify) |
283 if(iHostResolverNotify) |
306 { |
284 { |
307 HostResolverSpecificUnbind(); |
285 __ASSERT_DEBUG(!iProvider, User::Panic(KSpecAssert_ESockSSocksspshm, 9)); // can't have both HR & SAP |
308 } |
286 |
309 else |
287 LOG( ESockLog::Printf(_L8("CTransportFlowShim %08x:\tUnbind(): iBearerExpected %d"), this, BearerExpected()) ); |
310 { |
288 if (!BearerExpected()) |
311 if (iProvider) |
289 { |
312 { |
290 delete this; |
313 iProvider->SetNotify(NULL); |
|
314 |
|
315 if (!Detaching()) |
|
316 { |
|
317 delete iProvider; |
|
318 iProvider = NULL; |
|
319 } |
|
320 } |
291 } |
|
292 else |
|
293 { |
|
294 SetDeleteUponBearerReception(); |
|
295 iHostResolverNotify = NULL; |
|
296 } |
|
297 return; |
|
298 } |
|
299 |
|
300 if (iProvider) |
|
301 { |
|
302 iProvider->SetNotify(NULL); |
|
303 |
|
304 if (!Detaching()) |
|
305 { |
|
306 delete iProvider; |
|
307 iProvider = NULL; |
|
308 } |
|
309 } |
321 |
310 |
322 #ifdef SYMBIAN_NETWORKING_UPS |
311 #ifdef SYMBIAN_NETWORKING_UPS |
323 // Hook for derived classes to do cleanup before unbind occurs |
312 // Hook for derived classes to do cleanup before unbind occurs |
324 PreUnbind(); |
313 PreUnbind(); |
325 #endif |
314 #endif |
326 CNetworkFlow::Unbind(); |
315 |
327 } |
316 CNetworkFlow::Unbind(); |
328 } |
317 } |
329 |
318 |
330 ESock::CSubConnectionFlowBase& CTransportFlowShim::CloneFlowL() |
319 ESock::CSubConnectionFlowBase& CTransportFlowShim::CloneFlowL() |
331 { |
320 { |
332 __ASSERT_DEBUG(iProtocolIntf, User::Panic(KSpecAssert_ESockSSocksspshm, 10)); |
321 __ASSERT_DEBUG(iProtocolIntf, User::Panic(KSpecAssert_ESockSSocksspshm, 10)); |