// Copyright (c) 2004-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:
//
#include <caf/caf.h>
#include "Reftestagentdata.h"
#include "drmfiles.h"
using namespace ContentAccess;
CRefTestAgentData* CRefTestAgentData::NewL(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode)
{
CRefTestAgentData* self = NewLC(aVirtualPath, aShareMode);
CleanupStack::Pop(self);
return self;
}
CRefTestAgentData* CRefTestAgentData::NewLC(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode)
{
CRefTestAgentData* self=new(ELeave) CRefTestAgentData();
CleanupStack::PushL(self);
self->ConstructL(aVirtualPath, aShareMode);
return self;
}
CRefTestAgentData* CRefTestAgentData::NewL(RFile& aFile, const TDesC& aUniqueId)
{
CRefTestAgentData* self = NewLC(aFile, aUniqueId);
CleanupStack::Pop(self);
return self;
}
CRefTestAgentData* CRefTestAgentData::NewLC(RFile& aFile, const TDesC& aUniqueId)
{
CRefTestAgentData* self=new(ELeave) CRefTestAgentData();
CleanupStack::PushL(self);
self->ConstructL(aFile, aUniqueId);
return self;
}
CRefTestAgentData::CRefTestAgentData()
{
}
CRefTestAgentData::~CRefTestAgentData()
{
iServer.Close();
}
void CRefTestAgentData::ConstructL(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode)
{
// default share mode of EFileShareReadersOnly
TUint mode = EFileStream | EFileRead;
if(aShareMode == EContentShareReadWrite)
{
mode |= EFileShareReadersOrWriters;
}
else if (aShareMode == EContentShareExclusive)
{
mode |= EFileShareExclusive;
}
else
{
mode |= EFileShareReadersOnly;
}
User::LeaveIfError(iServer.Open(aVirtualPath.URI(), aVirtualPath.UniqueId(), mode));
}
void CRefTestAgentData::ConstructL(RFile& aFile, const TDesC& aUniqueId)
{
User::LeaveIfError(iServer.Open(aFile, aUniqueId));
}
void CRefTestAgentData::DataSizeL(TInt &aSize)
{
User::LeaveIfError(iServer.DataSize(aSize));
}
TInt CRefTestAgentData::EvaluateIntent(TIntent aIntent)
{
// Always allow EPeek
TInt err = KErrNone;
if(aIntent != EPeek)
{
TRAP(err, iServer.EvaluateIntentL(aIntent));
}
return err;
}
TInt CRefTestAgentData::ExecuteIntent(TIntent aIntent)
{
// Always allow EPeek
TInt err = KErrNone;
if(aIntent != EPeek)
{
TRAP(err, iServer.ExecuteIntentL(aIntent));
}
return err;
}
TInt CRefTestAgentData::Read(TDes8& aDes)
{
return iServer.Read(aDes, aDes.MaxLength());
}
TInt CRefTestAgentData::Read(TDes8& aDes,TInt aLength)
{
return iServer.Read(aDes, aLength);
}
void CRefTestAgentData::Read(TDes8& aDes,TRequestStatus& aStatus)
{
TInt err = Read(aDes);
TRequestStatus* status = &aStatus;
User::RequestComplete(status, err);
}
void CRefTestAgentData::Read(TDes8& aDes,
TInt aLength,
TRequestStatus& aStatus)
{
TInt err = Read(aDes, aLength);
TRequestStatus* status = &aStatus;
User::RequestComplete(status, err);
}
TInt CRefTestAgentData::Seek(TSeek aMode, TInt& aPos)
{
return iServer.Seek(aMode, aPos);
}
TInt CRefTestAgentData::SetProperty(TAgentProperty /*aProperty*/, TInt /*aValue*/)
{
return KErrCANotSupported;
}
TInt CRefTestAgentData::GetAttribute(TInt aAttribute, TInt& aValue)
{
return iServer.GetAttribute(aAttribute, aValue);
}
TInt CRefTestAgentData::GetAttributeSet(RAttributeSet& aAttributeSet)
{
TInt ret=KErrNone;
TRAPD(err,ret=iServer.GetAttributeSetL(aAttributeSet));
if(err==KErrNone)
return ret;
else
return err;
}
TInt CRefTestAgentData::GetStringAttribute(TInt aAttribute, TDes& aValue)
{
return iServer.GetStringAttribute(aAttribute, aValue);
}
TInt CRefTestAgentData::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet)
{
TInt ret=KErrNone;
TRAPD(err,ret=iServer.GetStringAttributeSetL(aStringAttributeSet));
if(err==KErrNone)
return ret;
else
return err;
}
TInt CRefTestAgentData::Read(TInt aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus)
{
TInt err = iServer.Read(aPos, aDes, aLength);
TRequestStatus* status = &aStatus;
User::RequestComplete(status, err);
return KErrNone;
}