/* @(#)rpcace.idl	1.1 2/12/97 */

/*
** This interface definition language (IDL) file
** gets processed by a DCE IDL compiler
** to make machine specific rpc library hooks
**
** Interface adapted from rpcace.x (ONC RPC - rpcgen input file)
** (version 1.8) by Richard Bruskiewich
**
** Suggested MS IDL compilation command:
**
**		midl /align4 /osf rpcace.idl
**
**	where align4 provides 4 byte structure alignment...
*/

/* 
  ACE_DATA parameter:
	2 way communication of query status with the following fields:

		   question:
			  set by client: contains the request

		   reponse:
			  set by server: contains the answer

		   encore:
			  set by server to: -1 if more data remains to be transmitted
			  set by client to: -1 to get the the remainder
								-2 to abort the running query

		   clientId:
			  set by server on first connection,
					 must be retransmitted by client each time.
		   magic:
			  negotiated between  the client and the server,
					 must be retransmitted by client each time.

		   cardinal:
			  set by server to: number of objects in the active list.

		   aceError:
			  set by server to: 100 Unrecognised or NULL command
								200 Out of context command
								300 Invalid command (bad nb of parms etc)
								400 Syntax error in body of command 
		   kBytes:
			  set by client to: Desired max size of answer in kilobytes, 
								NOT strict, server is allowed to return more
								Server only splits on ace boundaries.
*/

[
uuid(d76e4030-69f5-11d0-a540-008048b9aa78),
version(1.2),
pointer_default(ptr)
]
interface RPC_ACE
{
typedef struct {
	[string] unsigned char *lpszServerStringBinding ;
	         handle_t hServerBinding ; /* bound to RPC server connection */
} SERVER ;

typedef SERVER *LP_SERVER ;

typedef struct  {
  [string, unique] char *question ;
  [string, unique] char *reponse ;
  long      clientId ;
  long      magic ;
  long      cardinal ;
  long      encore ;   
  long      aceError ;
  long      kBytes ;
  } ACE_DATA ;

typedef ACE_DATA *LP_ACE_DATA ;
 
/*
 *	The ACEDB RPC call prototype
 */
void ace_server(  [in, out, ref] LP_ACE_DATA ace_data,
		  [out, ref] error_status_t *ace_rpc_status) ;
}

/********* end of file **********/


