diff src/luan/modules/ThreadLuan.java @ 794:f16c77ef0f4f

add Parsers.json_string and Thread.global
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 05 Sep 2016 16:08:00 -0600
parents c9409e28daa2
children 95cbe23a96fb
line wrap: on
line diff
--- a/src/luan/modules/ThreadLuan.java	Mon Sep 05 15:19:44 2016 -0600
+++ b/src/luan/modules/ThreadLuan.java	Mon Sep 05 16:08:00 2016 -0600
@@ -1,6 +1,8 @@
 package luan.modules;
 
 import java.io.Closeable;
+import java.util.Map;
+import java.util.LinkedHashMap;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
@@ -68,4 +70,32 @@
 		luan.onClose(c);
 	}
 
+
+	public static class StringMap {
+
+		private static class Value {
+			final long time = System.currentTimeMillis();
+			final String s;
+
+			Value(String s) {
+				this.s = s;
+			}
+		}
+
+		public long timeout = 60000L;  // one minute
+		private Map<String,Value> map = new LinkedHashMap<String,Value>() {
+			protected boolean removeEldestEntry(Map.Entry<String,Value> eldest) {
+				return eldest.getValue().time < System.currentTimeMillis() - timeout;
+			}
+		};
+
+		public synchronized String get(String key) {
+			Value val = map.get(key);
+			return val==null ? null : val.s;
+		}
+
+		public synchronized void set(String key,String s) {
+			map.put(key,new Value(s));
+		}
+	}
 }