/***************************************************************************
  *
  * File Name: ./netware/nitq.h
  *
  * Copyright (C) 1993-1996 Hewlett-Packard Company.  
  * All rights reserved.
  *
  * 11311 Chinden Blvd.
  * Boise, Idaho  83714
  *
  * This is a part of the HP JetAdmin Printer Utility
  *
  * This source code is only intended as a supplement for support and 
  * localization of HP JetAdmin by 3rd party Operating System vendors.
  * Modification of source code cannot be made without the express written
  * consent of Hewlett-Packard.
  *
  *	
  * Description: 
  *
  * Author:  Name 
  *        
  *
  * Modification history:
  *
  *     date      initials     change description
  *
  *   mm-dd-yy    MJB     	
  *
  *
  *
  *
  *
  *
  ***************************************************************************/

/*      COPYRIGHT (c) 1989 by Novell, Inc.  All Rights Reserved.   */
#ifndef _NITQ_H
   #define _NITQ_H
   /*_____________________________________________________________________
      Definitions and structures for the Netware API Queue Services logic
     ____________________________________________________________________*/

   #ifndef _PROLOG_H
      #include ".\prolog.h"
   #endif

   typedef struct
      {
      BYTE  reserved[10];
      DWORD clientStation;
      DWORD clientTaskNumber;
      DWORD clientIDNumber;
      DWORD targetServerIDNumber;
      BYTE  targetExecutionTime[6];
      BYTE  jobEntryTime[6];
      DWORD jobNumber;
      WORD  jobType;
      WORD  jobPosition;
      WORD  jobControlFlags;
      char  jobFileName[14];
      BYTE  jobFileHandle[6];
      DWORD serverStation;
      DWORD serverTaskNumber;
      DWORD serverIDNumber;
      char  textJobDescription[50];
      BYTE  clientRecordArea[152];
      } JobStruct;

   /* Queue Job Control Flags */

   #define QF_OPERATOR_HOLD    0x80
   #define QF_USER_HOLD        0x40
   #define QF_ENTRY_OPEN       0x20
   #define QF_SERVICE_RESTART  0x10
   #define QF_AUTO_START       0x08

   /* Queue Status Flags */

   #define QS_CANT_ADD_JOBS        0x01
   #define QS_SERVERS_CANT_ATTACH  0x02
   #define QS_CANT_SERVICE_JOBS    0x04

   /* Error return codes */

   #ifndef DIRECTORY_FULL
      #define DIRECTORY_FULL  153
   #endif

   #define Q_ERROR         208
   #define NO_QUEUE        209
   #define NO_Q_SERVER     210
   #define NO_Q_RIGHTS     211
   #define Q_FULL          212
   #define NO_Q_JOB        213
   #define NO_JOB_RIGHTS   214
   #define Q_SERVICING     215
   #define STN_NOT_SERVER  217
   #define Q_NOT_ACTIVE    216
   #define Q_HALTED        218
   #define MAX_Q_SERVERS   219

#ifdef PROTOTYPE

extern WORD FAR PASCAL AbortServicingQueueJobAndFile(
                                       DWORD  queueID,
                                       DWORD  jobNumber,
                                       int    fileHandle );

extern WORD FAR PASCAL AttachQueueServerToQueue( DWORD queueID );

extern WORD FAR PASCAL ChangeQueueJobEntry(
                                       DWORD	      queueID,
                                       JobStruct   far *job );

extern WORD FAR PASCAL ChangeQueueJobPosition(
                                          DWORD queueID,
                                          DWORD jobNumber,
                                          BYTE  newPosition );

extern WORD FAR PASCAL ChangeToClientRights(
                                          DWORD queueID,
                                          DWORD jobNumber );

extern WORD FAR PASCAL CloseFileAndAbortQueueJob(
                                       DWORD queueID,
                                       DWORD jobNumber,
                                       int   fileHandle );

extern WORD FAR PASCAL CloseFileAndStartQueueJob(
                                             DWORD queueID,
                                             DWORD jobNumber,
                                             int   fileHandle );

extern WORD FAR PASCAL CreateQueue(
                                 char  far *queueName,
                                 WORD  queueType,
                                 BYTE  directoryHandle,
                                 char  far *pathName,
                                 DWORD far *queueID );

