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