internetradio2.0/sessionloginc/irsessionlogger.h
changeset 0 09774dfdd46b
child 12 608f67c22514
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/sessionloginc/irsessionlogger.h	Mon Apr 19 14:01:53 2010 +0300
@@ -0,0 +1,566 @@
+/*
+* Copyright (c) 2006-2007 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:  ?Description
+*
+*/
+
+
+#ifndef IRSESSIONLOGGER_H
+#define IRSESSIONLOGGER_H
+
+#include <f32file.h>
+
+#include "irsessionparams.h"
+#include "mirphoneinfoobserver.h"
+
+class CIRSessionDb;
+class CIRSessionLogger;
+class CIRSettings;
+class CIRNmsLogDb;
+class CIRNmsLogger;
+class CPhoneInfo;
+class MIRLogDbStatusObserver;
+
+/**
+ * This class is used to provide usage log, various function are to log session
+ * information as well as others, like browse log information. Session logs can be 
+ * stored in internel data base for last 5 session, it is deleted only if the 
+ * response is given. If more than 5 session is happening at any point of time
+ * first one based on session id is removed.
+ * When you end a session a gzip file is generated in private path
+ * This zip file has (xml file) session log in xml format
+ * This is single ton implementation use DeleteInstance to delete its 
+ * instance
+ *
+ * @lib irsessionlog.lib
+ * @since S_60 3.0
+ *
+ */
+
+//============================ class declaration ========================
+
+
+NONSHARABLE_CLASS(CIRReportGenerator) : public CObject,
+                                        public MIRPhoneInfoObserver
+	{
+//member function
+public:
+
+	/**
+	* Function: NewL
+	* Two phase constructor returns the instance of CIRReportGenerator
+	* this is a single ton implementation
+	* @note Deleting this object directly is not allowed. Please use Close().
+	* @note CleanupClosePushL(generator) must be used if the object is to be pushed onto cleanup stack.
+	* @returns instance of CIRReportGenerator
+	*/	
+	IMPORT_C static CIRReportGenerator* OpenL();
+	
+private:	
+	/**
+	* Function: ~CIRReportGenerator
+	* default destructor
+	*/	
+	~CIRReportGenerator();
+	
+	/**
+	* Function: ConstructL
+	* Two phase constructor
+	*/	
+	void ConstructL();
+	
+	/**
+	* Function: CIRReportGenerator
+	* default constructor
+	*/	
+	CIRReportGenerator();
+
+public:
+
+	/**
+	* Function: LogServerResult
+	* logs server connection result
+	* @param URL to which connection is attempted
+	* @param response from server
+	*/		
+	IMPORT_C void LogServerResult(const TDesC& aUrl,TResponse aResult);	
+	
+    /**
+    * Function: LogSongRecog
+    * logs song recog
+    */  
+	IMPORT_C void LogSongRecog();
+    
+	/**
+	* Function: UpdateCurrentBrowseNetwork
+	* logs network during browsing
+	* @param mcc+ mnc code of current network
+	*/	
+	IMPORT_C void UpdateCurrentBrowseNetwork(TInt aNetwork);
+		
+	/**
+	* Function: LogBrowse
+	* logs browse url and status information
+	* @param browse url
+	* @param status information
+	*/	
+	IMPORT_C void LogBrowse(const TDesC8& aUrl,TInt aStatus);
+			
+	/**
+	* Function: SessionStartedL
+	* starts a new session
+	*/	
+	IMPORT_C void SessionStartedL();
+	/**
+	* Function: NmsLogStartedL
+	* starts a new nmslog
+	*/	
+	IMPORT_C void NmsLogStartedL();
+	/**
+	* Function: SessionEnd
+	* marks the a session
+	*/		
+	IMPORT_C void SessionEndL( TBool aForcedTermination );
+	
+	/**
+	* Function: MarkSessionStart
+	* marks the a start of a session
+	*/	
+	IMPORT_C void MarkSessionStart();
+	
+	/**
+	* Function: HandleStopEvents
+	* function handle session state change events
+	* @param ETrue if session is progressing and EFalse if not progressing
+	*/
+	IMPORT_C void HandleStopEvents(TBool aIsSessionProgressing );
+	
+	/**
+	* Function: ReStorePreviousSession
+	* restore the previous session
+	* @return ETrue if restoring is possible else returns EFalse
+	*/
+	IMPORT_C TBool ReStorePreviousSession();
+
+	
+	/**
+	* Function: UpdateTerminatedBy
+	* updates the termination status
+	* @param terminated by information
+	*/	
+	IMPORT_C void UpdateTerminatedBy(TTerminationStatus aTerminatedBy);
+	
+	/**
+	* Function: UpdateConnectedFrom
+	* connected information is stored
+	* @param connected from information
+	*/		
+	IMPORT_C void UpdateConnectedFrom(TConnectedFrom aConnectedFrom);
+	
+	/**
+	* Function: BrowseUrl
+	* logs browse url and result
+	* @param URL to which connection is attempted
+	* @param response from server
+	*/	
+	IMPORT_C void BrowseUrl(const TDesC& aBrowseUrl,TInt aStatus);
+	
+	/**
+	* Function: UpdateChannelID
+	* updates the channel id
+	* @param channel id
+	*/	
+	IMPORT_C void UpdateChannelID(TInt aChanneldID);
+	
+	/**
+	* Function: UpdateCurrentNetwork
+	* updates the current network
+	* @param current network
+	*/	
+	IMPORT_C void UpdateCurrentNetwork(TInt aCurrentNetwork);
+	
+	/**
+	* Function: UpdateHomeOperator
+	* updates the home network
+	* @param home network
+	*/	
+	IMPORT_C void UpdateHomeOperator(TInt aHomeOperator);
+	
+	/**
+	* Function: UpdateConnectionType
+	* updates the connection type
+	* @param connection type
+	*/	
+	IMPORT_C void UpdateConnectionType(const TDesC& aConnectionType);	
+	
+	/**
+	* Function : ReponseFromISDSObtained
+	* This function is called when session log is successfully sent
+	* removes all session log entries from sessiondb
+	*/	
+	IMPORT_C void ReponseFromISDSObtained();
+	
+	
+	/**
+	 * The following methods are for Nms Event Usage Logging 
+	 */
+	
+	
+	/**
+	 * Function: UpdateNmsCurrentNetwork
+	 * logs network during Music Store launching
+	 * @param mcc+ mnc code of current network
+	 */	
+	IMPORT_C void UpdateNmsCurrentNetwork(TInt aNetwork);
+	
+	/**
+	 * Function: UpdateNmsHomeOperator
+	 * logs network during Music Store launching
+	 */	
+	IMPORT_C void UpdateNmsHomeOperator(TInt aNetwork);
+	
+	/**
+	 * Function: WriteNmsLogtoXmlL
+	 * logs nmsEvents to Xml file
+	 */	
+	IMPORT_C void WriteNmsLogtoXmlL();
+	/**
+	* Function: UpdateNmsType
+	* updates the Nms type
+	* @param Nms type
+	*/	
+	IMPORT_C void UpdateNmsType(const TDesC& aNmsType);		
+	/**
+	* Function: UpdateNmsChannelID
+	* updates the Nms channel id
+	* @param Nms channel id
+	*/	
+	IMPORT_C void UpdateNmsChannelID(TInt aChanneldID);
+
+    /**
+     * The following methods are for Song Recog Event Usage Logging 
+     */
+	
+    /**
+     * The following methods are used for sending out Usage Logging 
+     */
+    
+	/**
+	* Function: SetDbStatusObserser
+	* @param Db Status Observer
+	*/	
+	IMPORT_C void SetDbStatusObserser(MIRLogDbStatusObserver *aDbStatusObserver);
+	
+	/**
+	* Function: ReportSent();
+	* notify that the usage report is just sent out to isds server
+	*/	
+	IMPORT_C void ReportSent();	
+private:
+
+	/**
+	* Function: CollectSettingsData
+	* collect information during starting of session
+	* like irid, version information.
+	*/		
+	void CollectSettingsData();
+	
+	/**
+	* Function: WriteToXmlL
+	* gathers the information and generates sesion log file and zip file
+	* file will be stored in private path
+	*/	
+	void WriteToXmlL();		
+	
+	/**
+	* Function: WriteSessionData
+	* gathers session log data and writes to XML file
+	* @param no of urls tried to connect in that particular session
+	*/		
+	void WriteSessionData(TInt aIndex);
+	
+	/**
+	* Function: WriteBrowseLog
+	* gathers browse log data and writes to XML file
+	*/	
+	void WriteBrowseLog();
+	
+	/**
+	* Function: ZipFileL
+	* generates the zip file from the input xml file
+	* output file is in gzip format and is stored in private path
+	*/	
+	void ZipFileL();
+	
+	/**
+	* Function: FormatDateTime
+	* formats the date time given in "%d-%d-%d %d:%d:%d GMT\n" format
+	* copies the result to a descriptor
+	* @param reference of descriptor to which the data is to be copied
+	* @param time to be copied
+	*/	
+	void FormatDateTime(TDes& aBuffer,TDateTime aDateTime);
+	
+	/**
+	* Function : WriteSessionLog
+	* Write buffer content to log file
+	*/
+	void WriteBufferToLogFile();
+	
+	/**
+	* Function : UnForceSessionEndedL
+	* Write session log
+	* @param instance of session which ended
+	*/
+	void UnForceSessionEndedL( CIRSessionLogger* aSession );
+	
+	/**
+	* Function : ForcedSessionEndedL
+	* Write session log
+	*/
+	void ForcedSessionEndedL();
+
+
+    /**
+	 * The following methods are for Nms Event Usage Logging 
+	 */
+		
+	/**
+	* Function: WriteNmsLogData
+	* gathers Nmslog data and writes to XML file
+	* @param position of the log in the log data array
+	*/		
+	void WriteNmsLogData(TInt aIndex);
+    
+    /**
+     * From MIRPhoneInfoObserver
+     */
+	void ImeiUpdatedL(const TDesC& aImei);
+    
+private:	
+
+	/**
+	* opsetting instance 
+	*/
+	CIRSettings* iSettingsData;
+    
+    /**
+    * Phone Info 
+    */	
+	CPhoneInfo* iPhoneInfo;
+	
+	/**
+	* instance of session logger
+	*/
+	CIRSessionLogger* iSessionLog;
+	
+	/**
+	* instance of nms logger
+	*/
+	CIRNmsLogger* iNmsLog;
+    
+	/**
+	* instance of previous session 
+	*/
+	CIRSessionLogger* iPreviousSessionLog;
+	/**
+	* instance of previous session 
+	*/
+	CIRNmsLogger* iPreviousNmsLog;
+	
+	/**
+	* instance of sessiondb
+	*/ 
+	CIRSessionDb* iLogSessionDb;
+	/**
+	* instance of NmsLogdb
+	*/ 
+	CIRNmsLogDb* iNmsLogDb;
+	
+	/**
+	* instance of Db Status Observer
+	*/
+	MIRLogDbStatusObserver *iDbStatusObserver;
+	/**
+	* Indicate whether Nms Log Db has been updated
+	*/
+	TBool iNmsLogDbUpdated;
+	/**
+	* Indicate whether Session Log Db has been updated
+	*/
+	TBool iSessionLogDbUpdated;
+	/**
+	* Indicate whether usage report sent to isds server has received successful response
+	*/
+	TBool iUnComfirmedReportSent;
+	/**
+	* it holds the sessions
+	*/
+	CArrayPtrFlat<CIRSessionLogger> *iSessionData;
+	/**
+	* it holds the NmsLog
+	*/
+	CArrayPtrFlat<CIRNmsLogger> *iNmsLogData;
+    
+	/**
+	* position in xml file
+	*/
+	TInt iFileWritePos;
+
+	/**
+	* stores the network during browsing
+	*/
+	TInt iCurrentBrowseNetwork;
+	
+	/**
+	* Checks whether any error has occured while 
+	* writing or retriving from data base
+	*/
+	TBool iSessionLogUpdationFailed;
+	/**
+	* Checks whether any error has occured while 
+	* writing or retriving from data base
+	*/
+	TBool iNmsLogUpdationFailed;    
+	/**
+	* Checks whether db creation is failure or success
+	*/
+	TBool iSessionDbCreationFailed;
+	/**
+	* Checks whether db creation is failure or success
+	*/
+	TBool iNmsDbCreationFailed;
+    
+	/*
+	* sets when an nms event is generated
+	*/
+	TBool iNmsEventFlag;
+	
+	/**
+	* log file
+	*/
+	RFile iLogFile;
+	
+	/*
+	* file session
+	*/
+	RFs iFsSession;
+	
+	/**
+	* unicode buffer
+	*/ 
+	TBuf<256> iUniCodeBuf;  //Unicode
+	
+	/**
+	* utf 8 buffer
+	*/
+	TBuf8<256> iUTF8Buffer; //UTF-8
+	
+	/**
+	* version number
+	*/
+	TBuf<5> iReportVersion;
+	
+	/**
+	* irid
+	*/
+	TBuf<30>  iIRId;
+	
+    /**
+    * Base64 encoded IMEI
+    */
+    HBufC *iImeiBase64;
+	
+	/**
+	* session database file
+	*/
+	TFileName iSessFile;
+	/**
+	* session database file
+	*/
+	TFileName iNmsLogFile;    
+	/**
+	* log files path
+	*/
+	TFileName iLogFilePath;
+	
+	/**
+	* instance of browse log	
+	*/
+	TIRBrowseLog iRBrowseLog;
+	
+	/**
+	* session start time
+	*/
+	TTime iSessionStartTime;
+	
+    /**
+     * Timestamp
+     */
+    TTime iSongRecogTimestamp; 	
+	
+	/**
+	* time stamp
+	*/
+	TTime iBrowseLogTimeStamp;
+	
+	/**
+	* date
+	*/
+	TDateTime iDate;
+	
+	/**
+	* array for storing browse log
+	*/	
+	RArray<TIRBrowseLog> iBrowseLog;
+	
+	/**
+	* number of browse logs written to xml
+	*/
+	TInt iBrowseLogsCntToXml;
+
+	
+	/**
+	 * The following methods are for Nms Event Usage Logging 
+	 */
+		
+	/**
+	 * Timestamp
+	 */
+	TTime iNmsTimestamp; 
+    
+	/**
+	 * Type of Event (i.e., "find" or "launch")
+	 */
+	TInt iNmsType;
+	
+	/**
+	 * Nms Event Current netwrok type
+	 */
+	TInt iNmsCurrentNetwork;
+	
+	/**
+	 * Nms Event Home Operator
+	 */
+	TInt iNmsHomeOperator;  
+	/**
+	 * The number of times session end called
+	 */
+	TInt iSessionEndCalled;  	 
+	};
+
+#endif //IRSESSIONLOGGER_H
+
+
+