1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
16 #include <ecom/ecom.h>
18 const TUid KUidImMobilityPolicy = {0x10283066};
21 CleanUpEComSmsInfoArray function for cleanup support of locally declared arrays.
23 void CleanUpEComInfoArray(TAny* aInfoArray)
25 RImplInfoPtrArray* infoArray = (static_cast<RImplInfoPtrArray*>(aInfoArray));
26 infoArray->ResetAndDestroy();
31 Static factory constructor.
33 @return The constructed CImMobilityPolicyPlugin object
35 inline CImMobilityPolicyPlugin* CImMobilityPolicyPlugin::NewL()
37 RImplInfoPtrArray implInfoArray;
38 TCleanupItem cleanup(CleanUpEComInfoArray, &implInfoArray);
39 CleanupStack::PushL(cleanup);
41 // get all implementations of the mobility policy plugin interface
42 REComSession::ListImplementationsL(KUidImMobilityPolicy, implInfoArray);
43 TInt count = implInfoArray.Count();
47 implInfoArray.ResetAndDestroy();
48 implInfoArray.Close();
49 CleanupStack::PopAndDestroy(&implInfoArray);
50 User::Leave(KErrNotFound);
53 CImMobilityPolicyPlugin* interface = NULL;
55 for (TInt impl = 0; impl < count; ++impl)
57 if (implInfoArray[impl]->VendorId() != 0x70000001)
59 interface = REINTERPRET_CAST(
60 CImMobilityPolicyPlugin*,
61 REComSession::CreateImplementationL(
62 implInfoArray[impl]->ImplementationUid(),
63 _FOFF(CImMobilityPolicyPlugin, iDtor_ID_Key)));
69 interface = REINTERPRET_CAST(
70 CImMobilityPolicyPlugin*,
71 REComSession::CreateImplementationL(
72 implInfoArray[0]->ImplementationUid(),
73 _FOFF(CImMobilityPolicyPlugin, iDtor_ID_Key)));
76 implInfoArray.ResetAndDestroy();
77 implInfoArray.Close();
78 CleanupStack::PopAndDestroy(&implInfoArray);
85 inline CImMobilityPolicyPlugin::CImMobilityPolicyPlugin()
91 Destroy the ECOM implementation
93 inline CImMobilityPolicyPlugin::~CImMobilityPolicyPlugin()
95 REComSession::DestroyedImplementation(iDtor_ID_Key);