comparison src/luan/modules/Io.luan @ 1578:c922446f53aa

immutable threading
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 08 Feb 2021 14:16:19 -0700
parents a23b02693d3b
children b82767112d8e
comparison
equal deleted inserted replaced
1577:60e5c324adf9 1578:c922446f53aa
1 require "java" 1 require "java"
2 local IoLuan = require "java:luan.modules.IoLuan" 2 local IoLuan = require "java:luan.modules.IoLuan"
3 local System = require "java:java.lang.System" 3 local System = require "java:java.lang.System"
4 local Boot = require "luan:Boot.luan" 4 local Boot = require "luan:Boot.luan"
5 local LuanException = require "java:luan.LuanException" 5 local LuanException = require "java:luan.LuanException"
6 local Luan = require "luan:Luan.luan"
7 local error = Luan.error
8 local get_local_cloned = Luan.get_local_cloned
9 local set_local_cloned = Luan.set_local_cloned
10 local raw_set = Luan.raw_set
11 local set_metatable = Luan.set_metatable
6 12
7 13
8 local Io = {} 14 local Io = {}
15 local mt = {}
16 function mt.__index(tbl,key)
17 if key=="stdin" or key=="stdout" or key=="stderr" then
18 return get_local_cloned(tbl,key)
19 else
20 return nil
21 end
22 end
23 function mt.__new_index(tbl,key,value)
24 if key=="stdin" or key=="stdout" or key=="stderr" then
25 set_local_cloned(tbl,key,value)
26 else
27 raw_set(tbl,key,value)
28 end
29 end
30 set_metatable(Io,mt)
9 31
10 Io.dns_lookup = IoLuan.dns_lookup 32 Io.dns_lookup = IoLuan.dns_lookup
11 Io.ip = IoLuan.ip 33 Io.ip = IoLuan.ip
12 Io.my_ips = IoLuan.my_ips 34 Io.my_ips = IoLuan.my_ips
13 Io.read_console_line = IoLuan.read_console_line 35 Io.read_console_line = IoLuan.read_console_line
18 Io.stderr = Boot.text_writer(System.err) 40 Io.stderr = Boot.text_writer(System.err)
19 41
20 -- used by http and rpc 42 -- used by http and rpc
21 Io.password = "password" 43 Io.password = "password"
22 44
23 local Luan = require "luan:Luan.luan"
24 local error = Luan.error
25 local to_string = Luan.to_string or error() 45 local to_string = Luan.to_string or error()
26 local type = Luan.type or error() 46 local type = Luan.type or error()
27 local ipairs = Luan.ipairs or error() 47 local ipairs = Luan.ipairs or error()
28 local pairs = Luan.pairs or error() 48 local pairs = Luan.pairs or error()
29 local values = Luan.values or error() 49 local values = Luan.values or error()