#ifndef __INC_POS_PDOS_NOTIFY_H
#define __INC_POS_PDOS_NOTIFY_H
/*******************************************************************
 Includes Release 24
 (C) Copyright 1995-1997 proDAD
     All Rights Reserved

 $AUT Holger Burkarth
 $DAT >>Notify.h<<   08 Jan 1997    09:40:45 - (C) ProDAD
*******************************************************************/
#ifndef __INC_POS_PDOS_DOSTYPES_H
#include <pDOS/DosTypes.h>
#endif
#ifndef __INC_POS_PEXEC_MSGPORT_H
#include <pExec/MsgPort.h>
#endif


/*----------------------------------
-----------------------------------*/
struct pOS_DosNotifyReq
{
  struct pOS_Node nr_Node;         /* for the Filesystem use */

  const CHAR     *nr_Name;         /* pOS_ConstructDosMsgXXX() vermerkt den Filename,
                                   ** pOS_DosStartNotify() setzt auf FilePart
                                   */
  const CHAR     *nr_FullName;     /* set by pDos - don't touch */
        ULONG     nr_UserData[2];  /* for applications use */
        ULONG     nr_Flags;        /* (enum pOS_DosNotifyReqFlags) */

  union {
    UBYTE nr_Reserved1[12];

    struct {
      struct pOS_MsgPort *nrmg_Port;   /* for NOTIREQF_Message => (struct pOS_DosNotifyMessage*) */
    } nr_Msg;

    struct {
      struct pOS_Task *nrsg_SigTask;   /* for NOTIREQF_Signal */
      UBYTE            nrsg_SigBit;
      UBYTE            nrsg_pad;
    } nr_Sig;
  } nr_U;


  struct pOS_DosDevice *nr_DosDev;         /* for pOS_DosEndNotify() */
  UBYTE                 nr_FSReserved[32]; /* for Filesystem use */

  UBYTE nr_Reserved2[32];
};



enum pOS_DosNotifyReqFlags /** nr_Flags **/
{
  NOTIREQB_Message=0,
  NOTIREQB_Signal,
  NOTIREQB_WaitReply,
  NOTIREQB_Initial,

  NOTIREQF_Message    =0x0001, /* send Message */
  NOTIREQF_Signal     =0x0002, /* send Signal */
  NOTIREQF_WaitReply  =0x0004,
  NOTIREQF_Initial    =0x0008, /* event, when object exists */

  NOTIREQF_HandlerMask =0xffff0000
};



/*----------------------------------
-----------------------------------*/
struct pOS_DosNotifyMessage
{
  struct pOS_Message             nm_Message;
  const struct pOS_DosNotifyReq *nm_NReq;    /* don't modify the request! */

  ULONG             nm_Class;   /* (enum pOS_DosNotifyMsgClass) */
  ULONG             nm_Code;    /* (enum pOS_DosIOReqCommands) */
};



enum pOS_DosNotifyMsgClass /** nm_Class **/
{
  NOTIMSGCL_NReq =0x40000000
};

#endif
