OpenWalnut  1.4.0
WCondition.cpp
00001 //---------------------------------------------------------------------------
00002 //
00003 // Project: OpenWalnut ( http://www.openwalnut.org )
00004 //
00005 // Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS
00006 // For more information see http://www.openwalnut.org/copying
00007 //
00008 // This file is part of OpenWalnut.
00009 //
00010 // OpenWalnut is free software: you can redistribute it and/or modify
00011 // it under the terms of the GNU Lesser General Public License as published by
00012 // the Free Software Foundation, either version 3 of the License, or
00013 // (at your option) any later version.
00014 //
00015 // OpenWalnut is distributed in the hope that it will be useful,
00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018 // GNU Lesser General Public License for more details.
00019 //
00020 // You should have received a copy of the GNU Lesser General Public License
00021 // along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
00022 //
00023 //---------------------------------------------------------------------------
00024 
00025 #include "WCondition.h"
00026 
00027 WCondition::WCondition()
00028 {
00029     // initialize members
00030 }
00031 
00032 WCondition::~WCondition()
00033 {
00034     // cleanup
00035 }
00036 
00037 void WCondition::wait() const
00038 {
00039     // since Boost 1.54, we need to explicitly lock the mutex prior to wait.
00040     boost::unique_lock<boost::shared_mutex> lock( m_mutex );
00041     m_condition.wait( m_mutex );
00042 }
00043 
00044 void WCondition::notify()
00045 {
00046     signal_ConditionFired();
00047     m_condition.notify_all();
00048 }
00049 
00050 boost::signals2::connection WCondition::subscribeSignal( t_ConditionNotifierType notifier ) const
00051 {
00052     return signal_ConditionFired.connect( notifier );
00053 }
00054