sysstatemgmt/systemstatemgr/sus/inc/susemergencycallrfadaptation.h
changeset 12 e978f818f9bd
parent 0 4e1aa6a622a0
equal deleted inserted replaced
0:4e1aa6a622a0 12:e978f818f9bd
     1 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
    35 The queueing mechanism is to handle multiple clients at a time not to handle multiple
    35 The queueing mechanism is to handle multiple clients at a time not to handle multiple
    36 requests from one particular clients session.
    36 requests from one particular clients session.
    37 
    37 
    38 @internalComponent
    38 @internalComponent
    39 */
    39 */
    40 
    40 class CEmergencyAdaptationMessage;
    41 
       
    42 class CEmergencyCallRfAdaptation : public CActive
    41 class CEmergencyCallRfAdaptation : public CActive
    43 {
    42 {
    44 public:
    43 public:
    45 	static CEmergencyCallRfAdaptation* NewL(MEmergencyCallRfAdaptation& aAdaptation);
    44 	static CEmergencyCallRfAdaptation* NewL(MEmergencyCallRfAdaptation* aAdaptation);
    46 	~CEmergencyCallRfAdaptation();
    45 	~CEmergencyCallRfAdaptation();
    47 
    46 
    48 	void Release();
    47 	void Release();
    49 	void DoActivateRfForEmergencyCallL(const RMessage2& aMessage);
    48 	void DoActivateRfForEmergencyCallL(const RMessage2& aMessage);
    50 	void DoDeactivateRfForEmergencyCallL(const RMessage2& aMessage);
    49 	void DoDeactivateRfForEmergencyCallL(const RMessage2& aMessage);
    51 	void DoEmergencyCallRfAdaptationCancelL(const RMessage2& aMessage);
    50 	void DoEmergencyCallRfAdaptationCancelL(const RMessage2& aMessage);
    52 	void SetPriorityClientSession(CSsmAdaptationSession* aPriorityClientSession);
    51 	void SetPriorityClientSession(CSsmAdaptationSession* aPriorityClientSession);
    53 	void RemovePriorityClientSession();
    52 	void RemovePriorityClientSession();
    54 	void ReserveMemoryL();
    53 	void ReserveMemoryL();
       
    54 	void DeleteAdaptationMessage();
       
    55 	void NotifyAndRemoveAll();
       
    56 	void Dequeue(CEmergencyAdaptationMessage *&aCurrentMessage);
    55 protected:
    57 protected:
    56 	void RunL();
    58 	void RunL();
    57 	TInt RunError( TInt aError );
    59 	TInt RunError( TInt aError );
    58 	void DoCancel();
    60 	void DoCancel();
       
    61 	void ConstructL(MEmergencyCallRfAdaptation* aAdaptation);
    59 
    62 
    60 private:
    63 private:
    61 
    64 
    62 	CEmergencyCallRfAdaptation(MEmergencyCallRfAdaptation& aAdaptation);
    65 	CEmergencyCallRfAdaptation();
    63 	void SubmitOrQueueL(const RMessage2 &aMessage);
    66 	void SubmitOrQueueL(const RMessage2 &aMessage);
    64 	void Submit(CAdaptationMessage*& aMessage);
    67 	void Submit(CEmergencyAdaptationMessage*& aMessage);
    65 	
    68 	
    66 private:
    69 private:
    67 	CAdaptationMessage *iCurrentMessage;
    70 	CEmergencyAdaptationMessage *iCurrentMessage;	
    68 	RSsmAdaptationRequestQueue iPendingRequestsQueue;
    71 	RPointerArray<CEmergencyAdaptationMessage>iPendingEmergencyRequestsQueue;
    69 	
    72 	
    70 	MEmergencyCallRfAdaptation& iEmergencyCallRfAdaptation;
    73 	MEmergencyCallRfAdaptation* iEmergencyCallRfAdaptation;
    71 	//Reserving Heap to create CAdaptationMessage in OOM condition for priority clients
       
    72 	RHeap* iReservedHeap;
       
    73 	//For storing PriorityClientsession
    74 	//For storing PriorityClientsession
    74     CSsmAdaptationSession* iPriorityClientSession;
    75     CSsmAdaptationSession* iPriorityClientSession;
       
    76     
       
    77     //Count of unused reserved pointers.  
       
    78     TInt iReserveMsgCount;
       
    79     //Pointer Array to store reserved adaptation message pointers
       
    80     RPointerArray<CEmergencyAdaptationMessage> iAdaptationReservedMessageArray; 
    75     };
    81     };
    76 
    82 
       
    83 enum TMessageStatus
       
    84     {
       
    85     EMsgStatusNULL = 0, //Default status of Message is 0
       
    86     EMsgReserved   = 1, //Flag to indicate the message is using Reserved memory.
       
    87     EMsgInUse      = 2  //Flag to indicate the Reserved message is Used.
       
    88     };
    77 /**
    89 /**
    78  * Used for pushing the CAdaptationMessage object in to cleanup stack. This is needed as
    90  * Class to hold CAdaptationMessage pointer and the value to know whether the current message is from reserved pool
    79  * the message is created using the reserved heap should be freed back to reserved heap
    91  * or normal message.
    80  * instead of deleting.
       
    81  * @internalComponent
       
    82  */
    92  */
    83 struct TStoreAdaptationMessage 
    93 class CEmergencyAdaptationMessage : public CBase
    84     {
    94     {
       
    95 public:    
       
    96     static CEmergencyAdaptationMessage* NewL(const RMessage2& aMessage);
       
    97     static CEmergencyAdaptationMessage* NewL(const RMessage2& aMessage, const TInt8 aMessageStatus);    
       
    98     
       
    99     ~CEmergencyAdaptationMessage();
       
   100     
       
   101     inline void UnsetMessageStatus(const TInt8 aMessageStatus);
       
   102     inline void SetMessageStatus(const TInt8 aMessageStatus);
       
   103     inline TBool IsMessageReserved() const;
       
   104     inline TBool IsMessageInuse() const;    
       
   105     void SetMessage(const RMessage2& aMessage);
       
   106     TInt Function() const;
       
   107     CSession2 *Session() const;
       
   108     void Complete(TInt aReason);
       
   109     
       
   110 protected:
       
   111     void ConstructL(const RMessage2& aMessage);
       
   112     
       
   113 private:
       
   114     CEmergencyAdaptationMessage(const TInt8 aMessageStatus);
       
   115     
       
   116 private:
    85     CAdaptationMessage* iAdaptationMessage;
   117     CAdaptationMessage* iAdaptationMessage;
    86     RHeap* iReservedHeap;
   118     // To know the Adaptation Message status.
       
   119     TInt8 iMessageStatus;
    87     };
   120     };
    88 
       
    89 #endif // __SUSEMERGENCYCALLRFADAPTATION_H__
   121 #endif // __SUSEMERGENCYCALLRFADAPTATION_H__