// Copyright (C) 2001 Dominic Letourneau
#ifndef _SLEEP_CC_
#define _SLEEP_CC_
#include "Node.h"
#include "Object.h"
#include "rtc.h"
//#include <unistd.h>
using namespace std;
namespace FD {
class Sleep;
DECLARE_NODE(Sleep)
/*Node
*
* @name Sleep
* @category Flow
* @description Sleep a certain amount of time.
*
* @output_name VALUE
* @output_description Always return TRUE.
*
* @parameter_name SECONDS
* @parameter_description Sleep x seconds.
* @parameter_type float
*
END*/
class Sleep : public Node {
private:
int outputID;
float m_time;
RTCUser *rtc;
public:
Sleep(string nodeName, ParameterSet params)
: Node(nodeName, params)
{
m_time = dereference_cast<float>(parameters.get("SECONDS"));
outputID = addOutput("VALUE");
rtc=RTCTimer::create(m_time);
}
~Sleep() {RTCTimer::destroy(rtc);}
ObjectRef getOutput(int output_id, int count)
{
//sleeping
//usleep(m_time);
rtc->wait();
if (output_id==outputID) return TrueObject;
else throw new NodeException (this, "Sleep: Unknown output id", __FILE__, __LINE__);
}
};
}//namespace FD
#endif
syntax highlighted by Code2HTML, v. 0.9.1