extern WORD FAR PASCAL CreateQueueJobAndFile(
                                          DWORD       queueID,
                                          JobStruct   far *job,
                                          int         far *fileHandle );

extern WORD FAR PASCAL DestroyQueue( DWORD   queueID );

extern WORD FAR PASCAL DetachQueueServerFromQueue( DWORD  queueID );

extern WORD FAR PASCAL FinishServicingQueueJobAndFile(
                                          DWORD queueID,
                                          DWORD jobNumber,
                                          DWORD charge,
                                          int   fileHandle );

extern WORD FAR PASCAL GetQueueJobEntrysFileSize(
                                             WORD	connectionID,
                                             DWORD	queueID,
                                             DWORD	jobNumber,
                                             DWORD far *fileSize );

extern WORD FAR PASCAL GetQueueJobList(
                                    DWORD queueID,
                                    DWORD far *jobCount,
                                    DWORD far *jobNumberList,
                                    DWORD maxJobNumbers );

extern WORD FAR PASCAL GetQueueJobsFileSize(
                                        DWORD   queueID,
                                        DWORD   jobNumber,
                                        DWORD   far *fileSize );

extern WORD FAR PASCAL ReadQueueJobEntry(
                                       DWORD	      queueID,
                                       DWORD       jobNumber,
                                       JobStruct   far *job );

extern WORD FAR PASCAL ReadQueueCurrentStatus(
                                          DWORD queueID,
                                          DWORD far *queueStatus,
                                          DWORD far *currentEntries,
                                          DWORD far *currentServers,
                                          DWORD far serverIDList[25],
                                          DWORD far serverStationList[25],
                                          DWORD maxConnections );

extern WORD FAR PASCAL ReadQueueServerCurrentStatus(
                                    DWORD  queueID,
                                    DWORD  serverID,
                                    DWORD  serverStation,
                                    BYTE   far serverStatusRecord[64] );

extern WORD FAR PASCAL RemoveJobFromQueue(
                                       DWORD queueID,
                                       DWORD jobNumber );

extern WORD FAR PASCAL RestoreQueueServerRights( void );

extern WORD FAR PASCAL ServiceQueueJobAndOpenFile(
                                             DWORD     queueID,
                                             WORD      targetJobType,
                                             JobStruct far *job,
                                             int       far *fileHandle );

extern WORD FAR PASCAL SetQueueCurrentStatus(
                                          DWORD queueID,
                                          DWORD queueStatus );

extern WORD FAR PASCAL SetQueueServerCurrentStatus(
                                       DWORD  queueID,
                                       BYTE   far serverStatusRecord[64] );
#else

extern WORD FAR PASCAL AbortServicingQueueJobAndFile();
extern WORD FAR PASCAL AttachQueueServerToQueue();
extern WORD FAR PASCAL ChangeQueueJobEntry();
extern WORD FAR PASCAL ChangeQueueJobPosition();
extern WORD FAR PASCAL ChangeToClientRights();
extern WORD FAR PASCAL CloseFileAndAbortQueueJob();
extern WORD FAR PASCAL CloseFileAndStartQueueJob();
extern WORD FAR PASCAL CreateQueue();
extern WORD FAR PASCAL CreateQueueJobAndFile();
extern WORD FAR PASCAL DestroyQueue();
extern WORD FAR PASCAL DetachQueueServerFromQueue();
extern WORD FAR PASCAL FinishServicingQueueJobAndFile();
extern WORD FAR PASCAL GetQueueJobEntrysFileSize();
extern WORD FAR PASCAL GetQueueJobsFileSize();
extern WORD FAR PASCAL GetQueueJobList();
extern WORD FAR PASCAL ReadQueueJobEntry();
extern WORD FAR PASCAL ReadQueueCurrentStatus();
extern WORD FAR PASCAL ReadQueueServerCurrentStatus();
extern WORD FAR PASCAL RemoveJobFromQueue();
extern WORD FAR PASCAL RestoreQueueServerRights();
extern WORD FAR PASCAL ServiceQueueJobAndOpenFile();
extern WORD FAR PASCAL SetQueueCurrentStatus();
extern WORD FAR PASCAL SetQueueServerCurrentStatus();

#endif
#endif