annotate src/luan/modules/Rpc.luan @ 775:1a68fc55a80c

simplify dir structure
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 26 Aug 2016 14:36:40 -0600
parents core/src/luan/modules/Rpc.luan@3f461f85243d
children bae2d0c2576c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
610
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
1 java()
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
2 local RpcLuan = require "java:luan.modules.RpcLuan"
693
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 610
diff changeset
3 local Luan = require "luan:Luan.luan"
610
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
4 local error = Luan.error
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
5 local set_metatable = Luan.set_metatable or error()
762
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
6 local try = Luan.try or error()
693
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 610
diff changeset
7 local Io = require "luan:Io.luan"
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 610
diff changeset
8 local Thread = require "luan:Thread.luan"
762
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
9 local Logging = require "luan:logging/Logging.luan" -- external dependency
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
10 local logger = Logging.logger "Rpc"
610
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
11
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
12
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
13 local M = {}
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
14
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
15 M.port = 9101
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
16
610
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
17 M.call = RpcLuan.call -- Rpc.call(socket,fn_name,...)
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
18
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
19 M.functions = {}
610
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
20
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
21 function M.respond(socket,fns)
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
22 RpcLuan.respond( socket, fns or M.functions )
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
23 end
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
24
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
25 function M.remote_socket(socket_uri)
610
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
26 local mt = {}
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
27 function mt.__index(_,key)
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
28 return function(...)
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
29 local socket = Io.uri(socket_uri)
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
30 return M.call(socket,key,...)
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
31 end
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
32 end
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
33 local t = {}
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
34 set_metatable(t,mt)
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
35 return t
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
36 end
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
37
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
38 function M.remote(domain)
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
39 local socket = "socket:" .. domain .. ":" .. M.port
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
40 return M.remote_socket(socket)
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
41 end
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
42
762
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
43 function M.serve(port,fns)
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
44 local server = Io.socket_server(port or M.port)
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
45 while true do
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
46 try {
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
47 function()
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
48 local socket = server()
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
49 local function respond()
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
50 try {
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
51 function()
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
52 M.respond(socket,fns)
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
53 end
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
54 catch = function(e)
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
55 logger.error(e)
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
56 end
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
57 }
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
58 end
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
59 Thread.fork(respond)
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
60 end
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
61 catch = function(e)
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
62 logger.error(e)
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
63 end
3f461f85243d better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 743
diff changeset
64 }
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
65 end
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
66 end
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
67
610
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
68 return M