aardio 文档

aardio 范例: JSON-RPC

//JSON-RPC
import win.ui;
/*DSG{{*/
var winform = win.form(text="JSON-RPC";right=759;bottom=469)
winform.add(
edit={cls="edit";left=13;top=18;right=734;bottom=444;edge=1;multiline=1;z=1}
)
/*}}*/

import process.python;  

//启动 JSON-RPC,参数可以是 Python 代码,Python 文件路径,或 Python 模块名称
var py = process.python.jsonRpc(`

#定义允许客户端调用的类
class MyTarget(object):

    def greet(self, name): 
        return "Hi, %s!" % name

    def add(self, a,b): 
        return a + b

#启动 JSON-RPC 服务端
from jsonrpyc import RPC;       
RPC( MyTarget() )
`); 

//调用 Python 进程提供的函数
var rep,err = py.greet("Jacen")

if( rep[["result"]] ){  
    winform.edit.print( `调用 py.greet("Jacen") 成功,返回值:`, rep.result ) 
} 
else{
    /*
    本地错误则 err 为错误信息,
    服务端错误则 err 为 rep[["error"]] 对象的 JSON 文本格式
    */
    winform.edit.print(  err )
}  

//可以写简单一些,例如
var ret = py.add(1,2)[["result"]];
winform.edit.print(`调用 py.add(1,2) 成功,返回值:`,ret)

//允许使用命名参数
py.rpc.kwargs = true;

/*
命名参数必须写在最前面,
第一个出现的位置参数对应服务端函数的第一个位置参数。
同一个参数不能既指定命名参数,又指定位置参数。
*/
var ret = py.add(b=123,2)[["result"]];
winform.edit.print(`调用 py.add(1,2) 成功,返回值:`,ret)

winform.show();
win.loopMessage();
Markdown 格式