--- /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
+
+
+