annotate core/src/luan/modules/Rpc.luan @ 743:2c41f2aec92f

improve Rpc and implement rpc call for local webserver
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 13 Jul 2016 17:27:35 -0600
parents ca169567ce07
children 3f461f85243d
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()
693
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 610
diff changeset
6 local Io = require "luan:Io.luan"
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 610
diff changeset
7 local Thread = require "luan:Thread.luan"
610
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
8
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
9
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
10 local M = {}
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
11
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
12 M.port = 9101
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
13
610
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
14 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
15
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
16 M.functions = {}
610
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
17
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
18 function M.respond(socket,fns)
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
19 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
20 end
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
21
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
22 function M.remote_socket(socket_uri)
610
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
23 local mt = {}
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
24 function mt.__index(_,key)
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
25 return function(...)
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
26 local socket = Io.uri(socket_uri)
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
27 return M.call(socket,key,...)
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
28 end
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
29 end
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
30 local t = {}
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
31 set_metatable(t,mt)
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
32 return t
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
33 end
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
34
743
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
35 function M.remote(domain)
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
36 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
37 return M.remote_socket(socket)
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
38 end
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
39
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
40 function M.responder(fns)
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
41 local server = Io.socket_server(M.port)
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
42 return function()
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
43 local socket = server()
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
44 M.respond(socket,fns)
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
45 end
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
46 end
2c41f2aec92f improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
47
610
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
48 --[[
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
49 function M.serve(port,fns)
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
50 local server = Io.socket_server(port)
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
51 while true do
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
52 local socket = server()
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
53 Thread.fork(function() M.respond(socket,fns) end)
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
54 end
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
55 end
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
56 ]]
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
57
b4f3dbe1c6e3 add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
58 return M