diff -r 000000000000 -r dfb7c4ff071f datacommsserver/esockserver/inc/ss_protcfgldr.h --- /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 // CommsDat +#include +#include + +#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 +class CGenericProtoCfgLoader: public CProtocolConfigLoader + { + public: + static CGenericProtoCfgLoader* NewL(); + + virtual void LoadConfigL(RMetaExtensionContainer& aApc, const TUid& aUid, const TUint aId); + + protected: + CGenericProtoCfgLoader(); + }; + + +template +inline CGenericProtoCfgLoader::CGenericProtoCfgLoader() + { + } + + +template +CGenericProtoCfgLoader* CGenericProtoCfgLoader::NewL() + { + return new(ELeave) CGenericProtoCfgLoader(); + } + + +template +void CGenericProtoCfgLoader::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 +