

/* AsyncIO include */

#define APORTNAMESIZE	20
struct APort {
	struct MsgPort			*Port;
	struct AFileHandle		*First;
	char					PortName[APORTNAMESIZE];
};

struct AFileHandle {
	struct StandardPacket	Pkt;			/* Which also contains exec msg */
	struct AFileHandle		*Next,*Prev;
	struct APort			*APort;
	struct FileHandle 		*FileHandle;
	long					Status;
	long					Flags;
};

/* status values */
#define ASTATUS_FIRSTTIME	-3	/* when file is first opened */
#define ASTATUS_IDLE		-2  /* No packet is pending */
#define ASTATUS_BUSY		-1  /* Packet has been sent */

#define ASIGBIT(a)	((a)->APort->Port->mp_SigBit)
#define ARESULT1(a)	((a)->Pkt.sp_Pkt.dp_Res1)
#define ARESULT2(a) ((a)->Pkt.sp_Pkt.dp_Res2)
#define ASTATUSQUICK(a)	((a)->Status)
#define AEASYCLEANUP(a) (ADeletePort((a)->APort))

/* flag values */
#define AFLAG_NOCLOSE		0
#define AFLAG_CLOSEONCLOSE	1

