upnp/upnpstack/serviceframework/src/upnpsettings.cpp
changeset 0 f5a58ecadc66
--- /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 <centralrepository.h>
+#include "upnpstring.h"
+#include "upnpcompvariant.hrh"
+#include <f32file.h> 
+
+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