--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/sessionlogsrc/irsessionloggerutility.cpp Mon Apr 19 14:01:53 2010 +0300
@@ -0,0 +1,832 @@
+/*
+* 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
+*
+*/
+
+
+#include <s32strm.h>
+
+#include "irdebug.h"
+#include "irreportsettings.h"
+#include "irsessionloggerutility.h"
+
+const TInt KMaxUrlLength = 256;
+const TInt KMaxTimeStampLength = 64;
+
+// ============================== Function declaration =======================
+
+// ---------------------------------------------------------------------------
+// Function: NewL
+// Two phase constructor returns the instance of CIRSessionLogger
+// ---------------------------------------------------------------------------
+//
+CIRSessionLogger* CIRSessionLogger::NewL()
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::NewL" );
+ CIRSessionLogger* self = CIRSessionLogger::NewLC();
+ CleanupStack::Pop(self);
+ IRLOG_DEBUG( "CIRSessionLogger::NewL - Exiting." );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Function: NewLC
+// Two phase constructor creates the instance of CIRSessionLogger
+// ---------------------------------------------------------------------------
+//
+CIRSessionLogger* CIRSessionLogger::NewLC()
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::NewLC" );
+ CIRSessionLogger* self = new (ELeave) CIRSessionLogger;
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ IRLOG_DEBUG( "CIRSessionLogger::NewLC - Exiting." );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: ~CIRSessionLogger
+// default destructor
+// ---------------------------------------------------------------------------
+//
+CIRSessionLogger::~CIRSessionLogger()
+ {
+ iRServer.Reset();
+ iRServer.Close();
+ iRSongRecogLog.Reset();
+ iRSongRecogLog.Close();
+ }
+
+// ---------------------------------------------------------------------------
+// Function: ConstructL
+// Two phase constructor
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::ConstructL()
+ {
+ //No implementation
+ }
+
+// ---------------------------------------------------------------------------
+// Function: CIRSessionLogger
+// default constructor
+// ---------------------------------------------------------------------------
+//
+CIRSessionLogger::CIRSessionLogger()
+ {
+ //No implementation
+ }
+
+// ---------------------------------------------------------------------------
+// Function: EndLogging
+// logs the termination condition
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::EndLogging()
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::EndLogging" );
+ if( iSessionMarked )
+ {
+ HandleStopEvents();
+ }
+ else
+ {
+ iDuration = 0;
+ }
+ switch(iTerminateBy)
+ {
+ case EUserTerminated:
+ {
+ //error condition for termination is disconnected by the user
+ iTerminatedBy.Copy(KUSER);
+ break;
+ }
+ case ENoConnectionToServer:
+ {
+ //error condition for termination is no connection to server
+ iTerminatedBy.Copy(KNOCONNECTIONTOSERVER);
+ break;
+ }
+ case ENoConnectionToNetwork:
+ {
+ //error condition for termination is no connection to network
+ iTerminatedBy.Copy(KNOCONNECTIONTONETWORK);
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+ IRLOG_DEBUG( "CIRSessionLogger::EndLogging - Exiting." );
+ }
+
+
+// ---------------------------------------------------------------------------
+// Function: HandleStopEvents
+// logs the termination condition
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::HandleStartEvents()
+ {
+ if( !iIsSessionProgressing )
+ {
+ iActiveSessionTime.UniversalTime();
+ iIsSessionProgressing = ETrue;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Function: HandleStartEvents
+// logs the termination condition
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::HandleStopEvents()
+ {
+ if( iIsSessionProgressing )
+ {
+ TTime endtime;
+ //endtime has session end time in GMT format
+ endtime.UniversalTime();
+ //session duration compensation value is calculated
+ //as difference between Compensation Time [time when it stopped] and
+ //end time
+ TTimeIntervalSeconds timeelaspsed;
+ endtime.SecondsFrom(iActiveSessionTime,timeelaspsed);
+ //compensation value session duration is converted to integer
+ iDuration += timeelaspsed.Int();
+ iIsSessionProgressing = EFalse;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Function: MarkSession
+// Marks the start of a session
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::MarkSession()
+ {
+ iSessionMarked = ETrue;
+ iDuration = 0;
+ HandleStartEvents();
+ }
+
+// ---------------------------------------------------------------------------
+// Function: UnMarkSession
+// UnMarks the start of a sessiom
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UnMarkSession()
+ {
+ iSessionMarked = EFalse;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: SessionMarked
+// Returns the session mark flag
+// ---------------------------------------------------------------------------
+//
+TBool CIRSessionLogger::SessionMarked()
+ {
+ return iSessionMarked;
+ }
+// ---------------------------------------------------------------------------
+// Function: ResetResource
+// reset data from channel server
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::ResetResource()
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::ResetResource" );
+ //reseting of resource
+ iRServer.Reset();
+ iRSongRecogLog.Reset();
+ }
+// ---------------------------------------------------------------------------
+// Function: IsSessionProgressing
+// checks whether session is progressing or not
+// ---------------------------------------------------------------------------
+//
+TBool CIRSessionLogger::IsSessionProgressing()
+ {
+ return iIsSessionProgressing;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: CompensationTime
+// Returns the session mark flag
+// ---------------------------------------------------------------------------
+//
+TTime CIRSessionLogger::CompensationTime()
+ {
+ return iActiveSessionTime;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: LogServerResult
+// logs server connection result
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::LogServerResult(const TDesC& aUrl,TResponse aResponse)
+ {
+ IRLOG_INFO3( "CIRSessionLogger::LogServerResult - %S (%d)", &aUrl, aResponse );
+ TIRServer tempServer;
+ if( aUrl.Length() <= KMaxUrlLength )
+ {
+ //channel server url is copied
+ tempServer.iServerUrl.Copy(aUrl);
+ }
+ switch(aResponse)
+ {
+ //connected to the channel server
+ case EIRConnected:
+ {
+ tempServer.iServerResult.Copy(KConnected);
+ }
+ break;
+ //not connected to channel server
+ //since server is not responding
+ case EIRFull:
+ {
+ tempServer.iServerResult.Copy(KFull);
+ }
+ break;
+ //not connected to channel server
+ //since connection time out
+ case EIRConnTimeOut:
+ {
+ tempServer.iServerResult.Copy(KConnTimeOut);
+ }
+ break;
+ //not connected to channel server (may be invalid urls)
+ case EIRConnFailed:
+ {
+ tempServer.iServerResult.Copy(KConnectionFailed);
+ }
+ break;
+ default:
+ {
+ break;
+ }
+ }
+ UpdateSessionLog(tempServer);
+ IRLOG_DEBUG( "CIRSessionLogger::LogServerResult - Exiting." );
+ }
+
+// ---------------------------------------------------------------------------
+// Function: LogSongRecog
+// logs song recog
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::LogSongRecog(const TDesC& aTimeStamp)
+ {
+ if( aTimeStamp.Length() <= KMaxTimeStampLength )
+ {
+ TIRSongRecogLog tempSongRecogLog;
+ tempSongRecogLog.iTimeStamp.Copy(aTimeStamp);
+ TRAP_IGNORE(iRSongRecogLog.AppendL(tempSongRecogLog));
+ }
+
+ }
+
+// ---------------------------------------------------------------------------
+// Function: GetConnectedFrom
+// connected information is stored
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::GetConnectedFrom(TConnectedFrom aConnectedFrom)
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::GetConnectedFrom" );
+ switch(aConnectedFrom)
+ {
+ case EIRIsds:
+ {
+ iConnectedFrom.Copy(KISDS);
+ break;
+ }
+ case EIRPresetAdhoc:
+ {
+ iConnectedFrom.Copy(KPRESETADHOC);
+ break;
+ }
+ case EIRPresetIsds:
+ {
+ iConnectedFrom.Copy(KPRESETISDS);
+ break;
+ }
+ case EIRHistoryAdhoc:
+ {
+ iConnectedFrom.Copy(KHISTORYADHOC);
+ break;
+ }
+ case EIRHistoryIsds:
+ {
+ iConnectedFrom.Copy(KHISTORYISDS);
+ break;
+ }
+ case EIRAdhocManual:
+ {
+ iConnectedFrom.Copy(KADHOCMANUAL);
+ break;
+ }
+ case EIRAdhocExternal:
+ {
+ iConnectedFrom.Copy(KADHOCEXTERNAL);
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+ IRLOG_DEBUG( "CIRSessionLogger::GetConnectedFrom - Exiting." );
+ }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateSessionLog
+// update the session logs
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UpdateSessionLog(TIRServer& aServer)
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::UpdateSessionLog" );
+
+ TBool found = EFalse;
+
+ // Only one entry per URL may be in the session log.
+ for ( TInt i = 0; i < iRServer.Count() && !found; i++ )
+ {
+ TIRServer& server = iRServer[i];
+ if ( server.iServerUrl == aServer.iServerUrl )
+ {
+ // If an entry for this URL already exists, it is replaced
+ // by the newer status code.
+ server = aServer;
+ found = ETrue;
+ }
+ }
+
+ if ( !found )
+ {
+ // Creates a new entry into the session log for this URL.
+ TRAP_IGNORE(iRServer.AppendL(aServer))
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// Function: UpdateSessionId
+// updates the session id
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UpdateSessionId(TInt aSessionId)
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::UpdateSessionId" );
+ iSessionId = aSessionId;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Function: UpdateTerminationStatus
+// updates the termination status
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UpdateTerminationStatus(TTerminationStatus aTerminatedBy)
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::UpdateTerminationStatus" );
+ iTerminateBy = aTerminatedBy;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateChannelID
+// updates the channel id
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UpdateChannelID(TInt aChanneldID)
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::UpdateChannelID" );
+ iChannelId = aChanneldID;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateCurrentNetwork
+// updates the current network
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UpdateCurrentNetwork(TInt aCurrentNetwork)
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::UpdateCurrentNetwork" );
+ iSessionCurrentNetwork = aCurrentNetwork;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateHomeOperator
+// updates the home network
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UpdateHomeOperator(TInt aHomeOperator)
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::UpdateHomeOperator" );
+ iHomeOperator = aHomeOperator;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: UpdateConnectionType
+// updates the connection type
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UpdateConnectionType(const TDesC& aConnectionType)
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::UpdateConnectionType" );
+ iSessionConnectionType.Copy(aConnectionType);
+ }
+
+// ---------------------------------------------------------------------------
+// Function : UpdateSessionStartGMTTime
+// function updates session start time with current GMT time
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::UpdateSessionStartGMTTime()
+ {
+ iStartSessionTime.UniversalTime();
+ }
+
+// ---------------------------------------------------------------------------
+// Function: TerminationStatus
+// returns termination status
+// ---------------------------------------------------------------------------
+//
+TDesC& CIRSessionLogger::TerminationStatus()
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::TerminationStatus" );
+ return iTerminatedBy;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: ChannelID
+// returns the channel id
+// ---------------------------------------------------------------------------
+//
+TInt CIRSessionLogger::ChannelID() const
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::ChannelID" );
+ return iChannelId;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: CurrentNetwork
+// returns the Current Network
+// ---------------------------------------------------------------------------
+//
+TInt CIRSessionLogger::CurrentNetwork() const
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::CurrentNetwork" );
+ return iSessionCurrentNetwork;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: HomeOperator
+// returns the home network
+// ---------------------------------------------------------------------------
+//
+TInt CIRSessionLogger::HomeOperator() const
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::HomeOperator" );
+ return iHomeOperator;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: ConnectionType
+// returns the connection type
+// ---------------------------------------------------------------------------
+//
+TDesC& CIRSessionLogger::ConnectionType()
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::ConnectionType" );
+ return iSessionConnectionType;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: StartTime
+// returns the start time
+// ---------------------------------------------------------------------------
+//
+TDes& CIRSessionLogger::StartTime()
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::StartTime" );
+ return iStartTime;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: ConnectionType
+// returns the connection type
+// ---------------------------------------------------------------------------
+//
+TDesC& CIRSessionLogger::ConnectedFrom()
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::ConnectedFrom" );
+ return iConnectedFrom;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: SessionId
+// returns the session id
+// ---------------------------------------------------------------------------
+//
+TInt CIRSessionLogger::SessionId() const
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::SessionId" );
+ return iSessionId;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: SessionDuration
+// returns the duration of the session
+// ---------------------------------------------------------------------------
+//
+TInt CIRSessionLogger::SessionDuration() const
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::SessionDuration" );
+ return iDuration;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: FileName
+// returns file name
+// ---------------------------------------------------------------------------
+//
+TFileName CIRSessionLogger::FileName()
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::FileName" );
+ return iFilePath;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: DateTime
+// returns session start time
+// ---------------------------------------------------------------------------
+//
+TTime CIRSessionLogger::DateTime()
+ {
+ return iStartSessionTime;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Function: SessionData
+// function returns instance session log array
+// ---------------------------------------------------------------------------
+//
+const RArray<TIRServer>& CIRSessionLogger::SessionData()const
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::SessionData" );
+ return iRServer;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: SongRecogLog
+// function returns instance song recog log array
+// ---------------------------------------------------------------------------
+//
+const RArray<TIRSongRecogLog>& CIRSessionLogger::SongRecogLog()const
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::SongRecogLog" );
+ return iRSongRecogLog;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: DurationValue
+// function returns duration value
+// ---------------------------------------------------------------------------
+//
+TTimeIntervalSeconds CIRSessionLogger::DurationValue()
+ {
+ return iDurationValue;
+ }
+
+// ---------------------------------------------------------------------------
+// Function: GetBackedUp
+// Back up the session log of a session
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::GetBackedUp( CIRSessionLogger& aSession )
+ {
+ //copies the file path
+ iFilePath = aSession.FileName();
+ //session start time
+ iStartSessionTime = aSession.DateTime();
+ //duration
+ iDurationValue = aSession.DurationValue();
+ //start time
+ iStartTime.Copy( aSession.StartTime() );
+ //termination status
+ iTerminatedBy.Copy( aSession.TerminationStatus() );
+ //connected from information
+ iConnectedFrom.Copy( aSession.ConnectedFrom() );
+ //connection type
+ iSessionConnectionType.Copy( aSession.ConnectionType() );
+ //session duration
+ iDuration = aSession.SessionDuration();
+ //state of the player
+ iIsSessionProgressing = aSession.IsSessionProgressing();
+ //Compensation time
+ iActiveSessionTime = aSession.CompensationTime();
+ //session id
+ iSessionId = aSession.SessionId();
+ //channel id
+ iChannelId = aSession.ChannelID();
+ //home operator
+ iHomeOperator = aSession.HomeOperator();
+ //current network
+ iSessionCurrentNetwork = aSession.CurrentNetwork();
+ //session mark checking flag
+ iSessionMarked = aSession.SessionMarked();
+
+ ResetResource();
+ //getting session data
+ for(TInt iter = 0 ;iter < aSession.SessionData().Count(); iter++)
+ {
+ //session data
+ iRServer.Append(aSession.SessionData().operator[](iter));
+ }
+ //getting song recog log data
+ for(TInt iter = 0 ;iter < aSession.SongRecogLog().Count(); iter++)
+ {
+ //song recog log data
+ iRSongRecogLog.Append(aSession.SongRecogLog().operator[](iter));
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Function: ExternalizeL
+// externialize the stream to the given stream
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::ExternalizeL(RWriteStream& aWriteStream)
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::ExternalizeL" );
+ TInt length;
+ //start time
+ length = iStartTime.Length();
+ aWriteStream.WriteInt32L(length);
+ aWriteStream.WriteL(iStartTime,length);
+
+ //connected from
+ length = iConnectedFrom.Length();
+ aWriteStream.WriteInt32L(length);
+ aWriteStream.WriteL(iConnectedFrom,length);
+
+ //session id
+ aWriteStream.WriteInt32L(iSessionId);
+
+ //connection type
+ length = iSessionConnectionType.Length();
+ aWriteStream.WriteInt32L(length);
+ aWriteStream.WriteL(iSessionConnectionType,length);
+
+ //channel id
+ aWriteStream.WriteInt32L(iChannelId);
+
+ //current network
+ aWriteStream.WriteInt32L(iSessionCurrentNetwork);
+
+ //home operator
+ aWriteStream.WriteInt32L(iHomeOperator);
+
+ //duration
+ aWriteStream.WriteInt32L(iDuration);
+
+ //terminated by
+ length = iTerminatedBy.Length();
+ aWriteStream.WriteInt32L(length);
+ aWriteStream.WriteL(iTerminatedBy,length);
+
+ //count
+ aWriteStream.WriteInt32L(iRServer.Count());
+
+ //session duration
+ //Session Data
+ for(TInt iter=0;iter<iRServer.Count();iter++)
+ {
+ //channel Server Url;
+ length = iRServer[iter].iServerUrl.Length();
+ aWriteStream.WriteInt32L(length);
+ aWriteStream.WriteL(iRServer[iter].iServerUrl,length);
+ //channel server result
+ length = iRServer[iter].iServerResult.Length();
+ aWriteStream.WriteInt32L(length);
+ aWriteStream.WriteL(iRServer[iter].iServerResult,length);
+ //count
+ aWriteStream.WriteInt32L(iRServer[iter].iCount);
+ }
+
+ //count
+ aWriteStream.WriteInt32L(iRSongRecogLog.Count());
+
+ //session duration
+ //Session Data
+ for(TInt iter=0;iter<iRSongRecogLog.Count();iter++)
+ {
+ //channel Server Url;
+ length = iRSongRecogLog[iter].iTimeStamp.Length();
+ aWriteStream.WriteInt32L(length);
+ aWriteStream.WriteL(iRSongRecogLog[iter].iTimeStamp,length);
+ }
+ IRLOG_DEBUG( "CIRSessionLogger::ExternalizeL - Exiting." );
+ }
+
+// ---------------------------------------------------------------------------
+// Function: InternalizeL
+// gets the data from the stream
+// ---------------------------------------------------------------------------
+//
+void CIRSessionLogger::InternalizeL(RReadStream& aReadStream)
+ {
+ IRLOG_DEBUG( "CIRSessionLogger::InternalizeL" );
+ TInt length;
+
+ //Start Time
+ length = aReadStream.ReadInt32L();
+ aReadStream.ReadL(iStartTime,length);
+
+ //Connected From
+ length = aReadStream.ReadInt32L();
+ aReadStream.ReadL(iConnectedFrom,length);
+
+ //Session Id
+ iSessionId=aReadStream.ReadInt32L();
+
+ //Session Connection Type
+ length = aReadStream.ReadInt32L();
+ aReadStream.ReadL(iSessionConnectionType,length);
+
+ //Channel Id
+ iChannelId = aReadStream.ReadInt32L();
+
+ //Session Current Network
+ iSessionCurrentNetwork = aReadStream.ReadInt32L();
+
+ //Home Operator
+ iHomeOperator = aReadStream.ReadInt32L();
+
+ //Duration
+ iDuration = aReadStream.ReadInt32L();
+
+ //Terminated By
+ length = aReadStream.ReadInt32L();
+ aReadStream.ReadL(iTerminatedBy,length);
+
+ //count
+ TInt count = aReadStream.ReadInt32L();
+ //Session Data
+ iRServer.Reset();
+ for(TInt iter=0;iter<count;iter++)
+ {
+ TIRServer hold;
+
+ //Server Url
+ length = aReadStream.ReadInt32L();
+ hold.iServerUrl.Zero();
+ aReadStream.ReadL(hold.iServerUrl,length);
+
+ //Server Result
+ length = aReadStream.ReadInt32L();
+ hold.iServerResult.Zero();
+ aReadStream.ReadL(hold.iServerResult,length);
+
+ //Count
+ hold.iCount = aReadStream.ReadInt32L();
+ iRServer.Append(hold);
+ }
+
+ //count
+ count = aReadStream.ReadInt32L();
+ //Song Recog Data
+ iRSongRecogLog.Reset();
+ for(TInt iter=0;iter<count;iter++)
+ {
+ TIRSongRecogLog hold;
+
+ //Server Url
+ length = aReadStream.ReadInt32L();
+ hold.iTimeStamp.Zero();
+ aReadStream.ReadL(hold.iTimeStamp,length);
+
+ iRSongRecogLog.Append(hold);
+ }
+
+ IRLOG_DEBUG( "CIRSessionLogger::InternalizeL - Exiting." );
+ }