aboutsummaryrefslogtreecommitdiff
path: root/console.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2018-01-24 00:25:10 +0100
committerDimitri Sokolyuk <demon@dim13.org>2018-01-24 00:25:10 +0100
commit07584da73461b69043451ebe48fcac226202492a (patch)
tree1f65f42f61bd10079ff369b039ff8dc0282f816d /console.go
parentbc1a7a271ba5a3f971e9dbed774b01b43af2642e (diff)
extract console, extract context
Diffstat (limited to 'console.go')
-rw-r--r--console.go53
1 files changed, 0 insertions, 53 deletions
diff --git a/console.go b/console.go
deleted file mode 100644
index e59a765..0000000
--- a/console.go
+++ /dev/null
@@ -1,53 +0,0 @@
-package j1
-
-import (
- "context"
- "fmt"
- "io"
- "os"
-)
-
-type console struct {
- r io.Reader
- w io.Writer
- ich, och chan uint16
-}
-
-func NewConsole(ctx context.Context) *console {
- c := &console{
- r: os.Stdin,
- w: os.Stdout,
- ich: make(chan uint16, 1),
- och: make(chan uint16, 1),
- }
- go c.read(ctx)
- go c.write(ctx)
- return c
-}
-
-func (c *console) read(ctx context.Context) {
- var v uint16
- for {
- fmt.Fscanf(c.r, "%c", &v)
- select {
- case <-ctx.Done():
- return
- case c.ich <- v:
- }
- }
-}
-
-func (c *console) write(ctx context.Context) {
- for {
- select {
- case <-ctx.Done():
- return
- case v := <-c.och:
- fmt.Fprintf(c.w, "%c", v)
- }
- }
-}
-
-func (c *console) Read() uint16 { return <-c.ich }
-func (c *console) Write(v uint16) { c.och <- v }
-func (c *console) Len() uint16 { return uint16(len(c.ich)) }