upnpmediaserver/avobjects/src/upnpbrowsecriteria.cpp
changeset 0 7f85d04be362
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpmediaserver/avobjects/src/upnpbrowsecriteria.cpp	Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,225 @@
+/** @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:  UPnPBrowseCriteria implementation
+*
+*/
+
+
+// INCLUDE FILES
+#include "upnpbrowsecriteria.h"
+#include "upnpattribute.h"
+#include "upnpobject.h"
+
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CUpnpBrowseCriteria::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CUpnpBrowseCriteria::ConstructL(const TDesC8& aFilter)
+{
+    iFilter = aFilter.AllocL();
+}
+
+// -----------------------------------------------------------------------------
+// CUpnpBrowseCriteria::NewLC
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CUpnpBrowseCriteria* CUpnpBrowseCriteria::NewLC(const TDesC8& aFilter)
+{
+    CUpnpBrowseCriteria* self = new( ELeave ) CUpnpBrowseCriteria;
+    CleanupStack::PushL( self );
+    self->ConstructL(aFilter);
+    return self;
+}
+
+// -----------------------------------------------------------------------------
+// CUpnpBrowseCriteria::NewLC
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CUpnpBrowseCriteria* CUpnpBrowseCriteria::NewL(const TDesC8& aFilter)
+{
+    CUpnpBrowseCriteria* self = NewLC(aFilter);
+    CleanupStack::Pop(self);
+    return self;
+}  
+  
+// -----------------------------------------------------------------------------
+// CUpnpBrowseCriteria::CUpnpBrowseCriteria
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CUpnpBrowseCriteria::CUpnpBrowseCriteria()
+    {
+    }
+
+// Destructor
+CUpnpBrowseCriteria::~CUpnpBrowseCriteria()
+    {
+    delete iFilter;
+    }
+
+// -----------------------------------------------------------------------------
+// CUpnpBrowseCriteria::SetFilterL
+// Sets filter.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CUpnpBrowseCriteria::SetFilterL( const TDesC8& aFilter )
+    {
+    HBufC8* tmp = aFilter.AllocL();
+    delete iFilter;
+    iFilter = tmp;    
+    }
+    
+// -----------------------------------------------------------------------------
+// CUpnpBrowseCriteria::GetFilter
+// Returns filter. 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TDesC8& CUpnpBrowseCriteria::Filter() const
+    {
+    return *iFilter;
+    }
+    
+// -----------------------------------------------------------------------------
+// CUpnpBrowseCriteria::SetRequestCount
+// Sets request count.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CUpnpBrowseCriteria::SetRequestedCount( TInt aRequestedCount )
+    {
+    iRequestedCount=aRequestedCount;
+    }
+    
+// -----------------------------------------------------------------------------
+// CUpnpBrowseCriteria::RequestedCount
+// Returns requested count
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CUpnpBrowseCriteria::RequestedCount() const
+    {
+    return iRequestedCount;
+    }
+    
+// -----------------------------------------------------------------------------
+// CUpnpBrowseCriteria::SetStartingIndex
+// Sets starting index.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CUpnpBrowseCriteria::SetStartingIndex( TInt aStartingIndex)
+    {
+    iStartingIndex=aStartingIndex;
+    }
+    
+// -----------------------------------------------------------------------------
+// CUpnpBrowseCriteria::StartingIndex
+// Returns starting index
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CUpnpBrowseCriteria::StartingIndex() const
+    {
+    return iStartingIndex;
+    }
+    
+// -----------------------------------------------------------------------------
+// CUpnpBrowseCriteria::CopyL
+// Copies the content from parameter CUpnpElement to this
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CUpnpBrowseCriteria::CopyL( const CUpnpBrowseCriteria& aBrowseCriteria )
+    {
+    CBufFlat* buffer = CBufFlat::NewL( sizeof( aBrowseCriteria ) );
+    CleanupStack::PushL( buffer );
+    RBufWriteStream outStream;
+    outStream.Open( *buffer );
+    CleanupClosePushL( outStream );
+    RBufReadStream inStream;
+    inStream.Open( *buffer );
+    CleanupClosePushL( inStream );
+    aBrowseCriteria.ExternalizeL( outStream );
+    InternalizeL( inStream );	
+    CleanupStack::PopAndDestroy( 3 );   // inStream && outStream && buffer
+    }
+    
+// -----------------------------------------------------------------------------
+// CUpnpBrowseCriteria::ExternalizeL
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CUpnpBrowseCriteria::ExternalizeL( RWriteStream& aStream ) const
+    {
+        aStream << *iFilter;
+        aStream.WriteInt32L(RequestedCount());
+        aStream.WriteInt32L(StartingIndex());
+    }
+        
+// -----------------------------------------------------------------------------
+// CUpnpBrowseCriteria::InternalizeL
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CUpnpBrowseCriteria::InternalizeL( RReadStream& aStream )
+    {
+     
+    delete iFilter;
+    iFilter = NULL;
+    iFilter = HBufC8::NewL( aStream,KMaxUpnpObjStringLen);
+    
+    iRequestedCount=aStream.ReadInt32L();
+    iStartingIndex=aStream.ReadInt32L();
+    }
+// -----------------------------------------------------------------------------
+// CUpnpBrowseCriteria::ToDes8L
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//	
+EXPORT_C HBufC8* CUpnpBrowseCriteria::ToDes8L() const
+{
+    // serialize object
+    CBufFlat* buf = CBufFlat::NewL(KDefBufferGranularity);
+    CleanupStack::PushL(buf);
+    RBufWriteStream stream(*buf);
+    CleanupClosePushL(stream);
+    
+    stream << *this;
+    
+    // create heap descriptor
+    HBufC8* hbuf = HBufC8::NewLC(buf->Size());
+    TPtr8 ptr(hbuf->Des());
+    buf->Read(0, ptr, buf->Size());
+    
+    // clean up
+    CleanupStack::Pop(hbuf);
+    CleanupStack::PopAndDestroy(&stream);
+    CleanupStack::PopAndDestroy(buf);
+    
+    return hbuf;
+}
+//  End of File