linklayercontrol/networkinterfacemgr/agentprcore/src/tunnelagentcpr.cpp
changeset 37 052078dda061
parent 0 af10295192d8
child 55 5eca823bbf17
--- a/linklayercontrol/networkinterfacemgr/agentprcore/src/tunnelagentcpr.cpp	Mon May 03 13:58:16 2010 +0300
+++ b/linklayercontrol/networkinterfacemgr/agentprcore/src/tunnelagentcpr.cpp	Tue Jun 29 19:20:22 2010 +0530
@@ -66,6 +66,15 @@
 NODEACTIVITY_END()
 }
 
+namespace TunnelGoneDownActivity
+{
+DECLARE_DEFINE_NODEACTIVITY(ECFActivityGoneDown, TunnelGoneDown, TCFControlClient::TGoneDown)
+    // Our Service Provider has gone down unexpectedly (we haven't issued a TStop)
+    FIRST_NODEACTIVITY_ENTRY(CoreNetStates::TAwaitingGoneDown, MeshMachine::TNoTag)
+    LAST_NODEACTIVITY_ENTRY(KNoTag, MeshMachine::TDoNothing)
+NODEACTIVITY_END()
+}
+
 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 namespace TunnelAgentCprNotificationActivity
 {
@@ -78,6 +87,7 @@
 {
 DECLARE_DEFINE_ACTIVITY_MAP(TunnelAgentCprActivities)
 	ACTIVITY_MAP_ENTRY(TunnelAgentCprStartActivity, TunnelCprStart)
+      ACTIVITY_MAP_ENTRY(TunnelGoneDownActivity, TunnelGoneDown)
 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 	ACTIVITY_MAP_ENTRY(TunnelAgentCprNotificationActivity, TunnelAgentCprNotification)
 #endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
@@ -101,7 +111,8 @@
 
 
 CTunnelAgentConnectionProvider::CTunnelAgentConnectionProvider(CConnectionProviderFactoryBase& aFactory)
-   : CAgentConnectionProvider(aFactory, TunnelAgentCprStates::TunnelAgentCprActivities::Self())
+   : CAgentConnectionProvider(aFactory, TunnelAgentCprStates::TunnelAgentCprActivities::Self()),
+     TIfStaticFetcherNearestInHierarchy(this)
 	{
 	LOG_NODE_CREATE(KTunnelAgentCprTag, CTunnelAgentConnectionProvider);
 	}
@@ -115,5 +126,35 @@
 	LOG_NODE_DESTROY(KTunnelAgentCprTag, CTunnelAgentConnectionProvider);
 	}
 
+//
+// MPlatSecApiExt
+//
 
+void CTunnelAgentConnectionProvider::ReturnInterfacePtrL(MPlatsecApiExt*& aInterface)
+    {
+    aInterface = this;
+    }
 
+TInt CTunnelAgentConnectionProvider::SecureId(TSecureId& /*aResult*/) const
+	{
+	return KErrNotSupported;
+	}
+
+TInt CTunnelAgentConnectionProvider::VendorId(TVendorId& /*aResult*/) const
+	{
+	return KErrNotSupported;
+	}
+
+TBool CTunnelAgentConnectionProvider::HasCapability(const TCapability /*aCapability*/) const
+	{
+	return KErrNotSupported;
+	}
+
+TInt CTunnelAgentConnectionProvider::CheckPolicy(const TSecurityPolicy& /*aPolicy*/) const
+	{
+	// This is the whole reason that we need to implement MPlatSecApiExt in this node at all.  When TunnelAgentCpr issues
+	// a TStop towards IpCpr, IpCpr requires the sending node (normally ESockSvr but TunnelAgentCpr in this case)
+	// to implement MPlatSecApiExt through which IpCpr can check platsec capabilities (IpCprStates::TCheckStopCapabilities).
+	// If TunnelAgentCpr does not impement MPlatSecApiExt, then IpCpr will error the stop request with KErrInterfaceNotSupported.
+	return KErrNone;
+	}