/*======================================================================================//
|                                                                                       //
|Copyright (c) 1998, 1999  Sequent Computer Systems, Incorporated                       //
|                                                                                       //
|Description:                                                                           //
|                                                                                       //
|---------------------------------------------------------------------------------------//            
|  This file is the ProcCon header file showing 'on the wire' data for clients/service  //
|---------------------------------------------------------------------------------------//            
|                                                                                       //
|Created:                                                                               //
|                                                                                       //
|   Jarl McDonald 07-98                                                                 //
|                                                                                       //
|Revision History:                                                                      //
|                                                                                       //
|=======================================================================================*/

// Requests flow from clients to the service.  They contain at most one API data item.
typedef struct _PCRequest {
#pragma pack(1)
   PCINT32 reqSignature;       // sanity check signature
   PCINT32 reqSeq;             // requestor sequence number
   BYTE    reqOp;              // requested operation: list, add, replace, delete, etc.
   BYTE    reqType;            // requested data type: name rule, mgmt rule, mgmt detail, etc.
   BYTE    reqVersion;         // expected data version code: to support structure changes over time
   BYTE    future[5];          // fill to 8-byte bdry
   PCINT32 reqFlags;           // flags for additional information
   PCINT32 reqUpdCtr;          // requestor's update counter from prior retrieval operation.
   PCINT64 reqIndex;           // requestor's insertion point, etc.
   PCINT32 reqCount;           // requestor's returned data item maximum count
   PCINT32 reqFirst;           // requestor's first data item retrieval index
   PCINT32 maxReply;           // max user data in reply (excludes reply header)
   PCINT16 reqDataLen;         // length of the single data item that follows or 0 if none.  In bytes.
   BYTE    reqFuture[32];
   BYTE    reqData[2];         // data item -- one of the API structures
#pragma pack()
} PCRequest;

// Responses flow from the service to clients.  They may contain many data items.
typedef struct _PCResponse {
#pragma pack(1)
   PCINT32 rspReqSignature;    // echo of sanity check signature
   PCINT32 rspReqSeq;          // echo of requestor sequence number
   BYTE    rspReqOp;           // echo of original request operation
   BYTE    rspReqType;         // echo of original request data type
   BYTE    rspReqVersion;      // echo of original data version code
   BYTE    rspVersion;         // response version: indicates version of data items returned
   BYTE    rspResult;          // operation result: success, failure, addl info, etc.
   BYTE    future[3];          // fill to 8-byte bdry
   PCINT32 rspFlags;           // flags for additional information
   PCINT32 rspError;           // NT or PC error resulting from the request if rspResult shows error
   PCINT32 rspTimeStamp;       // time stamp associated with the data returned
   PCINT32 rspUpdCtr;          // Update counter to use on future related operations.
   PCINT16 rspDataItemCount;   // number of data items that follow or 0.
   PCINT16 rspDataItemLen;     // length of each data item that follows or 0.  In bytes.
   BYTE    rspFuture[32];
   BYTE    rspData[2];         // data items -- an array of one of the API structures
#pragma pack()
} PCResponse;

typedef enum _PCReqOp {
   PCOP_GET    = 1,
   PCOP_ADD    = 2,
   PCOP_REP    = 3,
   PCOP_DEL    = 4,
   PCOP_ORD    = 5,
   PCOP_CTL    = 6,          
   PCOP_KILL   = 7,          
} PCReqOp;

typedef enum _PCReqRspType {
   PCTYPE_NAMERULE    = 1,
   PCTYPE_JOBSUMMARY  = 2,
   PCTYPE_PROCSUMMARY = 3,
   PCTYPE_PROCLIST    = 4,
   PCTYPE_JOBLIST     = 5,
   PCTYPE_PROCDETAIL  = 6,
   PCTYPE_JOBDETAIL   = 7,
   PCTYPE_SERVERINFO  = 8,
   PCTYPE_SERVERPARMS = 9,
   PCTYPE_CONTROL     = 77,
} PCReqRspType;

typedef enum _PCRspResult {
   PCRESULT_SUCCESS  = 0,
   PCRESULT_NTERROR  = 1,
   PCRESULT_PCERROR  = 2,
} PCRspResult;

typedef enum _PCReqFlags {
   PCREQFLAG_DOLIST  = 0x00000001,                 // perform a list op (based on data) after doing op
} PCReqFlags;

typedef enum _PCRspFlags {
   PCRSPFLAG_MOREDATA  = 0x00000001,               // more data exists
} PCRspFlags;

// End of ProcConClnt.h
//============================================================================J McDonald fecit====//