Mercurial Hosting > luan
annotate src/goodjava/rpc/RpcServer.java @ 1477:509736ad42e6
minor
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 21 Apr 2020 15:05:39 -0600 |
parents | 27efb1fcbcb5 |
children | aaac1d29edea |
rev | line source |
---|---|
1402
27efb1fcbcb5
move luan.lib to goodjava
Franklin Schmidt <fschmidt@gmail.com>
parents:
1120
diff
changeset
|
1 package goodjava.rpc; |
1118 | 2 |
1120
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1119
diff
changeset
|
3 import java.io.EOFException; |
1118 | 4 import java.net.Socket; |
5 import java.util.List; | |
6 import java.util.ArrayList; | |
7 | |
8 | |
9 public class RpcServer extends RpcCon { | |
10 | |
1119 | 11 public RpcServer(Socket socket) |
12 throws RpcError | |
13 { | |
1118 | 14 super(socket); |
15 } | |
16 | |
17 public RpcCall read() | |
1119 | 18 throws RpcError |
1118 | 19 { |
1120
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1119
diff
changeset
|
20 try { |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1119
diff
changeset
|
21 List list = readJson(); |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1119
diff
changeset
|
22 String cmd = (String)list.remove(0); |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1119
diff
changeset
|
23 Object[] args = list.toArray(); |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1119
diff
changeset
|
24 return new RpcCall(inBinary,lenBinary,cmd,args); |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1119
diff
changeset
|
25 } catch(RpcError e) { |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1119
diff
changeset
|
26 if( !readSome && e.getCause() instanceof EOFException ) |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1119
diff
changeset
|
27 return null; |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1119
diff
changeset
|
28 throw e; |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1119
diff
changeset
|
29 } |
1118 | 30 } |
31 | |
32 public void write(RpcResult result) | |
1119 | 33 throws RpcError |
1118 | 34 { |
35 List list = new ArrayList(); | |
36 list.add(true); | |
37 for( Object val : result.returnValues ) { | |
38 list.add(val); | |
39 } | |
40 write(result.in,result.lenIn,list); | |
41 } | |
42 | |
43 public void write(RpcException ex) | |
1119 | 44 throws RpcError |
1118 | 45 { |
46 List list = new ArrayList(); | |
47 list.add(false); | |
1120
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1119
diff
changeset
|
48 list.add(ex.getMessage()); |
1118 | 49 for( Object val : ex.values ) { |
50 list.add(val); | |
51 } | |
52 write(ex.in,ex.lenIn,list); | |
53 } | |
54 | |
55 } |