--- /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
+