datacommsserver/esockserver/inc/ss_protcfgldr.h
changeset 0 dfb7c4ff071f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/inc/ss_protcfgldr.h	Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,117 @@
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @internalTechnology
+*/
+#include <commsdattypesv1_1.h> // CommsDat
+#include <ecom/ecom.h>
+#include <comms-infras/ss_metaconnprov.h>
+
+#ifndef SYMBIAN_SS_PROTCFGLDR_H
+#define SYMBIAN_SS_PROTCFGLDR_H
+
+namespace ESock {
+
+const TUid KCProtocolConfigLoaderUid = {0x10282300};
+
+/*
+  @internalTechnology
+ */
+class CProtocolConfigLoader : public CBase
+    {
+public:
+    /*
+      Find protocol loader uid for protocol in commsdat load it, If not found load dummy loader
+    */
+    IMPORT_C static CProtocolConfigLoader* NewL(CommsDat::CMDBSession* aDbs, const TUid aProtCfgLdrUid);
+    IMPORT_C static CProtocolConfigLoader* NewL(const TUid aProtCfgLdrUid);
+    
+    IMPORT_C virtual ~CProtocolConfigLoader();
+
+    IMPORT_C static void ListImplementationsL(RImplInfoPtrArray& aImplInfoArray);
+	
+    /*
+      Load the config for protocol into provisioning object and append object as extension to
+      Access Point Config.
+     */
+    virtual void LoadConfigL(RMetaExtensionContainer &aApc, const TUid& aUid, const TUint aId) = 0;
+    
+protected:
+    inline void SetDatabaseSession(CommsDat::CMDBSession* aDbs) { iDbs = aDbs; }
+    inline CommsDat::CMDBSession* DatabaseSession() const { return iDbs; }
+    inline void SetProtocolUid(const TUid aUid) { iProtocolUid = aUid; }
+    inline TUid ProtocolUid() const { return iProtocolUid; }
+    
+private:
+    TUid iDtor_ID_Key;
+    CommsDat::CMDBSession* iDbs;
+    TUid iProtocolUid;
+    };
+
+
+/*
+  @internalTechnology
+*/
+template<typename ConfigClass>
+class CGenericProtoCfgLoader: public CProtocolConfigLoader
+	{
+  public:
+	static CGenericProtoCfgLoader* NewL();
+
+	virtual void LoadConfigL(RMetaExtensionContainer& aApc, const TUid& aUid, const TUint aId);
+
+  protected:
+	CGenericProtoCfgLoader();
+	};
+
+
+template<typename ConfigClass>
+inline CGenericProtoCfgLoader<ConfigClass>::CGenericProtoCfgLoader()
+	{
+	}
+
+
+template<typename ConfigClass>
+CGenericProtoCfgLoader<ConfigClass>* CGenericProtoCfgLoader<ConfigClass>::NewL()
+	{
+	return new(ELeave) CGenericProtoCfgLoader<ConfigClass>();
+	}
+
+
+template<typename ConfigClass>
+void CGenericProtoCfgLoader<ConfigClass>::LoadConfigL(RMetaExtensionContainer& aApc,
+        const TUid& /*aUid*/, const TUint aId)
+	{
+	CommsDat::CMDBSession* dbs = CommsDat::CMDBSession::NewL(KCDVersion1_2);
+	CleanupStack::PushL(dbs);
+
+	ConfigClass* config = ConfigClass::NewL();
+	CleanupStack::PushL(config);
+
+	TUint32 recordid = aId;
+	config->InitialiseConfigL(*dbs, recordid);
+	aApc.AppendExtensionL(config);
+
+	CleanupStack::Pop(config);
+	CleanupStack::PopAndDestroy(dbs);
+	}
+
+} // namespace ESock
+
+
+#endif // SYMBIAN_SS_PROTCFGLDR_H
+