Mercurial Hosting > luan
comparison core/src/luan/modules/Rpc.luan @ 762:3f461f85243d
better rpc thread handling
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 20 Jul 2016 23:55:59 -0600 |
parents | 2c41f2aec92f |
children |
comparison
equal
deleted
inserted
replaced
761:99356cfde2f0 | 762:3f461f85243d |
---|---|
1 java() | 1 java() |
2 local RpcLuan = require "java:luan.modules.RpcLuan" | 2 local RpcLuan = require "java:luan.modules.RpcLuan" |
3 local Luan = require "luan:Luan.luan" | 3 local Luan = require "luan:Luan.luan" |
4 local error = Luan.error | 4 local error = Luan.error |
5 local set_metatable = Luan.set_metatable or error() | 5 local set_metatable = Luan.set_metatable or error() |
6 local try = Luan.try or error() | |
6 local Io = require "luan:Io.luan" | 7 local Io = require "luan:Io.luan" |
7 local Thread = require "luan:Thread.luan" | 8 local Thread = require "luan:Thread.luan" |
9 local Logging = require "luan:logging/Logging.luan" -- external dependency | |
10 local logger = Logging.logger "Rpc" | |
8 | 11 |
9 | 12 |
10 local M = {} | 13 local M = {} |
11 | 14 |
12 M.port = 9101 | 15 M.port = 9101 |
35 function M.remote(domain) | 38 function M.remote(domain) |
36 local socket = "socket:" .. domain .. ":" .. M.port | 39 local socket = "socket:" .. domain .. ":" .. M.port |
37 return M.remote_socket(socket) | 40 return M.remote_socket(socket) |
38 end | 41 end |
39 | 42 |
40 function M.responder(fns) | 43 function M.serve(port,fns) |
41 local server = Io.socket_server(M.port) | 44 local server = Io.socket_server(port or M.port) |
42 return function() | 45 while true do |
43 local socket = server() | 46 try { |
44 M.respond(socket,fns) | 47 function() |
48 local socket = server() | |
49 local function respond() | |
50 try { | |
51 function() | |
52 M.respond(socket,fns) | |
53 end | |
54 catch = function(e) | |
55 logger.error(e) | |
56 end | |
57 } | |
58 end | |
59 Thread.fork(respond) | |
60 end | |
61 catch = function(e) | |
62 logger.error(e) | |
63 end | |
64 } | |
45 end | 65 end |
46 end | 66 end |
47 | 67 |
48 --[[ | |
49 function M.serve(port,fns) | |
50 local server = Io.socket_server(port) | |
51 while true do | |
52 local socket = server() | |
53 Thread.fork(function() M.respond(socket,fns) end) | |
54 end | |
55 end | |
56 ]] | |
57 | |
58 return M | 68 return M |