summaryrefslogtreecommitdiff
path: root/appl/examples/minitel/socket.b
diff options
context:
space:
mode:
Diffstat (limited to 'appl/examples/minitel/socket.b')
-rw-r--r--appl/examples/minitel/socket.b49
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);
+}