#ifndef __IRIASCLIENT_H
#define __IRIASCLIENT_H
#include "IrDATypes.h"
#include "IrStream.h"
#include "IrEvent.h"
class TIrGlue;
class TLSAPConn;
class CBufferSegment;
class TIASAttribute;
enum IASClientStates
{
kIrIASClientDisconnected,
kIrIASClientConnected
};
enum IASClientReceiveStates
{
kIASClientReceiveReply,
kIASClientReceiveWaitFinal
};
#define kIASClientBufferSize 128
class TIASClient : public TIrStream
{
OSDeclareDefaultStructors(TIASClient);
public:
static TIASClient * tIASClient(TIrGlue* irda, TIrStream* client);
void free();
Boolean Init(TIrGlue* irda, TIrStream* client);
private:
void NextState(ULong event);
void HandleDisconnectedStateEvent(ULong event);
void HandleConnectedStateEvent(ULong event);
IrDAErr SendRequest();
void ParseInput();
IrDAErr ParseReply();
void GetStart();
void PutStart();
void LookupComplete(IrDAErr result);
UByte fState;
UByte fReceiveState;
TIrStream *fClient; TIrLookupRequest *fLookupRequest;
TLSAPConn *fLSAPConn; TIrEvent *fRequestReply; TIASAttribute *fAttribute;
CBufferSegment *fGetPutBuffer;
};
#endif // __IRIASCLIENT_H