diff options
Diffstat (limited to 'appl/examples/minitel/socket.b')
| -rw-r--r-- | appl/examples/minitel/socket.b | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/appl/examples/minitel/socket.b b/appl/examples/minitel/socket.b new file mode 100644 index 00000000..b3ce7fcf --- /dev/null +++ b/appl/examples/minitel/socket.b @@ -0,0 +1,49 @@ +# +# Copyright © 1998 Vita Nuova Limited. All rights reserved. +# + +Socket: adt { + m: ref Module; # common attributes + in: chan of ref Event; + + init: fn(c: self ref Socket); + reset: fn(c: self ref Socket); + run: fn(c: self ref Socket); + quit: fn(c: self ref Socket); +}; + +Socket.init(c: self ref Socket) +{ + c.in = chan of ref Event; + c.reset(); +} + +Socket.reset(c: self ref Socket) +{ + c.m = ref Module(Pscreen, 0); +} + +Socket.run(c: self ref Socket) +{ +Runloop: + for(;;){ + ev := <- c.in; + pick e := ev { + Equit => + break Runloop; + Eproto => + case e.cmd { + Creset => + c.reset(); + * => break; + } + Edata => + } + } + send(nil); +} + +Socket.quit(c: self ref Socket) +{ + if(c==nil); +} |
