33 lines
1.0 KiB
Racket
33 lines
1.0 KiB
Racket
#lang racket
|
|
(define-struct event () #:prefab)
|
|
(define-struct (stdout event) (bytes) #:prefab)
|
|
(define-struct (stderr event) (bytes) #:prefab)
|
|
|
|
(define-struct status (start end command-line output-log) #:prefab)
|
|
(define-struct (timeout status) () #:prefab)
|
|
(define-struct (exit status) (code) #:prefab)
|
|
|
|
(define (status-duration s)
|
|
(- (status-end s) (status-start s)))
|
|
|
|
(provide/contract
|
|
[struct event ()]
|
|
[struct (stdout event) ([bytes bytes?])]
|
|
[struct (stderr event) ([bytes bytes?])]
|
|
[struct status ([start number?]
|
|
[end number?]
|
|
[command-line (listof string?)]
|
|
[output-log (listof event?)])]
|
|
[struct (exit status)
|
|
([start number?]
|
|
[end number?]
|
|
[command-line (listof string?)]
|
|
[output-log (listof event?)]
|
|
[code exact-integer?])]
|
|
[struct (timeout status)
|
|
([start number?]
|
|
[end number?]
|
|
[command-line (listof string?)]
|
|
[output-log (listof event?)])]
|
|
[status-duration (status? . -> . number?)])
|