Next: , Previous: , Up: Quick Start   [Contents][Index]


3.1 Defining Data Types

Before actually creating a client or server for this interface, one must define the types it uses. The simplest way to define one or several data types is to pipe their definition in XDR/RPC language through the compiler (see grpc-compile):

$ grpc-compile --xdr --constants < input.x > types.scm

Given the description from input.x in RPC language, this command generates code that provides access to the constants and data types defined therein. The resulting Scheme code, types.scm, can then be loaded in other Scheme files (see Loading in The GNU Guile Reference Manual).

In addition, code in types.scm depends on Guile-RPC modules that it uses at run-time. Thus, it must first import the relevant modules:

(use-modules (rpc xdr)
             (rpc xdr types))

Then, the result_t type is defined (this is the code generated by the compiler but it can also be written “by hand”):

(define result-type
  (make-xdr-struct-type (list xdr-integer             ;; `integer_part'
                              xdr-unsigned-integer))) ;; `decimal_part'