--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/ClientResolver/Resolver/inc/CSIPClientResolver.h Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,160 @@
+/*
+* Copyright (c) 2005-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:
+* Name : CSIPClientResolver.h
+* Part of : SIP Client Resolver
+* Version : 1.0
+*
+*/
+
+
+
+
+/**
+ @internalComponent
+*/
+
+#ifndef CSIPCLIENTRESOLVER_H
+#define CSIPCLIENTRESOLVER_H
+
+#include <e32base.h>
+#include <ecom/ecom.h>
+#include "MSipClients.h"
+#include "_sipcodecdefs.h"
+
+
+// FORWARD DECLARATIONS
+class CSIPClientData;
+class CSIPClientDataParser;
+class CSipLaunchingStrategies;
+class TSipClient;
+class CSIPRequest;
+class CSIPResponse;
+class CSIPClientResolver2;
+
+// CLASS DEFINITIONS
+/**
+ *
+ */
+class CSIPClientResolver : public CActive, public MSipClients
+ {
+ public: // Constructors and destructor
+
+ IMPORT_C static CSIPClientResolver* NewL ();
+
+ IMPORT_C ~CSIPClientResolver ();
+
+ public: // New functions
+
+ IMPORT_C CSIPResponse* FindUidL(const CSIPRequest& aRequest,
+ RArray< TSipClient >& aUids );
+
+ public: // From MSipClients
+
+ MSipClient* GetByUID( const TUid& aUid ) const;
+
+ protected: // From CActive
+
+ void DoCancel();
+ void RunL();
+
+ private: // New methods
+
+ /**
+ * Refreshes clients' data for those clients
+ * which are returning their SIP capabilities dynamically
+ * instead of using fixed values in their plugin's resource file.
+ */
+ void RefreshClientDataL();
+
+ /// Fill implentation registry
+ void ListImplementationsL();
+
+ /// Delete implementation registry
+ void RemoveRegistry();
+
+ /// Start monitoring changes in ECom plugin implementations
+ void NotifyOnChange();
+
+ /// Copies all the current implementations to the given array
+ void CopyAllUidsL( RArray< TUid >& aUids );
+
+ /// Adds ROM- and RAM-based clients to the array
+ void AddClientsL( RPointerArray< CSIPClientData >& aRegistry );
+
+ /// Converts and appends ECom implementation information
+ /// to and array of CSIPClientDatas
+ void ConvertClientDataL( const RImplInfoPtrArray& aImplInfo,
+ RPointerArray< CSIPClientData >& aRegistry,
+ TBool aRomClient );
+
+ /// Adds CSIPClientData to the array based on ECom-plugin's data
+ void AddClientDataL( RPointerArray< CSIPClientData >& aRegistry,
+ CImplementationInformation& aInfo,
+ TBool aRomClient );
+
+ /// Creates a thread to load the client plugin and
+ /// ask the capabilities from it and parses the results
+ void ReloadClientDataL( CSIPClientData& aClientData );
+
+ /// Removes the implementations present in the first array
+ /// from the second array.
+ void RemoveDuplicates( const RImplInfoPtrArray& aRomInfo,
+ RImplInfoPtrArray& aAllInfo );
+
+ // Needed for cleanup of a RPointerArray< CSIPClientData >:
+ static void ResetAndDestroy( TAny* anArray );
+
+ void CreateWorkerThreadL();
+
+ static TInt WorkerThreadFunction(TAny* aPtr);
+
+ void ReadPluginCapsL();
+
+ private: // Constructors
+
+ /// Default constructor
+ CSIPClientResolver();
+
+ /// 2nd phase constructor.
+ void ConstructL();
+
+ private: // private data
+
+ /// Handle to ECom session. Owned.
+ REComSession* iECom;
+
+ /// XML parser for SIP client data
+ CSIPClientDataParser* iClientDataParser;
+
+ /// Information registry for installed SIP clients. Owned.
+ RPointerArray< CSIPClientData >* iRegistry;
+
+ /// Launching strategies. Owned.
+ CSipLaunchingStrategies* iLaunchingStrategies;
+
+ /// Used for parameter passing to worker thread
+ TUid iTmpImplementationUid;
+
+ /// Used for parameter passing to worker thread
+ HBufC8* iTmpPluginCaps;
+
+ private: // For testing purposes
+
+ UNIT_TEST(CSIPClientResolver_test)
+ };
+
+#endif // CSIPCLIENTRESOLVER_H
+
+// End of File