/*======================================================================
                    I N E T R A Y . X 
                    doc: Mon Feb 24 16:07:27 1992
                    dlm: Sun Jul 11 12:34:22 1993
                    (c) 1992 ant@julia
                    uE-Info: 37 71 T 0 0 72 2 2 8 ofnI
======================================================================*/

#include	"prognum.h"
%#include	<sys/param.h>
%#ifndef ITIMER_REAL
%#include	<sys/time.h>		/* for A/UX */
%#endif
%#include	"config.h"

struct iPrm {				/* params for init() */
	int	key;			/* session key */
	int	uid;			/* remote user id */
	int	nSvcs;			/* # of workers to start */
	short	rPort;			/* result port# */
	string	rName<MAXHOSTNAMELEN>; 	/* remote hostname */
	string	cwd<MAXPATHLEN>;	/* remote wdir */
	string	cmdLine<STRLEN>;	/* rayshade command line */
	bool	sendIn;			/* sending StdIn? */
} ;

struct sfPrm {				/* params for startframe() */
	int	key;			/* session key */
	int	fNr;			/* frame number */
} ;

struct tbPrm {				/* params for traceblock() */
	int	key;			/* session key */
	int	bNr;			/* block Number */
	int	bSz;			/* block size */
	int	lNr;			/* first linenumber in block */
	int	nBlocks;		/* number of blocks to trace */
} ;

struct xdrPix {				/* as defined in picture.h */
	double	r;
	double	g;
	double	b;
	double	alpha;
} ;

typedef xdrPix pixArr<>;		/* result is a line of pixels */

program INETRAY {
	version IRV1 {
		void  INIT(iPrm)	= 1;	/* init (read file) */
		int   STARTFRAME(sfPrm)	= 2;	/* start new frame */
		void  TRACEBLOCK(tbPrm)	= 3;	/* trace block of lines*/
		int   KILL(int)		= 4;	/* kill worker */
		int   WAIT(int)		= 5;	/* wait for dead worker */
		void  TERMINATE(int)	= 6;	/* terminate self */
	} = V1;
} = IRNUM;

		
