diff src/luan/modules/http/Http.luan @ 1578:c922446f53aa

immutable threading
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 08 Feb 2021 14:16:19 -0700
parents 153ea3b7afaf
children fa066aaa068c
line wrap: on
line diff
--- a/src/luan/modules/http/Http.luan	Sun Jan 31 16:04:39 2021 -0700
+++ b/src/luan/modules/http/Http.luan	Mon Feb 08 14:16:19 2021 -0700
@@ -4,6 +4,12 @@
 local ipairs = Luan.ipairs or error()
 local pairs = Luan.pairs or error()
 local type = Luan.type or error()
+local set_metatable = Luan.set_metatable or error()
+local get_local_cloned = Luan.get_local_cloned or error()
+local set_local_cloned = Luan.set_local_cloned or error()
+local get_local_only = Luan.get_local_only or error()
+local set_local_only = Luan.set_local_only or error()
+local raw_set = Luan.raw_set or error()
 local Io = require "luan:Io.luan"
 local Html = require "luan:Html.luan"
 local Table = require "luan:Table.luan"
@@ -29,6 +35,26 @@
 
 
 local Http = {}
+local mt = {}
+function mt.__index(tbl,key)
+	if key=="error_priority" then
+		return get_local_cloned(tbl,key)
+	elseif key=="request" or key=="response" then
+		return get_local_only(tbl,key)
+	else
+		return nil
+	end
+end
+function mt.__new_index(tbl,key,value)
+	if key=="error_priority" then
+		set_local_cloned(tbl,key,value)
+	elseif key=="request" or key=="response" then
+		set_local_only(tbl,key,value)
+	else
+		raw_set(tbl,key,value)
+	end
+end
+set_metatable(Http,mt)
 
 local old_java_to_table_shallow = Table.java_to_table_shallow or error()