-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsession.rkt
52 lines (41 loc) · 1.7 KB
/
session.rkt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#lang racket/base
(require racket/class
"constants.rkt"
"utils.rkt")
(provide session%)
(define session%
(class object%
(init-field [in #f]
[io #f])
(field [out #f]
[iws #f]
[mps #f])
(define/public (channel/success sc _iws _mps)
(set! out sc)
(set! iws _iws)
(set! mps _mps))
(define/public (channel/failure reason-code descr lang-tag)
(error "DIE DIE DIE"))
(define/public (send-data data)
(sendp io SSH_MSG_CHANNEL_DATA (->sshb out) (->sshb data)))
(define/public (setup chid _io)
(set! in chid)
(set! io _io))
(define/public (server-setup _out _iws _mps)
(set! out _out)
(set! iws _iws)
(set! mps _mps)
(sendp io SSH_MSG_CHANNEL_OPEN_CONFIRMATION (->sshb out) (->sshb in) (->sshb iws) (->sshb mps)))
(define/public (get-params) (values io in out iws mps))
(define/public (eof) (printf "EOF\n"))
(define/public (stderr type data) (printf "~a" data) (flush-output))
(define/public (stdout data) (printf "~a\n~a\n" data (bytes->hex-string data)) (flush-output))
(define/public (close) (printf "close\n"))
(define/public (close-ch) (printf "close-ch\n"))
(define/public (window-adjust x) (void)#;(printf "window-adjust ~a\n" x))
(define/public (signal) (printf "signal\n"))
(define/public (exit ec) (printf "exit ~a\n" ec))
(define/public (exit-signal str bool str2 str3) (printf "exit-signal\n"))
(define/public (window-change wc hr wp hp) (printf "windowchange ~a ~a ~a ~a\n" wc hr wp hp))
(super-new)
))