Mercurial Hosting > luan
comparison src/luan/lib/rpc/RpcServer.java @ 1120:e8fc6712b468
luan Rpc uses luan.lib.rpc
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 07 Aug 2017 23:50:52 -0600 |
parents | 87c674f3f6b7 |
children |
comparison
equal
deleted
inserted
replaced
1119:87c674f3f6b7 | 1120:e8fc6712b468 |
---|---|
1 package luan.lib.rpc; | 1 package luan.lib.rpc; |
2 | 2 |
3 import java.io.EOFException; | |
3 import java.net.Socket; | 4 import java.net.Socket; |
4 import java.util.List; | 5 import java.util.List; |
5 import java.util.ArrayList; | 6 import java.util.ArrayList; |
6 | 7 |
7 | 8 |
14 } | 15 } |
15 | 16 |
16 public RpcCall read() | 17 public RpcCall read() |
17 throws RpcError | 18 throws RpcError |
18 { | 19 { |
19 List list = readJson(); | 20 try { |
20 String cmd = (String)list.remove(0); | 21 List list = readJson(); |
21 Object[] args = list.toArray(); | 22 String cmd = (String)list.remove(0); |
22 return new RpcCall(inBinary,lenBinary,cmd,args); | 23 Object[] args = list.toArray(); |
24 return new RpcCall(inBinary,lenBinary,cmd,args); | |
25 } catch(RpcError e) { | |
26 if( !readSome && e.getCause() instanceof EOFException ) | |
27 return null; | |
28 throw e; | |
29 } | |
23 } | 30 } |
24 | 31 |
25 public void write(RpcResult result) | 32 public void write(RpcResult result) |
26 throws RpcError | 33 throws RpcError |
27 { | 34 { |
36 public void write(RpcException ex) | 43 public void write(RpcException ex) |
37 throws RpcError | 44 throws RpcError |
38 { | 45 { |
39 List list = new ArrayList(); | 46 List list = new ArrayList(); |
40 list.add(false); | 47 list.add(false); |
48 list.add(ex.getMessage()); | |
41 for( Object val : ex.values ) { | 49 for( Object val : ex.values ) { |
42 list.add(val); | 50 list.add(val); |
43 } | 51 } |
44 write(ex.in,ex.lenIn,list); | 52 write(ex.in,ex.lenIn,list); |
45 } | 53 } |