multimediacommscontroller/mmcccontroller/inc/mccresourcepool.h
changeset 0 1bce908db942
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommscontroller/mmcccontroller/inc/mccresourcepool.h	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,260 @@
+/*
+* Copyright (c) 2006 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:    
+*
+*/
+
+
+
+
+#ifndef MCCRESOURCEPOOL_H
+#define MCCRESOURCEPOOL_H
+
+//  INCLUDES
+#include <e32base.h>
+
+#include "mccresources.h"
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CMccResourceContainer;
+class CMccResourceItem;
+class MDataSink;
+class MDataSource;
+class CMccCameraHandler;
+class CMccTimerManager;
+
+// CLASS DECLARATION
+
+/**
+*
+*/
+class CMccResourcePool : public CBase, public MMccResources
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CMccResourcePool* NewL();
+        
+        /**
+        * Destructor.
+        */
+        virtual ~CMccResourcePool();
+
+    public: // New functions
+            
+        void ReuseL( TUint32 aEndpointId );
+        
+        void ReferenceCountL( TUint32 aEndpointId, TInt& aRefCount );
+        
+        MDataSource* SourceCandidate();
+        
+        MDataSink* SinkCandidate();
+        
+        void SetEnableRtcpL( TUint32 aStreamId, TBool aEnableRtcp );
+        
+        TBool EnableRtcp( TUint32 aStreamId );
+        
+        /**
+        * Gets existing camerahandler. 
+        */
+        CMccCameraHandler& CameraHandlerL( TBool aCurrentCamera = ETrue, 
+                                           TInt aCameraIndex = 0 );
+
+        /**
+        * Gets new camerahandler. 
+        * @return CMccCameraHandler; ownership is transferred
+        */
+        CMccCameraHandler* CreateNewCameraHandlerL( TInt aCameraIndex = 0 );
+        
+        void UpdateResourceL( TUint32 aEndpointId, const TDesC8& aVal );
+                                           
+    public: // Functions from MMccResources
+    
+        void ReserveSinkL( MDataSink* aSink, TUint32 aEndpointId );
+        
+        void ReserveSourceL( MDataSource* aSource, TUint32 aEndpointId );
+        
+        void PrepareEndpointRemovalL( 
+                TUint32 aEndpointId, 
+                RArray<TMccResourceParams>& aAffectedStreams );
+        
+        void RemoveEndpointL( TUint32 aEndpointId );
+        
+        void ReserveResourcesL( const TMccResourceParams& aParams );
+                                
+        void FreeResources( TUint32 aStreamId );
+                                 
+        TBool IsResourceUsageAllowed( TUint32 aStreamId );                         
+
+        void SetUserInitiationModeL( TUint32 aStreamId, 
+                                     TBool iIsUserInititated );
+                                     
+        void SetResourceStateL( TUint32 aStreamId, 
+                                TUint32 aEndpointId, 
+                                TResourceState aState,
+                                TBool& aControlNetworkResources,
+                                RArray<TUint32>& aControlledEndpoints,
+                                RArray<TUint32>& aUncontrolledEndpoints );
+                                             
+        
+        void ResourceStateSetL();
+    
+        TInt EventReceived( TMccEvent& aEvent, 
+                            TBool& aDiscardEvent,
+                            TBool& aEffectiveStandby,
+                            TMccEvent** aAdditionalEvent );
+        
+        const RPointerArray<MDataSink>& Sinks( TBool aOnlyInternals );
+        
+        const RPointerArray<MDataSource>& Sources( TBool aOnlyInternals );
+        
+        CMccMultiplexer* MultiplexerL( MDataSource* aSource );
+        
+        TInt FindResource( TUint32 aLinkId,
+                           TUint32 aEndpointId, 
+                           TUid aResourceUid, 
+                           MDataSource** aSource, 
+                           MDataSink** aSink );
+
+        TInt FindNetworkResourceByRtpStreamId( 
+                                  const TUint32 aMccSessionId,
+                                  const TRtpId& aRtpStreamId,
+                                  MDataSource** aSource, 
+                                  MDataSink** aSink );
+                
+        TInt FindNetworkResourceByRtpSsrc( 
+                                  const TRtpSSRC& aRtpSsrc,
+                                  MDataSource** aSource, 
+                                  MDataSink** aSink );
+       
+        MMccTimerManager& TimerManager();
+        
+        void StoreKeyFrameInfoL( TUint32 aEndpointId, CMMFBuffer& aKeyFrame );
+        
+        TBool IsKeyFrame( TUint32 aEndpointId, CMMFBuffer& aBuffer );
+        
+        void EnableViewFinderL( TMccVideoSinkSetting& aSetting );
+        
+        void DisableViewFinderL();
+                                   
+    protected:  // New functions
+
+    protected:  // Functions from base classes
+    
+    private:
+    
+        CMccResourceContainer* FindResourceContainer( TUint32 aStreamId );
+        
+        CMccResourceItem* FindResourceItem( TUint32 aEndpointId );
+                
+        void ClearCandidates();
+                                                      
+        void HandleCameraResourcesL();
+        
+        TInt GetEndpoint( CMccResourceItem& aItem,
+                          TUid aResourceUid,
+                          MDataSource** aSource, 
+                          MDataSink** aSink );
+
+        void CheckStandbyPropertiesL( const TMccResourceParams& aParams, 
+                                      MDataSink& aSink, 
+                                      MDataSource& aSource );
+                                      
+        void CheckResourceAvailabilityL( MDataSink& aSink, MDataSource& aSource );
+        
+        TMccEvent* StandbyLogicL( TMccEvent& aEvent, 
+                                  TBool& aDiscardEvent,
+                                  TBool& aEffectiveStandby );
+    
+        void StandbyInactivityL( CMccResourceContainer& aContainer,
+                                 TMccEvent& aEvent, 
+                                 TBool& aDiscardEvent,
+                                 TBool& aEffectiveStandby );
+                                 
+        TMccEvent* StandbyActivityL( CMccResourceContainer& aContainer,
+                                     TMccEvent& aEvent, 
+                                     TBool& aDiscardEvent,
+                                     TBool& aEffectiveStandby );
+    
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CMccResourcePool();
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+    public:     // Data
+    
+    protected:  // Data
+
+    private:    // Data
+    
+        // Not owned
+        MDataSink* iSinkCandidate;
+        
+        TUint32 iSinkCandidateEndpointId;
+        
+        // Not owned
+        MDataSource* iSourceCandidate;
+        
+        TUint32 iSourceCandidateEndpointId;
+        
+        RPointerArray<CMccResourceContainer> iResources;
+        
+        RPointerArray<CMccResourceItem> iEndpoints;
+        
+        RPointerArray<MDataSink> iTempSinks;
+        
+        RPointerArray<MDataSource> iTempSources;
+
+        // Camera handle shared by all components
+		CMccCameraHandler* iCameraHandler;
+		
+		CMccTimerManager* iTimerManager;
+		
+	private:    // Friend classes
+
+        #ifdef EUNIT_TEST
+            friend class UT_CMccController; 
+            friend class UT_CMccResourcePool; 
+            friend class UT_CMccQosController;
+        #endif
+		
+        
+    public:     // Friend classes
+
+    protected:  // Friend classes
+
+    private:    // Friend classes
+
+    };
+
+#endif      // MCCRESOURCEPOOL_H   
+            
+// End of File