|
|
/* * $Id: condition_h.html,v 1.6 2001/11/30 14:02:34 dreibh Exp $ * * SCTP implementation according to RFC 2960. * Copyright (C) 1999-2001 by Thomas Dreibholz * * Realized in co-operation between Siemens AG * and University of Essen, Institute of Computer Networking Technology. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * There are two mailinglists available at www.sctp.de which should be used for * any discussion related to this implementation. * * Contact: discussion@sctp.de * dreibh@exp-math.uni-essen.de * * Purpose: Condition * */ #ifndef CONDITION_H #define CONDITION_H #include "tdsystem.h" #include "synchronizable.h" namespace Coral { /** * This class realizes a condition variable. * @short Condition * @author Thomas Dreibholz (dreibh@exp-math.uni-essen.de) * @version 1.0 * @see Synchronizable * @see Thread */ class Condition : public Synchronizable { // ====== Constructor/Destructor ========================================= public: /** * Constructor. * * @param name Name. * @param parentCondition Parent condition. */ Condition(const char* name = "Condition", Condition* parentCondition = NULL); /** * Destructor. */ ~Condition(); // ====== Condition variable functions =================================== /** * Fire condition: One thread waiting for this variable will be * resumed. */ inline void signal(); /** * Broadcast condition: All threads waiting for this variable will be * resumed. */ inline void broadcast(); /** * Check, if condition has been fired. * * @return true, if condition has been fired; false otherwise. */ inline bool fired(); /** * Wait for condition without timeout. */ inline void wait(); /** * Wait for condition with timeout. * * @param microseconds Timeout in microseconds. * @return true, if condition has been received; false for timeout. */ bool timedWait(const card64 microseconds); // ====== Parent condition management ==================================== /** * Add parent condition. * * @param parentCondition Parent condition to be added. */ void addParent(Condition* parentCondition); /** * Remove parent condition. * * @param parentCondition Parent condition to be removed. */ void removeParent(Condition* parentCondition); // ====== Private data =================================================== private: set<Condition*> ParentSet; pthread_cond_t ConditionVariable; bool Fired; }; } #include "condition.icc" #endif
Generated by: dreibh@kappes on Fri Nov 30 14:03:21 2001, using kdoc 2.0a53. |