diff -r 7fdc9a71d314 -r 8ad140f3dd41 stif/TestServer/src/Printqueue.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/stif/TestServer/src/Printqueue.cpp Wed Oct 13 16:17:58 2010 +0300 @@ -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