Mercurial Hosting > luan
diff src/luan/modules/Rpc.luan @ 1520:d9a5405a3102
try statement
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 21 Jun 2020 18:14:13 -0600 |
parents | 0ba144491a42 |
children | c922446f53aa |
line wrap: on
line diff
--- a/src/luan/modules/Rpc.luan Fri Jun 19 20:10:47 2020 -0600 +++ b/src/luan/modules/Rpc.luan Sun Jun 21 18:14:13 2020 -0600 @@ -15,7 +15,6 @@ local Luan = require "luan:Luan.luan" local error = Luan.error local set_metatable = Luan.set_metatable or error() -local try = Luan.try or error() local ipairs = Luan.ipairs or error() local type = Luan.type or error() local Boot = require "luan:Boot.luan" @@ -112,20 +111,17 @@ client.close() return end - return try { - function() - local result = client.read() - return luan_args(result.returnValues,result["in"]) + try + local result = client.read() + return luan_args(result.returnValues,result["in"]) + catch e + local cause = e.java.getCause() + if cause ~= nil and cause.instanceof(RpcException) and cause.getMessage() == "luan" then + error(cause.values.get(0)) + else + e.throw() end - catch = function(e) - local cause = e.java.getCause() - if cause ~= nil and cause.instanceof(RpcException) and cause.getMessage() == "luan" then - error(cause.values.get(0)) - else - e.throw() - end - end - } + end end_function end_function @@ -152,18 +148,15 @@ server.write(JavaRpc.COMMAND_NOT_FOUND) return end_if - local rtn = try { - function() - return {fn(luan_args(call.args,call["in"]))} - end - catch = function(e) - logger.warn(e) - local ex = RpcException.new("luan",e.get_message()) - server.write(ex) - return nil - end - } - if rtn==nil then return end + local rtn + try + rtn = {fn(luan_args(call.args,call["in"]))} + catch e + logger.warn(e) + local ex = RpcException.new("luan",e.get_message()) + server.write(ex) + return + end local binary_in, len_in = encode_binary(rtn) local result if binary_in == nil then @@ -211,32 +204,25 @@ socket_server.setEnabledCipherSuites(Rpc.cipher_suites) end while true do - try { - function() - local socket = socket_server.accept() - local function server() - local responder = nil - try { - function() - responder = rpc_responder(socket,fns) - while not responder.is_closed() do - responder.respond() - end - end - catch = function(e) - logger.warn(e) - end - finally = function() - responder and responder.after_close and responder.after_close() - end - } + try + local socket = socket_server.accept() + local function server() + local responder = nil + try + responder = rpc_responder(socket,fns) + while not responder.is_closed() do + responder.respond() + end + catch e + logger.warn(e) + finally + responder and responder.after_close and responder.after_close() end - Thread.fork(server) end - catch = function(e) - logger.error(e) - end - } + Thread.fork(server) + catch e + logger.error(e) + end end_while end_function