williamr@4: // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@4: // All rights reserved. williamr@4: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@4: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: // williamr@4: // Initial Contributors: williamr@4: // Nokia Corporation - initial contribution. williamr@4: // williamr@4: // Contributors: williamr@4: // williamr@4: // Description: williamr@4: // williamr@4: williamr@4: /** williamr@4: @file williamr@4: @internalTechnology williamr@4: */ williamr@4: williamr@4: #if !defined(SS_APIEXT_REGISTER_H_INCLUDED) williamr@4: #define SS_APIEXT_REGISTER_H_INCLUDED williamr@4: williamr@4: #include williamr@4: #include williamr@4: #include williamr@4: williamr@4: class CSockManData; williamr@4: williamr@4: namespace ESock williamr@4: { williamr@4: williamr@4: class CExtItfMsgPluginInfo; williamr@4: class TCommsApiExtRegister; williamr@4: williamr@4: /** williamr@4: @internalTechnology williamr@4: williamr@4: Utility class williamr@4: */ williamr@4: class TCommsApiExtTable williamr@4: { williamr@4: friend class TCommsApiExtRegister; williamr@4: williamr@4: private: williamr@4: explicit TCommsApiExtTable(TInt aExtensionId, const Meta::STypeId& aMsgImplTid); williamr@4: williamr@4: void AddClientL(TSubSessionUniqueId aClientId, Messages::CGlobals& aSockManData); williamr@4: TBool RemoveClient(TSubSessionUniqueId aClientId, Messages::CGlobals& aSockManData); williamr@4: static void DeregisterInterfaceOnCleanup(TAny* aTid); williamr@4: williamr@4: private: williamr@4: const TInt iExtensionId; williamr@4: const Meta::STypeId iMsgImplTid; williamr@4: CExtItfMsgPluginInfo* iMsgPluginInfo; williamr@4: RArray iClients; //Extensions opened by this client williamr@4: }; williamr@4: williamr@4: /** williamr@4: @internalTechnology williamr@4: williamr@4: Utility class williamr@4: */ williamr@4: class TCommsApiExtRegister williamr@4: { williamr@4: public: williamr@4: explicit TCommsApiExtRegister(Messages::CGlobals& aSockManData); williamr@4: ~TCommsApiExtRegister(); williamr@4: void RegisterInterfaceL(TInt aExtItfId, const Meta::STypeId& aMsgImplTid, TSubSessionUniqueId aClientId); williamr@4: //Returns next client on this interface if any williamr@4: TSubSessionUniqueId FirstClient(TInt aExtItfId); williamr@4: TSubSessionUniqueId DeRegisterInterface(TInt aExtItfId, TSubSessionUniqueId aClientId); williamr@4: williamr@4: private: williamr@4: TInt FindApiExtClientsTable(TInt aExtItfId); williamr@4: williamr@4: private: williamr@4: Messages::CGlobals& iGlobals; williamr@4: RArray iApiExtList; williamr@4: }; williamr@4: williamr@4: } // namespace ESock williamr@4: williamr@4: #endif // SS_APIEXT_REGISTER_H_INCLUDED williamr@4: