diff -r e06095241a65 -r 735de8341ce4 vpnengine/eventmediator/inc/eventmediator.h --- a/vpnengine/eventmediator/inc/eventmediator.h Wed Sep 01 12:23:21 2010 +0100 +++ b/vpnengine/eventmediator/inc/eventmediator.h Tue Sep 14 23:16:15 2010 +0300 @@ -51,8 +51,6 @@ */ class CEventMediatorServer : public CPolicyServer, public MSitDeathListener { - friend class CEventMediatorSession; // Friend class - public: //Methods // Constructors and destructor @@ -77,6 +75,10 @@ */ CSession2* NewSessionL(const TVersion& aVersion, const RMessage2& aMessage) const; + /** + * Notifies the server that a session has been deleted. + */ + void SessionDeleted(TBool aIsSitSession); // Other methods /** @@ -98,7 +100,7 @@ * Finds out whether the specified client thread is a SIT * thread or not */ - TBool IsClientTheSitL(const RMessage2& aMessage); + TBool IsClientTheSitL(const RMessage2& aMessage) const; /** * Starts the SIT thread if it is not running @@ -208,6 +210,14 @@ TPtrC EventLogFileName(void); + /** + * Copies data describing an event to the client. + * @param aMessge: a message from client side sent by RConnection::FetchData + * @return error code, KErrNone if successfull + */ + TInt CopyEventDataL(const RMessage2& aMessage); + + public: // From MSitDeathListener void SitDied(); @@ -231,23 +241,11 @@ /** * Perform the second phase construction of a CVpnManagerServer * object. - * @param aServer Pointer to the server itself. */ - void ConstructL(CEventMediatorServer* aServer); + void ConstructL(); // Other methods - /** - * Stops the server if the session count is zero. - */ - void StopEventMediator(void); - - /** - * Copies data describing an event to the client. - * @param aMessge: a message from client side sent by RConnection::FetchData - * @return error code, KErrNone if successfull - */ - TInt CopyEventDataL(const RMessage2& aMessage); /** * Reduces listener count of a stored event by one and destroys it if count becomes zero. @@ -255,16 +253,11 @@ */ void MarkStoredEventListened(TInt aIndex); - /** - * Sets the iShuttingDown flag. - */ - void SetShuttingDown(TBool aShuttingDown); - private: //Data // List of Events that have been reported but not handled by all listeners. CArrayFixFlat iStoredEvents; // Number of currently existing sessions. - TInt iSessionCount; + mutable TInt iSessionCount; // Log writer CEventLogger* iLogger; // The next event specification ID @@ -290,231 +283,6 @@ }; -// CLASS DECLARATION - -/** -* Defines the session to the VPN manager server. -*/ -class CEventMediatorSession : public CSession2 - { - public: //Message types - enum - { - KEventMediatorListen, - KEventMediatorListenWithSpec, - KEventMediatorCancel, - KEventMediatorCancelWithSpec, - KEventMediatorCancelAll, - KEventMediatorReportEvent, - KEventMediatorReportEventWithSpec, - KEventMediatorFetchData, - KEventMediatorReportLogEvent, - KEventMediatorNewEventSpecId, - KEventMediatorDeletePrivateFiles, - KEventMediatorGetEventLogSize, - KEventMediatorGetEventLogHeader, - KEventMediatorGetEventLogData, - KEventMediatorClearEventLog - }; - - public: // Methods - - // Constructors and destructor - - /** - * Static constructor - */ - static CEventMediatorSession* NewL(CEventMediatorServer* aServer, const RMessage2& aMessage); - - /** - * Default destructor - */ - ~CEventMediatorSession(void); - - /** - * Wrapper function which Dispatches and executes the client's service calls - * (See Message type definition). - */ - void ServiceL(const RMessage2& aMessage); - - /** - * Checks if client is listening events of the given type and completes message - * sent by clients ListenToEvent function. The length of the event data and - * the pointer to that data are written to the message. - * @param aType: type of the event. - * @param aSpec: additional info on event. - * @param aData: event data. - * @return number of listeners for the event was listened. - */ - TInt CheckEventL(const TEventType aType, const TDesC8* aSpec, const TDesC8* aData, TInt aStatus); - - /** - * Tries to find a task request that is not being fulfilled - * already - */ - CListenerContainer* FindWaitingTaskRequest(); - - /** - * Retrieves the event listener object, if any, that is using - * the SIT that is fulfilling the specified event. - */ - CListenerContainer* FindListener(TEventType aEventType, TInt aEventSpecId); - - /** - * Retrieves the event listener object, if any, that is using - * the SIT that is fulfilling the specified event. - */ - CListenerContainer* FindListener(TEventType aEventType, const TDesC8* aEventSpec); - - /** - * Completes the specified listener if it is owned by the - * session. Returns ETrue is the listener was found and - * completed, EFalse otherwise. - */ - void CompleteListener(TEventType aEventType, const TDesC8* aEventSpec, TInt aStatus); - - void CompleteTaskRequests(TInt aStatus); - - TBool IsASitSession(); - - private: //Methods - // Constructors and destructor - - /** - * Constructor - */ - CEventMediatorSession(CEventMediatorServer* aServer); - - /** - * Starts listening events of requesteed type by coping the message to iListenedEvents. - * @param aMessage: aMessage sent by clients ListenToEvent function. - * @return: error code, KErrNone if successfull. - */ - TInt ListenToEventWithSpecL(const RMessage2& aMessage); - - /** - * Starts listening events of requesteed type by coping the message to iListenedEvents. - * @param aMessage: aMessage sent by clients ListenToEvent function. - * @return: error code, KErrNone if successfull. - */ - TInt ListenToEventL(const RMessage2& aMessage); - - /** - * Reports the event contained in the message to the event mediator server. - * @param aMessage: aMessage sent by clients ReportEvent function. - * @return: error code, KErrNone if successfull. - */ - void ReportEventL(const RMessage2& aMessage); - - /** - * Reports a log event contained in the message to the event mediator server. - * @param aMessage: aMessage sent by clients ReportLogEvent function. - * @return: error code, KErrNone if successfull. - */ - void ReportLogEventL(const RMessage2& aMessage); - - /** - * Reports the event contained in the message to the event mediator server. - * @param aMessage: aMessage sent by clients ReportEvent function. - * @return: error code, KErrNone if successfull. - */ - void ReportEventWithSpecL(const RMessage2& aMessage); - - /** - * Cancels listning of one event type. - * @param aMessage: aMessage sent by clients CancelListenToEvent function. - */ - void CancelListening(const RMessage2& aMessage); - - /** - * Cancels listning of one event type. - * @param aMessage: aMessage sent by clients CancelListenToEvent function. - */ - void CancelListeningWithSpecL(const RMessage2& aMessage); - - /** - * Cancels all listening. - * @param aMessage: aMessage sent by clients CancelAllListening function. - */ - void CancelAll(); - - /** - * Copies event data from the server to the client. - * @param aMessage: aMessage sent by clients FetchData function. - * @return: error code, KErrNone if successfull. - */ - TInt FetchDataL(const RMessage2& aMessage); - - /** - * Looks up a message from iListenedEvents. - * @param aType: type of the event the message is listening to. - * @param aIndex: the position of the message in iListenedEvents. - * @return ETrue if message exists, EFalse if not. - */ - TBool FindListenerMsg(const TEventType aType,TInt& index); - - /** - * Looks up a message from iListenedEvents. - * @param aType: type of the event the message is listening to. - * @param aIndex: the position of the message in iListenedEvents. - * @return ETrue if message exists, EFalse if not. - */ - TBool FindListenerMsg(const TEventType aType,const TDesC8* aSpec,TInt& index); - - /** - * Searches for a task request type event listening request - */ - TBool FindTaskRequestListenerMsg(TInt& index); - - /** - * Reads data that was reported with the event from client. Allocates a buffer - * for data and gives ownership of that buffer to caller. - * @param aMessage: aMessage sent by clients ReportEvent function. - * @return pointer to the newly created buffer containig data. - */ - HBufC8* ReadEventDataFromClientL(const RMessage2& aMessage); - - /** - * Reads specification describing the event from client. Allocates a buffer - * for secification and gives ownership of that buffer to caller. - * @param aMessage: aMessage sent with event specification. - * @return pointer to the newly created buffer containig data. - */ - HBufC8* ReadSpecificationFromClientL(const RMessage2& aMessage); - - /** - * Completes the specified listener and deletes it from the - * listener list - */ - void CompleteListener(TInt aIndex, TInt aStatus); - - /** - * Returns to the client a new event specification ID - */ - void NewEventSpecIdL(const RMessage2& aMessage); - - TInt DeletePrivateFiles(); - void DeletePrivateFilesL(); - - TInt GetEventLogSize(const RMessage2& aMessage); - TInt GetEventLogHeader(const RMessage2& aMessage); - TInt GetEventLogData(const RMessage2& aMessage); - TInt ClearEventLog(); - - private: //Data - // List of messages listening to events - CArrayFixFlat iListenedEvents; - // Event mediator server - CEventMediatorServer* iServer; - - RFs iFs; - RFile iEventLogFile; - TBool iEventLogFileOpen; - // Is this session from a SIT or not - - public: - TBool iIsSitSession; - }; // CLASS DECLARATION @@ -549,7 +317,7 @@ public: //Methods // Constructors and destructor CListenerContainer(const RMessage2& aMessage, TDesC8* aSpec, - CEventMediatorServer* aServer); + CEventMediatorServer& aServer); ~CListenerContainer(); inline TEventType Type() {return (TEventType) iMessage.Int0();} @@ -570,7 +338,7 @@ RMessage2 iMessage; TEventType iEventType; // Pointer to the event mediator server - CEventMediatorServer* iServer; + CEventMediatorServer& iServer; // A flag that tells whether the request // is being fulfilled by the SIT or not TBool iBeingFulfilledBySit;