upnpframework/upnpcommand/inc/upnpfilepipe.h
changeset 0 7f85d04be362
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpframework/upnpcommand/inc/upnpfilepipe.h	Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,134 @@
+/*
+* Copyright (c) 2007 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:  Header file for the CUpnpFilePipe class.
+*
+*/
+
+
+#ifndef UPNP_FILE_PIPE_H
+#define UPNP_FILE_PIPE_H
+
+// INCLUDES
+#include <e32base.h>
+
+/**
+* This class works as a pipe-like storage class.
+*
+* @since S60 3.2
+*/
+class CUpnpFilePipe : public CBase
+    {
+    public: // Instantiation methods
+
+        /**
+         * Creates a new file pipe with unlimited length.
+         *
+         * @since S60 3.2
+         * @return instance of this class.
+         */
+        static CUpnpFilePipe* NewL();
+
+        /**
+         * Creates a new file pipe with a set length. In this case, when the
+         * pipe if full and client tries to push more files into the pipe, 
+         * the newest file in the pipe (the last file pushed into the pipe)
+         * will be replaced.
+         *
+         * @since S60 3.2
+         * @param aMaxSize (TInt) maximum length of the pipe.
+         * @return instance of this class.
+         */
+        static CUpnpFilePipe* NewL( TInt aMaxSize );
+
+        /**
+         * Destructor.
+         */
+        virtual ~CUpnpFilePipe();
+
+    public: // Business logic methods
+
+        /**
+         * Pushes one file into the pipe.
+         *
+         * Leaves if the given parameter is not valid.
+         *
+         * @since S60 3.2
+         * @param aParamvalue (const TDesC&) filename
+         */
+        void PushL( const TDesC& aParameter );
+
+        /**
+         * Returns a file from the queue at given index
+         *
+         * @param aIndex the index at queue
+         * @return reference to the file name
+         */
+        const TDesC& FileAt( TInt aIndex );
+
+        /**
+         * Empties the pipe.
+         *
+         * @since S60 3.2
+         */
+        void Reset();
+
+        /**
+         * Returns the count of the items in the pipe.
+         *
+         * @since S60 3.2
+         * @return TInt the item count
+         */
+        TInt Count();
+
+        /**
+         * returns the entire pipe as an array
+         */
+        RPointerArray<TDesC>& AsArray();
+
+    private: // Private business logic methods
+
+        /**
+         * Removes the newest file from the pipe.
+         *
+         * @since S60 3.2
+         */
+        void RemoveNewestFileFromPipe();
+
+    private: // Private construction methods
+
+        /**
+         * Perform the first phase of two phase construction.
+         *
+         * @since S60 3.2
+         * @param aMaxSize (TInt) maximum length of the pipe.
+         */
+        CUpnpFilePipe( TInt aMaxSize );
+
+    private: // Data members
+
+        /**
+         * The array storing the file pipe files (filenames). Owned.
+         */
+        RPointerArray<TDesC>  iValues;
+
+        /**
+         * The maximum size of the pipe. 0 if unlimited.
+         */
+        TInt                    iMaxSize;
+
+    };
+
+#endif // UPNP_FILE_PIPE_H
+
+// End of File
\ No newline at end of file