Mercurial Hosting > luan
annotate src/luan/modules/IoLuan.java @ 1497:f04bfbb08721
link_from
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 08 May 2020 16:54:30 -0600 |
parents | 471ef3e6a84e |
children | 22e15cf73040 |
rev | line source |
---|---|
167
4c0131c2b650
merge luan/lib into modules
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
164
diff
changeset
|
1 package luan.modules; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
2 |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
3 import java.io.InputStream; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
4 import java.io.OutputStream; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
5 import java.io.PrintStream; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
6 import java.io.Reader; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
7 import java.io.Writer; |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
8 import java.io.StringReader; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
9 import java.io.BufferedReader; |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
10 import java.io.BufferedWriter; |
129
486a0641bca4
add pickle client/server;
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
125
diff
changeset
|
11 import java.io.BufferedInputStream; |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
12 import java.io.BufferedOutputStream; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
13 import java.io.File; |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
14 import java.io.FileInputStream; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
15 import java.io.FileOutputStream; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
16 import java.io.InputStreamReader; |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
17 import java.io.OutputStreamWriter; |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
18 import java.io.ByteArrayInputStream; |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
19 import java.io.StringWriter; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
20 import java.io.IOException; |
265
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
21 import java.io.FileNotFoundException; |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
22 import java.net.URL; |
701 | 23 import java.net.InetAddress; |
735 | 24 import java.net.Inet4Address; |
25 import java.net.NetworkInterface; | |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
26 import java.net.MalformedURLException; |
701 | 27 import java.net.UnknownHostException; |
735 | 28 import java.util.Enumeration; |
706 | 29 import java.util.Map; |
1444 | 30 import javax.naming.NamingException; |
31 import javax.naming.NameNotFoundException; | |
32 import javax.naming.directory.Attribute; | |
33 import javax.naming.directory.InitialDirContext; | |
1473 | 34 import goodjava.io.IoUtils; |
1330 | 35 import luan.Luan; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
36 import luan.LuanTable; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
37 import luan.LuanFunction; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
38 import luan.LuanException; |
725
a741a3a33423
add url support for multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
722
diff
changeset
|
39 import luan.modules.url.LuanUrl; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
40 |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
41 |
168
ebe9db183eb7
rename *Lib.java to *Luan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
167
diff
changeset
|
42 public final class IoLuan { |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
43 |
118
735708619119
add Debug.debug()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
116
diff
changeset
|
44 public static String read_console_line(String prompt) throws IOException { |
735708619119
add Debug.debug()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
116
diff
changeset
|
45 if( prompt==null ) |
735708619119
add Debug.debug()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
116
diff
changeset
|
46 prompt = "> "; |
735708619119
add Debug.debug()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
116
diff
changeset
|
47 return System.console().readLine(prompt); |
735708619119
add Debug.debug()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
116
diff
changeset
|
48 } |
735708619119
add Debug.debug()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
116
diff
changeset
|
49 |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
50 |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
51 public interface LuanWriter { |
1257
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
52 public Object out(); |
1334
c88b486a9511
make some Luan methods static
Franklin Schmidt <fschmidt@gmail.com>
parents:
1333
diff
changeset
|
53 public void write(Object... args) throws LuanException, IOException; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
54 public void close() throws IOException; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
55 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
56 |
1280 | 57 public static LuanWriter luanWriter(final PrintStream out) { |
1181
51d1342e25ad
luanhost password handling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1134
diff
changeset
|
58 return new LuanWriter() { |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
59 |
1257
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
60 public Object out() { |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
61 return out; |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
62 } |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
63 |
1334
c88b486a9511
make some Luan methods static
Franklin Schmidt <fschmidt@gmail.com>
parents:
1333
diff
changeset
|
64 public void write(Object... args) throws LuanException { |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
65 for( Object obj : args ) { |
1334
c88b486a9511
make some Luan methods static
Franklin Schmidt <fschmidt@gmail.com>
parents:
1333
diff
changeset
|
66 out.print( Luan.luanToString(obj) ); |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
67 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
68 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
69 |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
70 public void close() { |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
71 out.close(); |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
72 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
73 }; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
74 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
75 |
1280 | 76 public static LuanWriter luanWriter(final Writer out) { |
1181
51d1342e25ad
luanhost password handling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1134
diff
changeset
|
77 return new LuanWriter() { |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
78 |
1257
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
79 public Object out() { |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
80 return out; |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
81 } |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
82 |
1334
c88b486a9511
make some Luan methods static
Franklin Schmidt <fschmidt@gmail.com>
parents:
1333
diff
changeset
|
83 public void write(Object... args) throws LuanException, IOException { |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
84 for( Object obj : args ) { |
1334
c88b486a9511
make some Luan methods static
Franklin Schmidt <fschmidt@gmail.com>
parents:
1333
diff
changeset
|
85 out.write( Luan.luanToString(obj) ); |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
86 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
87 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
88 |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
89 public void close() throws IOException { |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
90 out.close(); |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
91 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
92 }; |
1181
51d1342e25ad
luanhost password handling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1134
diff
changeset
|
93 } |
51d1342e25ad
luanhost password handling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1134
diff
changeset
|
94 |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
95 static LuanFunction lines(final BufferedReader in) { |
1335 | 96 return new LuanFunction(false) { |
97 @Override public Object call(Object[] args) throws LuanException { | |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
98 try { |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
99 if( args.length > 0 ) { |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
100 if( args.length > 1 || !"close".equals(args[0]) ) |
646
cdc70de628b5
simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents:
611
diff
changeset
|
101 throw new LuanException( "the only argument allowed is 'close'" ); |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
102 in.close(); |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
103 return null; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
104 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
105 String rtn = in.readLine(); |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
106 if( rtn==null ) |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
107 in.close(); |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
108 return rtn; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
109 } catch(IOException e) { |
646
cdc70de628b5
simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents:
611
diff
changeset
|
110 throw new LuanException(e); |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
111 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
112 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
113 }; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
114 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
115 |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
116 static LuanFunction blocks(final InputStream in,final int blockSize) { |
1335 | 117 return new LuanFunction(false) { |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
118 final byte[] a = new byte[blockSize]; |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
119 |
1335 | 120 @Override public Object call(Object[] args) throws LuanException { |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
121 try { |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
122 if( args.length > 0 ) { |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
123 if( args.length > 1 || !"close".equals(args[0]) ) |
646
cdc70de628b5
simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents:
611
diff
changeset
|
124 throw new LuanException( "the only argument allowed is 'close'" ); |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
125 in.close(); |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
126 return null; |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
127 } |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
128 if( in.read(a) == -1 ) { |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
129 in.close(); |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
130 return null; |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
131 } |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
132 return a; |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
133 } catch(IOException e) { |
646
cdc70de628b5
simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents:
611
diff
changeset
|
134 throw new LuanException(e); |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
135 } |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
136 } |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
137 }; |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
138 } |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
139 |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
140 |
1367
836e00bf7ce2
add Lucene backup_to
Franklin Schmidt <fschmidt@gmail.com>
parents:
1349
diff
changeset
|
141 private static File objToFile(Luan luan,Object obj) throws LuanException { |
758
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
142 if( obj instanceof String ) { |
1367
836e00bf7ce2
add Lucene backup_to
Franklin Schmidt <fschmidt@gmail.com>
parents:
1349
diff
changeset
|
143 String fileName = (String)obj; |
836e00bf7ce2
add Lucene backup_to
Franklin Schmidt <fschmidt@gmail.com>
parents:
1349
diff
changeset
|
144 check(luan,"file:"+fileName); |
836e00bf7ce2
add Lucene backup_to
Franklin Schmidt <fschmidt@gmail.com>
parents:
1349
diff
changeset
|
145 return new File(fileName); |
758
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
146 } |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
147 if( obj instanceof LuanTable ) { |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
148 LuanTable t = (LuanTable)obj; |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
149 Object java = t.rawGet("java"); |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
150 if( java instanceof LuanFile ) { |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
151 LuanFile luanFile = (LuanFile)java; |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
152 return luanFile.file; |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
153 } |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
154 } |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
155 return null; |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
156 } |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
157 |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
158 |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
159 public static abstract class LuanIn { |
1278 | 160 protected String charset = null; |
161 | |
1335 | 162 public abstract InputStream inputStream() throws IOException, LuanException; |
147
cc3a0578edac
fix Io.reverse_pickle
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
145
diff
changeset
|
163 public abstract String to_string(); |
705 | 164 public abstract String to_uri_string(); |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
165 |
1335 | 166 public Reader reader() throws IOException, LuanException { |
167 InputStream in = inputStream(); | |
1278 | 168 return charset==null ? new InputStreamReader(in) : new InputStreamReader(in,charset); |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
169 } |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
170 |
1335 | 171 public String read_text() throws IOException, LuanException { |
172 Reader in = reader(); | |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
173 String s = Utils.readAll(in); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
174 in.close(); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
175 return s; |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
176 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
177 |
1335 | 178 public byte[] read_binary() throws IOException, LuanException { |
179 InputStream in = inputStream(); | |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
180 byte[] a = Utils.readAll(in); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
181 in.close(); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
182 return a; |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
183 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
184 |
1335 | 185 public LuanFunction read_lines() throws IOException, LuanException { |
186 return lines(new BufferedReader(reader())); | |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
187 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
188 |
1335 | 189 public LuanFunction read_blocks(Integer blockSize) throws IOException, LuanException { |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
190 int n = blockSize!=null ? blockSize : Utils.bufSize; |
1335 | 191 return blocks(inputStream(),n); |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
192 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
193 |
1335 | 194 public boolean exists() throws IOException, LuanException { |
265
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
195 try { |
1335 | 196 inputStream().close(); |
265
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
197 return true; |
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
198 } catch(FileNotFoundException e) { |
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
199 return false; |
1251 | 200 } catch(UnknownHostException e) { |
201 return false; | |
1349 | 202 } catch(LuanException e) { |
203 if( e.getCause() instanceof FileNotFoundException ) | |
204 return false; | |
205 throw e; | |
265
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
206 } |
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
207 } |
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
208 |
1335 | 209 public long checksum() throws IOException, LuanException { |
1083
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
210 long cs = 0; |
1335 | 211 InputStream in = new BufferedInputStream(inputStream()); |
1083
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
212 int c; |
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
213 while( (c=in.read()) != -1 ) { |
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
214 cs = 31 * cs + c; |
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
215 } |
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
216 in.close(); |
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
217 return cs; |
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
218 } |
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
219 |
1278 | 220 public String charset() { |
221 return charset; | |
222 } | |
223 | |
224 public void set_charset(String charset) { | |
225 this.charset = charset; | |
226 } | |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
227 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
228 |
297
899253043270
remove PackageLuan.load_lib()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
296
diff
changeset
|
229 public static final LuanIn defaultStdin = new LuanIn() { |
261
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
230 |
1335 | 231 @Override public InputStream inputStream() { |
261
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
232 return System.in; |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
233 } |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
234 |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
235 @Override public String to_string() { |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
236 return "<stdin>"; |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
237 } |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
238 |
705 | 239 @Override public String to_uri_string() { |
240 return "stdin:"; | |
241 } | |
242 | |
1335 | 243 @Override public String read_text() throws IOException { |
261
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
244 return Utils.readAll(new InputStreamReader(System.in)); |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
245 } |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
246 |
1335 | 247 @Override public byte[] read_binary() throws IOException { |
261
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
248 return Utils.readAll(System.in); |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
249 } |
265
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
250 |
1335 | 251 @Override public boolean exists() { |
265
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
252 return true; |
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
253 } |
261
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
254 }; |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
255 |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
256 public static abstract class LuanIO extends LuanIn { |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
257 abstract OutputStream outputStream() throws IOException; |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
258 |
1278 | 259 private Writer writer() throws IOException { |
260 OutputStream out = outputStream(); | |
261 return charset==null ? new OutputStreamWriter(out) : new OutputStreamWriter(out,charset); | |
262 } | |
263 | |
1335 | 264 public void write(Object obj) throws LuanException, IOException { |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
265 if( obj instanceof String ) { |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
266 String s = (String)obj; |
1278 | 267 Writer out = writer(); |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
268 out.write(s); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
269 out.close(); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
270 return; |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
271 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
272 if( obj instanceof byte[] ) { |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
273 byte[] a = (byte[])obj; |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
274 OutputStream out = outputStream(); |
1493 | 275 out.write(a); |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
276 out.close(); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
277 return; |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
278 } |
745
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
279 if( obj instanceof LuanTable ) { |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
280 LuanTable t = (LuanTable)obj; |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
281 Object java = t.rawGet("java"); |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
282 if( java instanceof LuanIn ) { |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
283 LuanIn luanIn = (LuanIn)java; |
1335 | 284 InputStream in = luanIn.inputStream(); |
745
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
285 OutputStream out = outputStream(); |
1493 | 286 IoUtils.copyAll(in,out); |
745
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
287 out.close(); |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
288 in.close(); |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
289 return; |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
290 } |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
291 } |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
292 throw new LuanException( "bad argument #1 to 'write' (string or binary or Io.uri expected)" ); |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
293 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
294 |
1280 | 295 public LuanWriter text_writer() throws IOException { |
296 return luanWriter(new BufferedWriter(writer())); | |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
297 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
298 |
1280 | 299 public OutputStream binary_writer() throws IOException { |
300 return new BufferedOutputStream(outputStream()); | |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
301 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
302 |
1335 | 303 public void write_text(Object... args) throws LuanException, IOException { |
1470 | 304 LuanWriter luanWriter = text_writer(); |
1335 | 305 luanWriter.write(args); |
1181
51d1342e25ad
luanhost password handling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1134
diff
changeset
|
306 luanWriter.close(); |
51d1342e25ad
luanhost password handling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1134
diff
changeset
|
307 } |
1470 | 308 |
309 public void write_binary(byte[] bytes) throws LuanException, IOException { | |
310 OutputStream out = binary_writer(); | |
311 out.write(bytes); | |
312 out.close(); | |
313 } | |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
314 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
315 |
1280 | 316 public static final LuanIO nullIO = new LuanIO() { |
590 | 317 private final InputStream in = new InputStream() { |
318 @Override public int read() { | |
319 return -1; | |
320 } | |
321 }; | |
322 private final OutputStream out = new OutputStream() { | |
323 @Override public void write(int b) {} | |
324 }; | |
325 | |
1335 | 326 @Override public InputStream inputStream() { |
590 | 327 return in; |
328 } | |
329 | |
330 @Override OutputStream outputStream() { | |
331 return out; | |
332 } | |
333 | |
334 @Override public String to_string() { | |
335 return "<null>"; | |
336 } | |
337 | |
705 | 338 @Override public String to_uri_string() { |
339 return "null:"; | |
340 } | |
341 | |
590 | 342 }; |
343 | |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
344 public static final class LuanString extends LuanIO { |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
345 private String s; |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
346 |
1280 | 347 public LuanString(String s) throws LuanException { |
348 Utils.checkNotNull(s); | |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
349 this.s = s; |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
350 } |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
351 |
1335 | 352 @Override public InputStream inputStream() { |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
353 throw new UnsupportedOperationException(); |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
354 } |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
355 |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
356 @Override OutputStream outputStream() { |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
357 throw new UnsupportedOperationException(); |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
358 } |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
359 |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
360 @Override public String to_string() { |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
361 return "<string>"; |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
362 } |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
363 |
705 | 364 @Override public String to_uri_string() { |
365 return "string:" + s; | |
366 } | |
367 | |
1335 | 368 @Override public Reader reader() { |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
369 return new StringReader(s); |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
370 } |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
371 |
1335 | 372 @Override public String read_text() { |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
373 return s; |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
374 } |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
375 |
1335 | 376 @Override public boolean exists() { |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
377 return true; |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
378 } |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
379 |
1280 | 380 @Override public LuanWriter text_writer() { |
381 return new LuanWriter() { | |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
382 private final Writer out = new StringWriter(); |
1257
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
383 |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
384 public Object out() { |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
385 return out; |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
386 } |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
387 |
1334
c88b486a9511
make some Luan methods static
Franklin Schmidt <fschmidt@gmail.com>
parents:
1333
diff
changeset
|
388 public void write(Object... args) throws LuanException, IOException { |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
389 for( Object obj : args ) { |
1334
c88b486a9511
make some Luan methods static
Franklin Schmidt <fschmidt@gmail.com>
parents:
1333
diff
changeset
|
390 out.write( Luan.luanToString(obj) ); |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
391 } |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
392 } |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
393 |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
394 public void close() throws IOException { |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
395 s = out.toString(); |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
396 } |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
397 }; |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
398 } |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
399 } |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
400 |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
401 public static final class LuanFile extends LuanIO { |
710
63cda9eec9a0
make LuanFile.file public
Franklin Schmidt <fschmidt@gmail.com>
parents:
706
diff
changeset
|
402 public final File file; |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
403 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
404 public LuanFile(Luan luan,String path) throws LuanException { |
1280 | 405 this(luan,new File(path)); |
406 } | |
407 | |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
408 private LuanFile(Luan luan,File file) throws LuanException { |
203
99eef1d0e706
IO security
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
409 this(file); |
301
a6bf8ff720f8
add java security
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
299
diff
changeset
|
410 check(luan,"file:"+file.toString()); |
145
90f38a5d0e0a
add Os.File
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
144
diff
changeset
|
411 } |
90f38a5d0e0a
add Os.File
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
144
diff
changeset
|
412 |
202
75750ceb45ee
add LuanState.registry
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
171
diff
changeset
|
413 private LuanFile(File file) { |
145
90f38a5d0e0a
add Os.File
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
144
diff
changeset
|
414 this.file = file; |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
415 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
416 |
1335 | 417 @Override public InputStream inputStream() throws IOException { |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
418 return new FileInputStream(file); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
419 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
420 |
144
2e92f0a6fcac
add Reactionary.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
143
diff
changeset
|
421 @Override OutputStream outputStream() throws IOException { |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
422 return new FileOutputStream(file); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
423 } |
143
fcb81fa2df0d
handle urls and java resources as files
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
142
diff
changeset
|
424 |
147
cc3a0578edac
fix Io.reverse_pickle
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
145
diff
changeset
|
425 @Override public String to_string() { |
143
fcb81fa2df0d
handle urls and java resources as files
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
142
diff
changeset
|
426 return file.toString(); |
fcb81fa2df0d
handle urls and java resources as files
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
142
diff
changeset
|
427 } |
145
90f38a5d0e0a
add Os.File
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
144
diff
changeset
|
428 |
705 | 429 @Override public String to_uri_string() { |
430 return "file:" + file.toString(); | |
431 } | |
432 | |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
433 public LuanFile child(Luan luan,String name) throws LuanException { |
1280 | 434 return new LuanFile(luan,new File(file,name)); |
164
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
435 } |
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
436 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
437 public LuanTable children(Luan luan) throws LuanException { |
164
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
438 File[] files = file.listFiles(); |
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
439 if( files==null ) |
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
440 return null; |
1267 | 441 LuanTable list = new LuanTable(luan); |
164
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
442 for( File f : files ) { |
1280 | 443 list.rawPut(list.rawLength()+1,new LuanFile(luan,f)); |
164
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
444 } |
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
445 return list; |
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
446 } |
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
447 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
448 public LuanFile parent(Luan luan) throws LuanException, IOException { |
323
cd2924a1052c
improve testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
314
diff
changeset
|
449 File parent = file.getParentFile(); |
cd2924a1052c
improve testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
314
diff
changeset
|
450 if( parent==null ) |
cd2924a1052c
improve testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
314
diff
changeset
|
451 parent = file.getCanonicalFile().getParentFile(); |
1280 | 452 return new LuanFile(luan,parent); |
323
cd2924a1052c
improve testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
314
diff
changeset
|
453 } |
cd2924a1052c
improve testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
314
diff
changeset
|
454 |
1335 | 455 @Override public boolean exists() { |
237
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
456 return file.exists(); |
145
90f38a5d0e0a
add Os.File
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
144
diff
changeset
|
457 } |
90f38a5d0e0a
add Os.File
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
144
diff
changeset
|
458 |
1473 | 459 public void rename_to(Luan luan,Object destObj) throws LuanException, IOException { |
1367
836e00bf7ce2
add Lucene backup_to
Franklin Schmidt <fschmidt@gmail.com>
parents:
1349
diff
changeset
|
460 File dest = objToFile(luan,destObj); |
758
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
461 if( dest==null ) |
1367
836e00bf7ce2
add Lucene backup_to
Franklin Schmidt <fschmidt@gmail.com>
parents:
1349
diff
changeset
|
462 throw new LuanException( "bad argument #1 to 'rename_to' (string or file table expected)" ); |
1473 | 463 IoUtils.move(file,dest); |
293
a50e88d3547c
add Web_server.init();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
283
diff
changeset
|
464 } |
a50e88d3547c
add Web_server.init();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
283
diff
changeset
|
465 |
1497 | 466 public void link_from(Luan luan,Object linkObj) throws LuanException, IOException { |
467 File link = objToFile(luan,linkObj); | |
468 if( link==null ) | |
469 throw new LuanException( "bad argument #1 to 'link_from' (string or file table expected)" ); | |
470 IoUtils.link(file,link); | |
1367
836e00bf7ce2
add Lucene backup_to
Franklin Schmidt <fschmidt@gmail.com>
parents:
1349
diff
changeset
|
471 } |
836e00bf7ce2
add Lucene backup_to
Franklin Schmidt <fschmidt@gmail.com>
parents:
1349
diff
changeset
|
472 |
1497 | 473 public void symlink_from(Luan luan,Object linkObj) throws LuanException, IOException { |
474 File link = objToFile(luan,linkObj); | |
475 if( link==null ) | |
476 throw new LuanException( "bad argument #1 to 'symlink_from' (string or file table expected)" ); | |
477 IoUtils.symlink(file,link); | |
1367
836e00bf7ce2
add Lucene backup_to
Franklin Schmidt <fschmidt@gmail.com>
parents:
1349
diff
changeset
|
478 } |
836e00bf7ce2
add Lucene backup_to
Franklin Schmidt <fschmidt@gmail.com>
parents:
1349
diff
changeset
|
479 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
480 public LuanFile canonical(Luan luan) throws LuanException, IOException { |
1280 | 481 return new LuanFile(luan,file.getCanonicalFile()); |
310
9e9bb358b2df
add File.canonical()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
301
diff
changeset
|
482 } |
9e9bb358b2df
add File.canonical()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
301
diff
changeset
|
483 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
484 public LuanFile create_temp_file(Luan luan,String prefix,String suffix) throws LuanException, IOException { |
749
85f5444fb7d4
add rcp lucene backup
Franklin Schmidt <fschmidt@gmail.com>
parents:
748
diff
changeset
|
485 File tmp = File.createTempFile(prefix,suffix,file); |
1280 | 486 return new LuanFile(luan,tmp); |
749
85f5444fb7d4
add rcp lucene backup
Franklin Schmidt <fschmidt@gmail.com>
parents:
748
diff
changeset
|
487 } |
85f5444fb7d4
add rcp lucene backup
Franklin Schmidt <fschmidt@gmail.com>
parents:
748
diff
changeset
|
488 |
1473 | 489 public void delete() throws IOException { |
1475 | 490 IoUtils.deleteRecursively(file); |
751
558740169005
improve file delete()
Franklin Schmidt <fschmidt@gmail.com>
parents:
749
diff
changeset
|
491 } |
558740169005
improve file delete()
Franklin Schmidt <fschmidt@gmail.com>
parents:
749
diff
changeset
|
492 |
752 | 493 public void mkdir() throws LuanException { |
494 if( !file.isDirectory() ) { | |
495 if( !file.mkdirs() ) | |
496 throw new LuanException("couldn't make directory "+file); | |
497 } | |
498 } | |
499 | |
768
ef0fc9ad30c1
add file.set_last_modified()
Franklin Schmidt <fschmidt@gmail.com>
parents:
765
diff
changeset
|
500 public void set_last_modified(long time) throws LuanException { |
ef0fc9ad30c1
add file.set_last_modified()
Franklin Schmidt <fschmidt@gmail.com>
parents:
765
diff
changeset
|
501 if( !file.setLastModified(time) ) |
ef0fc9ad30c1
add file.set_last_modified()
Franklin Schmidt <fschmidt@gmail.com>
parents:
765
diff
changeset
|
502 throw new LuanException("couldn't set_last_modified on "+file); |
ef0fc9ad30c1
add file.set_last_modified()
Franklin Schmidt <fschmidt@gmail.com>
parents:
765
diff
changeset
|
503 } |
1311
ca742d51b31f
don't delete into symbolic links
Franklin Schmidt <fschmidt@gmail.com>
parents:
1280
diff
changeset
|
504 |
ca742d51b31f
don't delete into symbolic links
Franklin Schmidt <fschmidt@gmail.com>
parents:
1280
diff
changeset
|
505 public boolean is_symbolic_link() { |
1475 | 506 return IoUtils.isSymbolicLink(file); |
1311
ca742d51b31f
don't delete into symbolic links
Franklin Schmidt <fschmidt@gmail.com>
parents:
1280
diff
changeset
|
507 } |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
508 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
509 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
510 public static LuanUrl classpath(Luan luan,String name) throws LuanException { |
264
9e0d4452e649
implement URL style module names
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
263
diff
changeset
|
511 if( name.contains("//") ) |
260
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
512 return null; |
264
9e0d4452e649
implement URL style module names
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
263
diff
changeset
|
513 String path = name; |
301
a6bf8ff720f8
add java security
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
299
diff
changeset
|
514 check(luan,"classpath:"+path); |
260
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
515 URL url; |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
516 if( !path.contains("#") ) { |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
517 url = ClassLoader.getSystemResource(path); |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
518 } else { |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
519 String[] a = path.split("#"); |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
520 url = ClassLoader.getSystemResource(a[0]); |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
521 if( url==null ) { |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
522 for( int i=1; i<a.length; i++ ) { |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
523 url = ClassLoader.getSystemResource(a[0]+"/"+a[i]); |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
524 if( url != null ) { |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
525 try { |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
526 url = new URL(url,"."); |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
527 } catch(MalformedURLException e) { |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
528 throw new RuntimeException(e); |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
529 } |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
530 break; |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
531 } |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
532 } |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
533 } |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
534 } |
264
9e0d4452e649
implement URL style module names
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
263
diff
changeset
|
535 if( url != null ) |
1280 | 536 return new LuanUrl(url,null); |
264
9e0d4452e649
implement URL style module names
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
263
diff
changeset
|
537 |
9e0d4452e649
implement URL style module names
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
263
diff
changeset
|
538 return null; |
260
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
539 } |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
540 |
203
99eef1d0e706
IO security
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
541 |
1105
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
542 public static class BaseOs extends LuanIO { |
761
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
543 private final String cmd; |
1105
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
544 final File dir; |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
545 Process proc; |
734 | 546 |
1367
836e00bf7ce2
add Lucene backup_to
Franklin Schmidt <fschmidt@gmail.com>
parents:
1349
diff
changeset
|
547 private BaseOs(Luan luan,String cmd,LuanTable options) throws IOException, LuanException { |
761
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
548 this.cmd = cmd; |
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
549 File dir = null; |
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
550 if( options != null ) { |
1267 | 551 Map map = options.asMap(); |
761
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
552 Object obj = map.remove("dir"); |
1367
836e00bf7ce2
add Lucene backup_to
Franklin Schmidt <fschmidt@gmail.com>
parents:
1349
diff
changeset
|
553 dir = objToFile(luan,obj); |
761
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
554 if( dir==null ) |
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
555 throw new LuanException( "bad option 'dir' (string or file table expected)" ); |
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
556 if( !map.isEmpty() ) |
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
557 throw new LuanException( "unrecognized options: "+map ); |
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
558 } |
1105
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
559 this.dir = dir; |
734 | 560 } |
561 | |
1335 | 562 @Override public InputStream inputStream() throws IOException { |
734 | 563 return proc.getInputStream(); |
564 } | |
565 | |
566 @Override OutputStream outputStream() throws IOException { | |
567 return proc.getOutputStream(); | |
568 } | |
569 | |
570 @Override public String to_string() { | |
571 return proc.toString(); | |
572 } | |
573 | |
574 @Override public String to_uri_string() { | |
575 throw new UnsupportedOperationException(); | |
576 } | |
577 | |
1335 | 578 @Override public boolean exists() { |
734 | 579 return true; |
580 } | |
581 | |
582 public void wait_for() | |
583 throws IOException, LuanException | |
584 { | |
585 try { | |
586 proc.waitFor(); | |
587 } catch(InterruptedException e) { | |
588 throw new RuntimeException(e); | |
589 } | |
590 int exitVal = proc.exitValue(); | |
591 if( exitVal != 0 ) { | |
592 Reader err = new InputStreamReader(proc.getErrorStream()); | |
1107 | 593 String error = "exit value "+exitVal+" in: "+cmd+"\n"+Utils.readAll(err); |
734 | 594 err.close(); |
595 throw new LuanException(error); | |
596 } | |
597 } | |
598 | |
1335 | 599 @Override public String read_text() throws IOException, LuanException { |
600 String s = super.read_text(); | |
734 | 601 wait_for(); |
602 return s; | |
603 } | |
604 } | |
605 | |
1105
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
606 public static final class LuanOs extends BaseOs { |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
607 public LuanOs(Luan luan,String cmd,LuanTable options) throws IOException, LuanException { |
1367
836e00bf7ce2
add Lucene backup_to
Franklin Schmidt <fschmidt@gmail.com>
parents:
1349
diff
changeset
|
608 super(luan,cmd,options); |
1128 | 609 check(luan,"os:"+cmd); |
1105
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
610 this.proc = Runtime.getRuntime().exec(cmd,null,dir); |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
611 } |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
612 } |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
613 |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
614 public static final class LuanBash extends BaseOs { |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
615 public LuanBash(Luan luan,String cmd,LuanTable options) throws IOException, LuanException { |
1367
836e00bf7ce2
add Lucene backup_to
Franklin Schmidt <fschmidt@gmail.com>
parents:
1349
diff
changeset
|
616 super(luan,cmd,options); |
1128 | 617 check(luan,"bash:"+cmd); |
1105
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
618 this.proc = Runtime.getRuntime().exec(new String[]{"bash","-c",cmd},null,dir); |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
619 } |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
620 } |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
621 |
1120
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
622 |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
623 public static class LuanInput extends LuanIn { |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
624 private final InputStream in; |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
625 |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
626 public LuanInput(InputStream in) { |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
627 this.in = in; |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
628 } |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
629 |
1335 | 630 @Override public InputStream inputStream() { |
1120
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
631 return in; |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
632 } |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
633 |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
634 @Override public String to_string() { |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
635 return "<input_stream>"; |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
636 } |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
637 |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
638 @Override public String to_uri_string() { |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
639 throw new UnsupportedOperationException(); |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
640 } |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
641 |
1335 | 642 @Override public boolean exists() { |
1120
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
643 return true; |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
644 } |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
645 }; |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
646 |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
647 |
701 | 648 public static String ip(String domain) { |
649 try { | |
650 return InetAddress.getByName(domain).getHostAddress(); | |
651 } catch(UnknownHostException e) { | |
652 return null; | |
653 } | |
654 } | |
765 | 655 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
656 public static LuanTable my_ips(Luan luan) throws IOException, LuanException { |
1267 | 657 LuanTable tbl = new LuanTable(luan); |
735 | 658 for( Enumeration<NetworkInterface> e1 = NetworkInterface.getNetworkInterfaces(); e1.hasMoreElements(); ) { |
659 NetworkInterface ni = e1.nextElement(); | |
660 for( Enumeration<InetAddress> e2 = ni.getInetAddresses(); e2.hasMoreElements(); ) { | |
661 InetAddress ia = e2.nextElement(); | |
662 if( ia instanceof Inet4Address ) | |
1330 | 663 tbl.put(ia.getHostAddress(),true); |
735 | 664 } |
665 } | |
666 return tbl; | |
667 } | |
765 | 668 |
1444 | 669 public static LuanTable dns_lookup(Luan luan,String domain,String type) |
670 throws NamingException | |
671 { | |
672 LuanTable tbl = new LuanTable(luan); | |
673 InitialDirContext idc = new InitialDirContext(); | |
674 Attribute attribute; | |
675 try { | |
676 attribute = idc.getAttributes("dns:/" + domain, new String[] {type}).get(type); | |
677 } catch(NameNotFoundException e) { | |
678 return tbl; | |
679 } | |
680 if( attribute==null ) | |
681 return tbl; | |
682 final int n = attribute.size(); | |
683 for( int i=0; i<n; i++ ) { | |
684 Object obj = attribute.get(i); | |
685 tbl.rawInsert(i+1,obj); | |
686 } | |
687 return tbl; | |
688 } | |
689 | |
706 | 690 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
691 private static void check(Luan luan,String name) throws LuanException { |
1330 | 692 Luan.checkSecurity(luan,"uri",name); |
203
99eef1d0e706
IO security
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
693 } |
99eef1d0e706
IO security
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
694 |
99eef1d0e706
IO security
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
695 |
168
ebe9db183eb7
rename *Lib.java to *Luan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
167
diff
changeset
|
696 private void IoLuan() {} // never |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
697 } |