diff -r b9e36322dee2 -r e9457ebcc4df services/terminalmodeservice/src/upnptmserverdescriptionprovider.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/services/terminalmodeservice/src/upnptmserverdescriptionprovider.cpp Fri Jul 23 08:57:49 2010 +0300 @@ -0,0 +1,185 @@ +/** +* Copyright (c) 2010 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: CUpnpTmServerDescriptionProvider class implementation. +* +*/ + +#include "upnptmserverdescriptionprovider.h" +#include +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "upnptmserverdescriptionproviderTraces.h" +#endif + + +_LIT(KPublic, "public\\"); +_LIT(KIconPath, "icon"); + +// --------------------------------------------------------------------------------- +// CUpnpTmServerDescriptionProvider::NewL +// +// --------------------------------------------------------------------------------- +// +CUpnpTmServerDescriptionProvider* CUpnpTmServerDescriptionProvider::NewL() + { + OstTraceFunctionEntry0( CUPNPTMSERVERDESCRIPTIONPROVIDER_NEWL_ENTRY ); + CUpnpTmServerDescriptionProvider* self = new (ELeave) CUpnpTmServerDescriptionProvider(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + OstTraceFunctionExit0( CUPNPTMSERVERDESCRIPTIONPROVIDER_NEWL_EXIT ); + return self; + } + +// --------------------------------------------------------------------------------- +// CUpnpTmServerDescriptionProvider::CUpnpTmServerDescriptionProvider +// +// --------------------------------------------------------------------------------- +// +CUpnpTmServerDescriptionProvider::CUpnpTmServerDescriptionProvider() + { + // No implementation required + } + +// --------------------------------------------------------------------------------- +// CUpnpTmServerDescriptionProvider::~CUpnpTmServerDescriptionProvider +// +// --------------------------------------------------------------------------------- +// +CUpnpTmServerDescriptionProvider::~CUpnpTmServerDescriptionProvider() + { + OstTraceFunctionEntry0( CUPNPTMSERVERDESCRIPTIONPROVIDER_CUPNPTMSERVERDESCRIPTIONPROVIDER_ENTRY ); + iFs.Close(); + OstTraceFunctionExit0( CUPNPTMSERVERDESCRIPTIONPROVIDER_CUPNPTMSERVERDESCRIPTIONPROVIDER_EXIT ); + } + +// --------------------------------------------------------------------------------- +// CUpnpTmServerDescriptionProvider::ConstructL +// +// --------------------------------------------------------------------------------- +// +void CUpnpTmServerDescriptionProvider::ConstructL() + { + OstTraceFunctionEntry0( CUPNPTMSERVERDESCRIPTIONPROVIDER_CONSTRUCTL_ENTRY ); + User::LeaveIfError( iFs.Connect() ); + OstTraceFunctionExit0( CUPNPTMSERVERDESCRIPTIONPROVIDER_CONSTRUCTL_EXIT ); + } + + +// --------------------------------------------------------------------------------- +// CUpnpTmServerDescriptionProvider::OnDeviceDescription +// +// --------------------------------------------------------------------------------- +// +TInt CUpnpTmServerDescriptionProvider::OnDeviceDescription( + CUpnpDeviceDescriptionRequest& aRequest ) + { + OstTraceFunctionEntry0( CUPNPTMSERVERDESCRIPTIONPROVIDER_ONDEVICEDESCRIPTION_ENTRY ); + return OnRequest( aRequest ); + } + +// --------------------------------------------------------------------------------- +// CUpnpTmServerDescriptionProvider::OnServiceDescription +// +// --------------------------------------------------------------------------------- +// +TInt CUpnpTmServerDescriptionProvider::OnServiceDescription( + CUpnpDeviceDescriptionRequest& aRequest ) + { + OstTraceFunctionEntry0( CUPNPTMSERVERDESCRIPTIONPROVIDER_ONSERVICEDESCRIPTION_ENTRY ); + return OnRequest( aRequest ); + } + +// --------------------------------------------------------------------------------- +// CUpnpTmServerDescriptionProvider::OnIcon +// +// --------------------------------------------------------------------------------- +// +TInt CUpnpTmServerDescriptionProvider::OnIcon( CUpnpDeviceDescriptionRequest& aRequest ) + { + OstTraceFunctionEntry0( CUPNPTMSERVERDESCRIPTIONPROVIDER_ONICON_ENTRY ); + return OnRequest( aRequest ); + } + +// --------------------------------------------------------------------------------- +// CUpnpTmServerDescriptionProvider::GetFile +// +// --------------------------------------------------------------------------------- +// +TInt CUpnpTmServerDescriptionProvider::GetFile( const TDesC8& /*aUri*/, RFile& aFile ) + { + OstTraceFunctionEntry0( CUPNPTMSERVERDESCRIPTIONPROVIDER_GETFILE_ENTRY ); + return ( aFile.Open( iFs, iFilePath, EFileShareReadersOnly | EFileRead )); + } + +// --------------------------------------------------------------------------------- +// CUpnpTmServerDescriptionProvider::OnRequest +// +// --------------------------------------------------------------------------------- +// +TInt CUpnpTmServerDescriptionProvider::OnRequest( CUpnpDeviceDescriptionRequest& aRequest ) + { + OstTraceFunctionEntry0( CUPNPTMSERVERDESCRIPTIONPROVIDER_ONREQUEST_ENTRY ); + TPtrC8 fileName; + TInt error(KErrNone); + TPtrC8 urlPath = UpnpFileUtil::ExtractUrlPath( aRequest.Uri(), fileName, error ); + if( error == KErrNone) + { + TRAP( error, OnRequestL( urlPath,fileName ) ); + } + OstTraceFunctionExit0( CUPNPTMSERVERDESCRIPTIONPROVIDER_ONREQUEST_EXIT ); + return error; + } + +// --------------------------------------------------------------------------------- +// CUpnpTmServerDescriptionProvider::OnRequestL +// @param aUrlPath URL +// @param aFileName FileName +// --------------------------------------------------------------------------------- +// +void CUpnpTmServerDescriptionProvider::OnRequestL( const TDesC8& aUrlPath, + const TDesC8& aFileName ) + { + OstTraceFunctionEntry0( CUPNPTMSERVERDESCRIPTIONPROVIDER_ONREQUESTL_ENTRY ); + // 8-bit to 16-bit conversion of URL path and file path + TBuf urlPath; + urlPath.Copy(aUrlPath); + TBuf fileName; + fileName.Copy(aFileName); + + // Fetches the private directory + User::LeaveIfError( iFs.PrivatePath( iFilePath ) ); + iFilePath.Append(KPublic()); + /** + * Appends the filename to the file path. + * 1. In case of icon file, it first appends icon directory and then appends the filename. + * 2. In case of device and service xml files, it merely appends filename to the file path. + */ + if ( urlPath.Find(KIconPath()) != KErrNotFound ) + { + // The request is for icon file + iFilePath.Append(urlPath.Left(urlPath.Locate(KForwardSlash))); + iFilePath.Append(UpnpString::KDoubleBackSlash16()); + iFilePath.Append(KIconPath()); + } + else + { + iFilePath.Append(urlPath); + } + iFilePath.Append(UpnpString::KDoubleBackSlash16()); + // Appends filename to the file path. + iFilePath.Append(fileName); + OstTraceFunctionExit0( CUPNPTMSERVERDESCRIPTIONPROVIDER_ONREQUESTL_EXIT ); + } +