Queue.h
Go to the documentation of this file.
/* -*- C++ -*- */
/****************************************************************************
** Copyright (c) 2001-2014
**
** This file is part of the QuickFIX FIX Engine
**
** This file may be distributed under the terms of the quickfixengine.org
** license as defined by quickfixengine.org and appearing in the file
** LICENSE included in the packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.quickfixengine.org/LICENSE for licensing information.
**
** Contact ask@quickfixengine.org if any conditions of this licensing are
** not clear to you.
**
****************************************************************************/
#ifndef FIX_QUEUE_H
#define FIX_QUEUE_H
#include "Utility.h"
#include "Event.h"
#include "Mutex.h"
#include <queue>
namespace FIX
{
template < typename T > class Queue
{
public:
void push( const T& value )
{
Locker locker( m_mutex );
m_queue.push( value );
signal();
}
bool pop( T& value )
{
Locker locker( m_mutex );
if ( !m_queue.size() ) return false;
value = m_queue.front();
m_queue.pop();
return true;
}
int size()
{
Locker locker( m_mutex );
return m_queue.size();
}
void wait( double s )
{
m_event.wait( s );
}
void signal()
{
m_event.signal();
}
private:
Event m_event;
Mutex m_mutex;
std::queue < T > m_queue;
};
}
#endif
FIX::Queue::m_event
Event m_event
Definition: Queue.h:69
Utility.h
FIX::Queue::signal
void signal()
Definition: Queue.h:63
FIX
Definition: Acceptor.cpp:34
FIX::Queue::size
int size()
Definition: Queue.h:52
FIX::Locker
Locks/Unlocks a mutex using RAII.
Definition: Mutex.h:95
FIX::Queue::m_mutex
Mutex m_mutex
Definition: Queue.h:70
Event.h
FIX::Queue::m_queue
std::queue< T > m_queue
Definition: Queue.h:71
FIX::Event::signal
void signal()
Definition: Event.h:59
FIX::Mutex
Portable implementation of a mutex.
Definition: Mutex.h:30
FIX::Event
Portable implementation of an event/conditional mutex.
Definition: Event.h:36
Mutex.h
FIX::Queue::wait
void wait(double s)
Definition: Queue.h:58
FIX::Queue
A thread safe monitored queue.
Definition: Queue.h:33
FIX::Queue::push
void push(const T &value)
Definition: Queue.h:36
FIX::Event::wait
void wait(double s)
Definition: Event.h:70
FIX::Queue::pop
bool pop(T &value)
Definition: Queue.h:43