#ifndef __IRSTREAM_H
#define __IRSTREAM_H
#include "IrDATypes.h"
#include "IrDALog.h"
class TIrEvent;
class CList;
class TIrGlue;
class TIrStream : public OSObject
{
OSDeclareAbstractStructors(TIrStream);
public:
Boolean Init(TIrGlue *irda, EventTraceCauseDesc *trace = nil, UInt16 index = 0);
void free(void);
IrDAErr EnqueueEvent(TIrEvent *eventBlock);
virtual void NextState(ULong event) = 0;
static void RunQueue();
TIrEvent *GetCurrentEvent();
protected:
TIrGlue *fIrDA;
private:
static void DequeueEvent();
static TIrEvent *fCurrentEvent; static TIrEvent *fNextEvent; static CList *fPendingEventsList;
#if (hasTracing > 0 && hasIrStreamTracing > 0)
EventTraceCauseDesc * fTraceArray; UInt32 fTraceIndex; #endif
};
inline TIrEvent *TIrStream::GetCurrentEvent(void) { return fCurrentEvent; }
#endif