hti/PC_Tools/HTIGateway/HtiGateway/inc/safequeue.h
changeset 38 169364e7e4b4
parent 34 7259cf1302ad
child 45 185201be11b0
--- a/hti/PC_Tools/HTIGateway/HtiGateway/inc/safequeue.h	Tue Jul 06 16:05:13 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,218 +0,0 @@
-/*
-* 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 file contains headers of SafeQueue template class.
-*/
-
-#ifndef SAFEQUEUE_H
-#define SAFEQUEUE_H
-
-#include "sync.h"
-
-//STL
-#pragma warning (push, 3)
-#pragma warning( disable : 4702 ) // Unreachable code warning
-#pragma warning( disable : 4290 ) // C++ exception specification ignored except to indicate a function is not __declspec(nothrow)
-#include <queue>
-
-
-
-
-using namespace std;
-class Data;
-
-//**********************************************************************************
-// Template Class SafeQueue
-//
-// This template class implements a thread safe queue with generic types
-//**********************************************************************************
-
-template <class T>
-class SafeQueue : private queue<T>,
-				  private Mutex,
-				  private Semaphore
-{
-public:
-    typedef typename queue<T>::size_type size_type;
-    SafeQueue();
-	~SafeQueue();
-	/*
-	 * Adds a new element to the end of the queue
-	 */	
-	void push(const T& val);
-	/*
-	 * Removes the next element in the queue
-	 */	
-	void pop(void);
-	/*
-	 * Returns whether the queue is empty or not
-	 */	
-	bool empty(void) const;
-	/*
-	 * Returns a reference to the last element in the queue
-	 */	
-	T& back(DWORD timeout = INFINITE) throw (TimeoutException);
-	/*
-	 * Returns a constant reference to the last element in the queue
-	 */	
-	const T& back(DWORD timeout = INFINITE) const throw (TimeoutException);
-	/*
-	 * Returns a reference to the next element in the queue
-	 */	
-	T& front(DWORD timeout = INFINITE) throw (TimeoutException);
-	/*
-	 * Returns a constant reference to the next element in the queue
-	 */	
-	const T& front(DWORD timeout = INFINITE) const throw (TimeoutException);
-	/*
-	 * Returns the number of elements in the queue
-	 */	
-	typename SafeQueue<T>::size_type size(void) const;
-	/*
-	 * This method is used to pop all of the elements in queue and return them in single Data object
-	 */
-	T& popAll(DWORD timeout = INFINITE) throw (TimeoutException);
-};
-
-template <class T>
-SafeQueue<T>::SafeQueue()
-{
-}
-
-template <class T>
-SafeQueue<T>::~SafeQueue()
-{
-}
-
-/*
- * Adds a new element to the end of the queue
- */
-template <class T>
-void SafeQueue<T>::push(const T& val)
-{
-	Mutex::Lock();
-	queue<T>::push(val);
-	Mutex::Unlock();
-	Semaphore::Notify();
-}
-
-/*
- * Removes the next element in the queue
- */
-template <class T>
-void SafeQueue<T>::pop(void)
-{
-	Mutex::Lock();
-	queue<T>::pop();
-	Mutex::Unlock();
-}
-
-/*
- * Returns whether the queue is empty or not
- */
-template <class T>
-bool SafeQueue<T>::empty(void) const
-{
-	const_cast<SafeQueue<T>*>(this)->Lock();
-	bool value = queue<T>::empty();
-	const_cast<SafeQueue<T>*>(this)->Unlock();
-	return value;
-}
-
-/*
- * Returns a reference to the last element in the queue
- */
-template <class T>
-T& SafeQueue<T>::back(DWORD timeout)
-	throw (TimeoutException)
-{
-	if (Semaphore::Wait(timeout) == WAIT_TIMEOUT)
-	{
-		throw TimeoutException("queue back timed out");
-	}
-	Mutex::Lock();
-	T& value = queue<T>::back();
-	Mutex::Unlock();
-	return value;
-}
-
-/*
- * Returns a constant reference to the last element in the queue
- */
-template <class T>
-const T& SafeQueue<T>::back(DWORD timeout) const
-	throw (TimeoutException)
-{
-	if (const_cast<SafeQueue<T>*>(this)->Wait(timeout) == WAIT_TIMEOUT)
-	{
-		throw TimeoutException("queue back timed out");;
-	}
-	const_cast<SafeQueue<T>*>(this)->Lock();
-	const T& value = queue<T>::back();
-	const_cast<SafeQueue<T>*>(this)->Unlock();
-	return value;
-}
-
-/*
- * Returns a reference to the next element in the queue
- */
-template <class T>
-T& SafeQueue<T>::front(DWORD timeout)
-	throw (TimeoutException)
-{
-	if (Semaphore::Wait(timeout) == WAIT_TIMEOUT)
-	{
-		throw TimeoutException("queue front timed out");
-	}
-	Mutex::Lock();
-	T& value = queue<T>::front();
-	Mutex::Unlock();
-	return value;
-}
-
-/*
- * Returns a constant reference to the next element in the queue
- */
-template <class T>
-const T& SafeQueue<T>::front(DWORD timeout) const
-	throw (TimeoutException)
-{
-	if (const_cast<SafeQueue<T>*>(this)->Wait(timeout) == WAIT_TIMEOUT)
-	{
-		throw TimeoutException("queue front timed out");
-	}
-	const_cast<SafeQueue<T>*>(this)->Lock();
-	const T& value = queue<T>::front();
-	const_cast<SafeQueue<T>*>(this)->Unlock();
-	return value;
-}
-
-/*
- * Returns the number of elements in the queue
- */
-template <class T>
-typename SafeQueue<T>::size_type SafeQueue<T>::size(void) const
-{
-	const_cast<SafeQueue<T>*>(this)->Lock();
-	queue<T>::size_type value = queue<T>::size();
-	const_cast<SafeQueue<T>*>(this)->Unlock();
-	return value;
-}
-
-
-#pragma warning (pop)
-
-#endif
-
-// End of the file
\ No newline at end of file