messagingappbase/smsmtm/servermtm/src/smssactive.cpp
changeset 25 84d9eb65b26f
parent 23 238255e8b033
child 27 e4592d119491
child 37 518b245aa84c
child 79 2981cb3aa489
--- a/messagingappbase/smsmtm/servermtm/src/smssactive.cpp	Fri Apr 16 14:56:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,448 +0,0 @@
-// Copyright (c) 1999-2009 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:
-//
-
-#ifdef _DEBUG
-#undef _MSG_NO_LOGGING
-#endif
-
-#include "smssactive.h"
-
-#include <gsmubuf.h>
-#include <msvstd.h>
-#include <smutset.h>
-#include <msventry.h>
-#include <smuthdr.h>
-
-#include "SMSSPAN.H"
-
-
-#ifndef _MSG_NO_LOGGING
-	#include <flogger.h>
-	_LIT(KSmssLogFile, "Smss.txt");
-	_LIT(KSmssLogDir, "Sms");
-	const TInt KSmssLogMaxLength = KLogBufferSize - 22;
-	/**
-	Names for Multimode ETel sub-sessions
-	*/
-	_LIT(KETelMeSmsStore,"S13");
-	_LIT(KETelIccSmsStore,"S14");
-	_LIT(KETelCombinedSmsStore,"S15");
-#endif
-
-
-
-CSmssActive::CSmssActive(RFs& aFs, CMsvServerEntry& aServerEntry, TInt aPriority)
-: CActive(aPriority), iFs(aFs), iServerEntry(aServerEntry)
-	{
-	}
-
-CSmssActive::~CSmssActive()
-	{
-#ifndef _MSG_NO_LOGGING
-	delete iLastLogFile;
-
-	if (iFlogger.LogValid())
-		iFlogger.CloseLog();
-
-	iFlogger.Close();
-#endif
-	}
-
-void CSmssActive::RequestComplete(TRequestStatus* aStatus, TInt aError, TBool aSetActive)
-	{
-	User::RequestComplete(aStatus, aError);
-
-	if (aSetActive)
-		{
-		SetActive();
-		}
-	}
-
-void CSmssActive::Queue(TRequestStatus& aStatus)
-//
-// call this last when an asynch operation has been requested
-//
-	{
-	__ASSERT_DEBUG(iReport==NULL, Panic(KSmssPanicAlreadyActive));
-
-	aStatus=KRequestPending;
-	iReport=&aStatus;
-	}
-
-void CSmssActive::DoCancel()
-//
-// must be called at end of derived classes DoCancel()
-//
-	{
-	DoSmssCancel();
-	TInt result=KErrCancel;
-	Complete(result);	// can be done safely as asynch reporting
-	}
-
-TInt CSmssActive::RunError(TInt aError)
-	{
-	Complete(aError);
-	return KErrNone;
-	}
-
-void CSmssActive::RunL()
-	{
-	User::LeaveIfError(iStatus.Int()); //This will be traped by RunError().
-
-	DoRunL();
-
-	if (!IsActive())
-		Complete(iStatus.Int());
-	}
-
-TInt CSmssActive::Complete(TInt aStatus)
-	{
-	if (iReport)
-		{
-		const TBool isCancelling = (aStatus == KErrCancel);
-
-		DoComplete(aStatus);
-
-		if (!IsActive() || isCancelling)
-			{
-			User::RequestComplete(iReport, aStatus);
-			iReport = NULL;
-			}
-		}
-
-	return aStatus;
-	}
-
-TBool CSmssActive::CanSendMessage(const TMsvEntry& aEntry) const
-	{
-	TBool retVal = ETrue;
-	switch (aEntry.SendingState())
-		{
-		case KMsvSendStateSuspended:
-		case KMsvSendStateSent:
-		case KMsvSendStateNotApplicable:
-			retVal = EFalse;
-			break;
-		default:
-			break;
-		}
-
-	return retVal;
-	}
-
-TBool CSmssActive::CanSendMessageToRecipient(const TMsvEntry& aEntry, const CSmsNumber& aRcpt) const
-	{
-	return (aRcpt.Status() != CMsvRecipient::ESentSuccessfully) && CanSendMessage(aEntry);
-	}
-
-#ifndef _MSG_NO_LOGGING
-TInt CSmssActive::FLogMessage(const TMsvEntry& aEntry, const CSmsMessage& aSmsMessage, TBioMsgIdType aBearer, const TDesC& aFile)
-	{
-	TRAPD(err, DoFLogMessageL(aEntry, aSmsMessage, aBearer, aFile));
-	return err;
-	}
-
-void CSmssActive::DoFLogMessageL(const TMsvEntry& aEntry, const CSmsMessage& aSmsMessage, TBioMsgIdType aBearer, const TDesC& aFile)
-	{
-	if (!IsLogging(aFile))
-		return;
-	
-	TBuf8<32> temp;
-	TBuf16<32> temp1;
-	TPtrC temp2;
-	
-	switch (aSmsMessage.Type())
-		{
-		case CSmsPDU::ESmsSubmit:
-			temp = _L8("[Submit%d]");
-			break;
-		case CSmsPDU::ESmsDeliver:
-			temp = _L8("[Deliver%d]");
-			break;
-		default:
-			temp = _L8("[Message%d]");
-			break;
-		}
-
-	FLogFormat(aFile, temp, aEntry.Id());
-
-	TInt length = aSmsMessage.Buffer().Length();
-	HBufC* hBuf = HBufC::NewLC(32 + length);
-	TPtr buf(hBuf->Des());
-	aSmsMessage.Buffer().Extract(buf, 0, length);
-	buf.Insert(0, _L("Message= "));
-	FLog(aFile, buf, EFalse);
-	CleanupStack::PopAndDestroy(hBuf);
-	hBuf = NULL;
-
-	temp2.Set(aSmsMessage.ToFromAddress());
-	FLogFormat(aFile, _L("Recipients= %S"), &temp2);
-
-	temp2.Set(aSmsMessage.ServiceCenterAddress());
-	FLogFormat(aFile, _L("SC= %S"), &temp2);
-
-	FLogFormat(aFile, _L("BioUid= %d"), aEntry.iBioType);
-
-	const CSmsPDU& pdu = aSmsMessage.SmsPDU();
-
-	if (pdu.DataCodingSchemePresent())
-		{
-		temp.Zero();
-		temp.Append(_L8("Encoding= "));
-
-		switch (pdu.Alphabet())
-			{
-			case TSmsDataCodingScheme::ESmsAlphabet7Bit:
-				temp.Append(_L8("7"));
-				break;
-			case TSmsDataCodingScheme::ESmsAlphabet8Bit:
-				temp.Append(_L8("8"));
-				break;
-			case TSmsDataCodingScheme::ESmsAlphabetUCS2:
-				temp.Append(_L8("16"));
-				break;
-			default:
-				temp.Append(_L8("Unsupported"));
-				break;
-			}
-
-		FLogFormat(aFile, temp);
-		}
-
-	if (aSmsMessage.Type() == CSmsPDU::ESmsSubmit)
-		{
-		temp.Zero();
-		temp.Append(_L8("DeliveryReport= "));
-
-		const CSmsSubmit& submit = (CSmsSubmit&) pdu;
-		if (submit.StatusReportRequest())
-			{
-			temp.Append(_L8("YES"));
-			}
-		else
-			{
-			temp.Append(_L8("NO"));
-			}
-
-		FLogFormat(aFile, temp);
-		}
-	
-	temp.Zero();
-	temp.Append(_L("Bearer= "));
-	
-	switch (aBearer)
-		{
-		case EBioMsgIdNbs:
-			temp.Append(_L("NBS"));
-			break;
-		case EBioMsgIdWap:
-			temp.Append(_L("WAP"));
-			break;
-		case EBioMsgIdWapSecure:
-			temp.Append(_L("WAPSE"));
-			break;
-		default:
-			temp.Append(_L("UnSup"));
-			break;
-		}
-
-	FLogFormat(aFile, temp);
-	
-	temp1.Zero();
-	temp1.Append(_L("Storage= "));
-
-	switch (aSmsMessage.Storage())
-		{
-		case CSmsMessage::ESmsSIMStorage:
-			temp1.Append(KETelIccSmsStore);
-			break;
-		case CSmsMessage::ESmsPhoneStorage:
-			temp1.Append(KETelMeSmsStore);
-			break;
-		case CSmsMessage::ESmsCombinedStorage:
-			temp1.Append(KETelCombinedSmsStore);
-			break;
-		case CSmsMessage::ESmsNoStorage:
-		default:
-			temp1.Append(_L("NONE"));
-		};
-
-	FLogFormat(aFile, temp1);
-	FLogFormat(aFile, KNullDesC);
-	}
-
-void CSmssActive::FLog(const TDesC& aFile, const TDesC& aInputLine, TBool aIgnoreLineBreaks)
-	{
-	if (!IsLogging(aFile))
-		return;
-
-	TPtrC str(aInputLine);
-	TInt length = str.Length();
-
-	if (aIgnoreLineBreaks)
-		{
-		//Ignore trailing spaces
-		while (length--)
-			{
-			const TChar ch(str[length]);
-			if (!ch.IsSpace())
-				{
-				break;
-				}
-			}
-
-		length++;
-		str.Set(aInputLine.Left(length));
-
-		//Break the message up and print only 255 chars at a time
-		TInt start = 0;
-
-		while (start < length)
-			{
-			TPtrC buf(str.Mid(start, Min(KSmssLogMaxLength, length - start)));
-			iFlogger.Write(buf);
-			start += KSmssLogMaxLength;
-			}
-		}
-	else
-		{
-		//Log each line in aInputLine individually
-		while (length > 0)
-			{
-			TInt find = str.Locate('\n');
-
-			if (find == KErrNotFound)
-				{
-				FLog(aFile, str, ETrue);
-				break;
-				}
-			else
-				{
-				if (find == 0)
-					FLog(aFile, KNullDesC, ETrue);
-				else
-					FLog(aFile, str.Left(find), ETrue);
-
-				if (find < length - 1)
-					str.Set(str.Mid(find + 1));
-				else
-					break;
-				}
-
-			length = str.Length();
-			}
-		}
-	}
-
-void CSmssActive::FLog(const TDesC& aInputLine, TBool aIgnoreLineBreaks)
-	{
-	FLog(KSmssLogFile, aInputLine, aIgnoreLineBreaks);
-	}
-
-void CSmssActive::FLogFormat(const TDesC& aFile, TRefByValue<const TDesC> aFormat, ...)
-	{
-	VA_LIST list;
-	VA_START(list, aFormat);
-	FLogFormat(aFile, aFormat, list);
-	}
-
-void CSmssActive::FLogFormat(const TDesC& aFile, TRefByValue<const TDesC> aFormat, VA_LIST& aList)
-	{
-	if (!IsLogging(aFile))
-		return;
-
-	iFlogger.WriteFormat(aFormat, aList);
-	}
-
-
-void CSmssActive::FLogFormat(TRefByValue<const TDesC> aFormat, ...)
-	{
-	VA_LIST list;
-	VA_START(list, aFormat);
-	FLogFormat(KSmssLogFile, aFormat, list);
-	}
-
-void CSmssActive::FLogFormat(const TDesC& aFile, TRefByValue<const TDesC8> aFormat, ...)
-	{
-	VA_LIST list;
-	VA_START(list, aFormat);
-	FLogFormat(aFile, aFormat, list);
-	}
-
-void CSmssActive::FLogFormat(const TDesC& aFile, TRefByValue<const TDesC8> aFormat, VA_LIST& aList)
-	{
-	if (!IsLogging(aFile))
-		return;
-	
-	iFlogger.WriteFormat(aFormat, aList);
-	}
-
-
-void CSmssActive::FLogFormat(TRefByValue<const TDesC8> aFormat, ...)
-	{
-	VA_LIST list;
-	VA_START(list, aFormat);
-	FLogFormat(KSmssLogFile, aFormat, list);
-	}
-
-TBool CSmssActive::IsLogging(const TDesC& aFile)
-	{
-	return (ConstructFlogger(aFile) == KErrNone);
-	}
-
-TInt CSmssActive::ConstructFlogger(const TDesC& aFile)
-	{
-	TRAPD(err, DoConstructFloggerL(aFile));
-	return err;
-	}
-
-void CSmssActive::DoConstructFloggerL(const TDesC& aFile)
-	{
-	if (iFlogger.Handle() == NULL)
-		User::LeaveIfError(iFlogger.Connect());
-
-	if (iLastLogFile == NULL || *iLastLogFile != aFile)
-		{
-		if (iFlogger.LogValid())
-			iFlogger.CloseLog();
-
-		delete iLastLogFile;
-		iLastLogFile = NULL;
-		iLastLogFile = aFile.AllocL();
-		iFlogger.CreateLog(KSmssLogDir, aFile, EFileLoggingModeAppend);
-		}
-
-	if (!iFlogger.LogValid())
-		User::Leave(KErrNotFound);
-	}
-#endif
-
-
-void CSmssActive::ChangeEntryL(const TMsvEntry& aNewEntry)
- 	{
- 	__ASSERT_DEBUG(iServerEntry.Entry().Id() == aNewEntry.Id(), Panic(ESmssEntryNotSet));
- 
- 	if (!(aNewEntry == iServerEntry.Entry()))
- 		User::LeaveIfError(iServerEntry.ChangeEntry(aNewEntry));
- 	}
- 
-void CSmssActive::StoreHeaderL(const CSmsHeader& aNewHeader)
-	{
- 	CMsvStore* msvStore = iServerEntry.EditStoreL();
- 	CleanupStack::PushL(msvStore);
- 	aNewHeader.StoreL(*msvStore);
- 	msvStore->CommitL();
- 	CleanupStack::PopAndDestroy(msvStore);
- 	}