(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE (DEFPACKAGE "RPC2" (USE "LISP" 
"XCL")))
(IL:FILECREATED "15-Oct-87 18:49:03" IL:{SAFE}</B/JFINGER/RPC/X>RPCSTRUCT.LSP\;6 6367   

      IL:|changes| IL:|to:|  (IL:VARS IL:RPCSTRUCTCOMS)

      IL:|previous| IL:|date:| "13-Oct-87 17:00:04" 
IL:{SAFE}</B/JFINGER/RPC/X>RPCSTRUCT.LSP\;4)


(IL:PRETTYCOMPRINT IL:RPCSTRUCTCOMS)

(IL:RPAQQ IL:RPCSTRUCTCOMS ((IL:* IL:* 
                                 "This file contains RPC's struct definitions." 
      "Compiling them takes so long that a separate file for them makes sense."
                                  )
                            (IL:* "Copyright (c) 1987 by the Leland Stanford Junior University. All rights reserved."
                                  )
                            (IL:* "Written by Jeff Finger at the SUMEX-AIM Computing Resource at Stanford University" 
     "under support from National Institutes of Health Grant NIH 5P41 RR00785."
                                  )
                            (IL:P (IN-PACKAGE "RPC2"))
                            (IL:STRUCTURES RPC-PROGRAM RPC-PROCEDURE RPC-STREAM
                                   )))
(IL:* IL:* "This file contains RPC's struct definitions." 
"Compiling them takes so long that a separate file for them makes sense.")




(IL:* 
"Copyright (c) 1987 by the Leland Stanford Junior University. All rights reserved."
)




(IL:* 
"Written by Jeff Finger at the SUMEX-AIM Computing Resource at Stanford University"
 "under support from National Institutes of Health Grant NIH 5P41 RR00785.")

(IN-PACKAGE "RPC2")

(DEFSTRUCT RPC-PROGRAM 
                  "\
Structure describing a Sun RPC Protocol Remote Program.\
"
   (NUMBER 0 :TYPE INTEGER)                    (IL:* IL:\; "RPC Program Number")

   (VERSION 0 :TYPE INTEGER)                   (IL:* IL:\; "RPC Version Number")

   NAME                                        (IL:* IL:\; "String or Symbol. This name is used only by this program and has no significance to the remote program. The name is assumed to uniquely specify an RPC structure. ")

   PROTOCOL                                    (IL:* IL:\; 
                                       "A symbol. Either RPC::UDP or RPC::TCP.")

   CONSTANTS                                   (IL:* IL:\; 
                                            "List of (<constant> <def>) pairs.")

   TYPES                                       (IL:* IL:\; 
                                         "List of (<typename> <typedef>) pairs")

   INHERITS                                    (IL:* IL:\; "List of names of RPC names whose types and constants are inherited by this RPC.")

   PROCEDURES                                  (IL:* IL:\; "List of RPC-PROCEDURE structures defining the procedures for this remote program.")

   )


(DEFSTRUCT RPC-PROCEDURE 
 "Strcture defining a single procedure of a SUN RPC Protcol remote program.\
 "
   NAME                                        (IL:* IL:\; 
                                      "The procedure name. A string or symbol.")

        (PROCNUM 0 :TYPE INTEGER)              (IL:* IL:\; 
                                            "The procedure number. An integer.")

        ARGTYPES                               (IL:* IL:\; 
  "List of argument types. May be typenames or typedefs. NIL for no arguments.")

        RESULTTYPES                            (IL:* IL:\; 
                                 "Same as ARGTYPES except for returned values.")

        )


(DEFSTRUCT RPC-STREAM "Holds info and functions for encoding, decoding and executing remote procedure calls"
   PROTOCOL                                    (IL:* IL:\; 
                                               " UDP, TCP, or  STRING")

         IPSOCKET                              (IL:* IL:\; "Local IP Socket")

         INSTREAM                              (IL:* IL:\; 
                                            "Incoming (Reply) Stream or Packet")

         INBYTEPTR                             (IL:* IL:\; "Byte Pointer to current position in incoming data. For UDP it is the byte pointer in the UDP packet. For TCP it is decremented, saying how many bytes left in this RM record before another RM header must be read.")

         OUTSTREAM                             (IL:* IL:\; 
              "UDP outgoing packet, or outgoing stream used by TCP and STRING.")

         OUTBYTEPTR                            (IL:* IL:\; "Byte Pointer to current position in outgoing  string used to build RM record for TCP. See page 10 of \"Remote Procedure Call Protocol Specification\" for details of the RM 'Record Marking Standard'.")

         OUTSTRING                             (IL:* IL:\; 
                              "Used by TCP  to encode as string before sending")

         GETBYTE                               (IL:* IL:\; 
                                       "Function to read byte of incoming data")

         GETBYTES                              (IL:* IL:\; 
                                    "Function to do bulk read of incoming data")

         GETCELL                               (IL:* IL:\; "Function to get 32 bit two's complement integer of incoming data. Would be better to have  32 bit unsigned as the primitive")

         GETOFFSET                             (IL:* IL:\; 
                                       "Get current offset into incoming data.")

         PUTBYTE                               (IL:* IL:\; 
                                      "Function to write byte of outgoing data")

         PUTBYTES                              (IL:* IL:\; 
                                  "Function to do bulk write of outgoing data.")

         PUTCELL                               (IL:* IL:\; 
          "Function to write 32 bit two's complement integer of outgoing data.")

         PUTOFFSET                             (IL:* IL:\; 
                                       "Set current position in incoming data.")

         PRIVATE                               (IL:* IL:\; 
                                               "Can be used by user as desired")

         )

(IL:DECLARE\: IL:DONTCOPY
  (IL:FILEMAP (NIL)))
IL:STOP