////////////////////////////////////////////////////////////
//
//     	Declaration of a class
//	AEvent
//
//      Copyright 2001 Alexander Liss
//
//
////////////////////////////////////////////////////////////

#ifndef __EVENT_H__
#define __EVENT_H__

#include "ACondition.h"
#include "AMutex.h"

class AEvent
{
friend int AWait(AEvent&);
friend int AWait(AEvent&,unsigned timeout);
AEvent(const AEvent&);
AEvent& operator=(const AEvent&);
public:

	AEvent(){}
	
    	int signal()
    	{ if(condition.status || mutex.status) return -1;
    	  return condition.signal(); }
    	
	int broadcast()
	{ if(condition.status || mutex.status) return -1;
	  return condition.broadcast(); }

private:
	ACondition condition;
	AMutex mutex;
};


#endif