--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/stif/TestServer/src/Printqueue.cpp Tue Feb 02 01:57:15 2010 +0200
@@ -0,0 +1,282 @@
+/*
+* Copyright (c) 2009 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: This module contains implementation of CPrintQueue
+* class and TPrintQueueItem class member functions.
+*
+*/
+
+// INCLUDE FILES
+#include "PrintQueue.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ==================== LOCAL FUNCTIONS =======================================
+
+// None
+
+// ================= MEMBER FUNCTIONS =========================================
+
+
+// Initialise the queue
+const TInt TPrintQueueItem::iOffset = _FOFF( TPrintQueueItem, iSlink );
+
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: CPrintQueue
+
+ Method: NewL
+
+ Description: Constructs a print queue.
+
+ Parameters: None
+
+ Return Values: CPrintQueue* Pointer to new queue
+
+ Errors/Exceptions: Leaves if memory allocation fails.
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+CPrintQueue* CPrintQueue::NewL()
+ {
+
+ CPrintQueue* self = new( ELeave ) CPrintQueue;
+ return self;
+
+ }
+
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: CPrintQueue
+
+ Method: CPrintQueue
+
+ Description: Constructor.
+ Initialises the queue and queue iterator.
+
+ Parameters: None
+
+ Return Values: None
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+CPrintQueue::CPrintQueue():
+ iQueue( TPrintQueueItem::iOffset ),
+ iQueueIterator( iQueue )
+ {
+
+ iQueueLen = 0;
+
+ }
+
+
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: CPrintQueue
+
+ Method: ~CPrintQueue
+
+ Description: Destructor.
+
+ Deletes all items in queue. Function requires that it is called from
+ the heap to where the items are constructed.
+
+ Parameters: None
+
+ Return Values: None
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+CPrintQueue::~CPrintQueue()
+ {
+
+ TPrintQueueItem *item = NULL;
+
+ // Delete items in queue
+ while(( item = Pop() ) != NULL )
+ {
+ delete item; // TPrintQueueItem destructor does't free the memory
+ }
+
+ }
+
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: CPrintQueue
+
+ Method: Push
+
+ Description:
+
+ Push item to queue. If queue is full, does not add item to queue.
+
+ Parameters: TPrintQueueItem& anItem :in: Item to push to queue
+
+ Return Values: TInt KErrNoMemory if queue is full
+ KErrNone otherwise
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+TInt CPrintQueue::Push( TPrintQueueItem& anItem )
+ {
+
+ if( iQueueLen < KQueueMaxLen )
+ {
+ iQueue.AddLast( anItem );
+ iQueueLen++;
+
+ // Added successfully
+ return KErrNone;
+ }
+ else
+ {
+ // Do not add to queue
+ return KErrNoMemory;
+ }
+
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: CPrintQueue
+
+ Method: Pop
+
+ Description: Removes first item from queue and returns that.
+ if queue is empty, then return NULL.
+
+ Parameters: None
+
+ Return Values: TPrintQueueItem* Queue item or NULL.
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+TPrintQueueItem* CPrintQueue::Pop()
+ {
+
+ TPrintQueueItem* firstItem = NULL;
+
+ if( !iQueue.IsEmpty() )
+ {
+ firstItem = iQueue.First();
+ iQueue.Remove( *firstItem );
+ iQueueLen--;
+ }
+
+ return( firstItem );
+
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: CPrintQueue
+
+ Method: Count
+
+ Description: Returns the queue size.
+
+ Parameters: None
+
+ Return Values: TInt Count
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+TInt CPrintQueue::Count()
+ {
+
+ return( iQueueLen );
+
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: TPrintQueueItem
+
+ Method: TPrintQueueItem
+
+ Description: Constructor
+
+ C++ default constructor can NOT contain any code, that
+ might leave.
+
+ Parameters const TInt aPriority :in: Priority
+ const TStifInfoName& aText1 :in: Description field
+ const TName& aText2 :in: Text field
+
+ Return Values: None
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+TPrintQueueItem::TPrintQueueItem( const TInt aPriority,
+ const TStifInfoName& aText1,
+ const TName& aText2 )
+ {
+
+ iPriority = aPriority;
+ iData1 = aText1;
+ iData2 = aText2;
+
+ }
+
+// End of File