diff -r 000000000000 -r f5a58ecadc66 upnp/upnpstack/serviceframework/src/upnpsettings.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/upnp/upnpstack/serviceframework/src/upnpsettings.cpp Tue Feb 02 01:12:20 2010 +0200 @@ -0,0 +1,246 @@ +/** @file +* Copyright (c) 2005-2006 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: CUpnpSettings + * +*/ + + +// INCLUDE FILES +#include "upnpsettings.h" +#include +#include "upnpstring.h" +#include "upnpcompvariant.hrh" +#include + +const TInt KBufferGranularity = 256; +// =========================== MEMBER FUNCTIONS =============================== +// ---------------------------------------------------------------------------- +// CUpnpSettings::ConstructL +// Symbian 2nd phase constructor can leave. +// ---------------------------------------------------------------------------- +// +void CUpnpSettings::ConstructL(TUid aRepositoryUid) +{ + iRepository = CRepository::NewL(aRepositoryUid); +} + +// ---------------------------------------------------------------------------- +// CUpnpSettings::NewL +// Two-phased constructor. +// ---------------------------------------------------------------------------- +// +EXPORT_C CUpnpSettings* CUpnpSettings::NewL(TUid aRepositoryUid) +{ + CUpnpSettings* self = new (ELeave) CUpnpSettings(); + CleanupStack::PushL(self); + self->ConstructL(aRepositoryUid); + CleanupStack::Pop(); + return self; +} + +// ---------------------------------------------------------------------------- +// CUpnpSettings::CUpnpSettings +// Destructor +// ---------------------------------------------------------------------------- +// +CUpnpSettings::~CUpnpSettings() +{ + delete iRepository; +} + +// ---------------------------------------------------------------------------- +// CUpnpSettings::Set +// See upnpsettings.h +// ---------------------------------------------------------------------------- +// +EXPORT_C TInt CUpnpSettings::Set(TUint aId, TInt& aValue) +{ + if ((aId == KUPnPStackFileBufferSize)&&(aValue<0)) + return KErrArgument; + else + return iRepository->Set(aId, aValue); +} + + +// ---------------------------------------------------------------------------- +// CUpnpSettings::Get +// See upnpsettings.h +// ---------------------------------------------------------------------------- +// +EXPORT_C TInt CUpnpSettings::Get(TUint aId, TInt& aValue) +{ + return iRepository->Get(aId, aValue); +} + + + +// ---------------------------------------------------------------------------- +// CUpnpSettings::Set +// See upnpsettings.h +// ---------------------------------------------------------------------------- +// +EXPORT_C TInt CUpnpSettings::SetL(TUint aId, const TDesC8& aValue) +{ + HBufC* data = UpnpString::ToUnicodeL(aValue); + TPtr dataPtr(data->Des()); + TInt err = iRepository->Set(aId, dataPtr); + delete data; + return err; +} + +// ---------------------------------------------------------------------------- +// CUpnpSettings::Set +// See upnpsettings.h +// ---------------------------------------------------------------------------- +// +EXPORT_C TInt CUpnpSettings::Set(TUint aId, const TDesC& aValue) +{ + return iRepository->Set(aId, aValue); +} + +// ---------------------------------------------------------------------------- +// CUpnpSettings::Get +// See upnpsettings.h +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CUpnpSettings::Get(TUint aId, TDes& aValue) +{ + return iRepository->Get(aId, aValue); +} +// ---------------------------------------------------------------------------- +// CUpnpSettings::Get +// See upnpsettings.h +// --------------------------------------------------------------------------- +// +EXPORT_C HBufC8* CUpnpSettings::GetL(TUint aId) + { + TInt len(0); + HBufC* buf(0); + TInt err(KErrNotFound); + + do //until the buffer is large enough + { + len += KBufferGranularity; + delete buf; // first time it is Null + buf = HBufC::NewL(len); + TPtr bufPtr(buf->Des()); + err = iRepository->Get(aId, bufPtr); + } while(err == KErrOverflow ); + + // handle error + if(err) + { + delete buf; + User::Leave(err); + } + + // convert to UTF-8 + CleanupStack::PushL(buf); + HBufC8* buf8 = UpnpString::FromUnicodeL(*buf); + CleanupStack::PopAndDestroy(buf); + return buf8; + } + +// ---------------------------------------------------------------------------- +// CUpnpSettings::GetUserAgentL +// See upnpsettings.h +// --------------------------------------------------------------------------- +// +EXPORT_C HBufC8* CUpnpSettings::GetUserAgentL() + { + #if defined(__HN_31__) || defined(__HN_32__) + CUpnpSettings* usc = CUpnpSettings::NewL( KHnCRUidUPnPStack ); + #else + CUpnpSettings* usc = CUpnpSettings::NewL( KCRUidUPnPStack ); + #endif + CleanupStack::PushL(usc); + HBufC8* tmp = usc->GetL(CUpnpSettings::KUPnPStackCustomizedUserAgent); + CleanupStack::PopAndDestroy(usc); + return tmp; + } + + + +// ---------------------------------------------------------------------------- +// CUpnpSettings::Get +// See upnpsettings.h +// ---------------------------------------------------------------------------- +// +EXPORT_C TInt CUpnpSettings::GetIapL() +{ + TInt noIap = 0; + #if defined(__HN_31__) || defined(__HN_32__) + CUpnpSettings* usc = CUpnpSettings::NewL( KHnCRUidUPnPStack ); + #else + CUpnpSettings* usc = CUpnpSettings::NewL( KCRUidUPnPStack ); + #endif + CleanupStack::PushL(usc); + usc->Get(CUpnpSettings::KUPnPStackIapId, noIap); + CleanupStack::PopAndDestroy(usc); + return noIap; +} + +// ---------------------------------------------------------------------------- +// CUpnpSettings::GetFileBufferSizeL +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CUpnpSettings::GetFileBufferSizeL() + { + TInt size = 0; + #if defined(__HN_31__) || defined(__HN_32__) + CUpnpSettings* usc = CUpnpSettings::NewL( KHnCRUidUPnPStack ); + #else + CUpnpSettings* usc = CUpnpSettings::NewL( KCRUidUPnPStack ); + #endif + CleanupStack::PushL(usc); + User::LeaveIfError(usc->Get(CUpnpSettings::KUPnPStackFileBufferSize, size)); + CleanupStack::PopAndDestroy(usc); + return size; + } + +// ---------------------------------------------------------------------------- +// CUpnpSettings::GetServerHeaderL +// --------------------------------------------------------------------------- +// +EXPORT_C HBufC8* CUpnpSettings::GetServerHeaderL() +{ + #if defined(__HN_31__) || defined(__HN_32__) + CUpnpSettings* usc = CUpnpSettings::NewL( KHnCRUidUPnPStack ); + #else + CUpnpSettings* usc = CUpnpSettings::NewL( KCRUidUPnPStack ); + #endif + CleanupStack::PushL(usc); + HBufC8* tmp = usc->GetL(CUpnpSettings::KUPnPStackCustomizedServerHeader); + CleanupStack::PopAndDestroy(usc); + return tmp; +} + +// ---------------------------------------------------------------------------- +// CUpnpSettings::GetServerHeaderL +// --------------------------------------------------------------------------- +// +HBufC8* CUpnpSettings::GetMSearchConfigurationL() +{ + #if defined(__HN_31__) || defined(__HN_32__) + CUpnpSettings* usc = CUpnpSettings::NewL( KHnCRUidUPnPStack ); + #else + CUpnpSettings* usc = CUpnpSettings::NewL( KCRUidUPnPStack ); + #endif + CleanupStack::PushL(usc); + HBufC8* tmp = usc->GetL(CUpnpSettings::KUPnPStackMSearchConfig); + CleanupStack::PopAndDestroy(usc); + return tmp; +} + +// End of File