Skip to content

johnstonskj/racket-thrift

Repository files navigation

Racket package thrift

GitHub release Travis Status Coverage Status raco pkg install thrift Documentation GitHub stars mit License

This package provides an implementation of the core for Apache Thrift. While not a complete implementation of all the required and recommended capabilities it is reasonably complete.

Modules

  • thrift - Common type definitions for the Thrift stack.
  • thrift/idl/* - A Racket syntax for defining Thrift IDL in-line, and to generate Racket modules based upon an IDL.
  • thrift/processor/* - Implementations for common processor types..
  • thrift/protocol/* - Implementations for core protocol types.
  • thrift/transport/* - Implementations for core protocol types.

Command Line Launchers

  • rthrift - Used to generate Racket modules from Thrift IDL.

Example

(require thrift/protocol/compact
         thrift/transport/memory)

(define t (open-output-memory-transport))
(define p (encoder t))

((encoder-message-begin p) (message-header "mthod" 7 9))

((encoder-struct-begin p) "mthod_args")

((encoder-field-begin p) (field-header "name" type-string 1))
((encoder-string p) "simon")
((encoder-field-end p))

((encoder-field-begin p) (field-header "age" type-byte 2))
((encoder-byte p) 48)
((encoder-field-end p))

((encoder-field-begin p) (field-header "brilliant?" type-bool 3))
((encoder-boolean p) #f)
((encoder-field-end p))

((encoder-struct-end p))

((encoder-map-begin p) (map-header type-string type-int32 3))
((encoder-string p) "first")
((encoder-int32 p) 101)
((encoder-string p) "second")
((encoder-int32 p) 102)
((encoder-string p) "third")
((encoder-int32 p) 103)
((encoder-map-end p))
 
((encoder-message-end p))

(write (transport-output-bytes t))

Installation

  • To install (from within the package directory): raco pkg install
  • To install (once uploaded to pkgs.racket-lang.org): raco pkg install thrift
  • To uninstall: raco pkg remove thrift
  • To view documentation: raco docs thrift

History

  • 1.0 - Initial Stable Version

Racket Language