|
|
@@ -111,22 +111,35 @@ func handleResponse(jsonStr string) {
|
|
|
func RTU_JsonMsgProcCb(jsonStr *C.char) *C.char {
|
|
|
s := C.GoString(jsonStr)
|
|
|
role := DetectJsonRole(s)
|
|
|
+
|
|
|
+ var w *jsonrpc2.Response
|
|
|
+
|
|
|
+ wret := func() *C.char {
|
|
|
+ b, err := w.String()
|
|
|
+ if err != nil {
|
|
|
+ return C.CString(fmt.Sprintf("an error occurred while calling the String() method of jsonrpc2.Response: %v", err))
|
|
|
+ }
|
|
|
+ return C.CString(b)
|
|
|
+ }
|
|
|
+
|
|
|
if role == "response" {
|
|
|
handleResponse(s)
|
|
|
return nil
|
|
|
- } else if role != "request" {
|
|
|
- return nil
|
|
|
+ }
|
|
|
+
|
|
|
+ if role != "request" {
|
|
|
+ w = jsonrpc2.BuildError(nil, jsonrpc2.ErrInvalidRequest, "")
|
|
|
+ return wret()
|
|
|
}
|
|
|
|
|
|
r, err := jsonrpc2.ParseRequest(s)
|
|
|
- var w *jsonrpc2.Response
|
|
|
|
|
|
call := func(f func(*jsonrpc2.Request) (*jsonrpc2.Response, error)) *jsonrpc2.Response {
|
|
|
- resp, e := f(r)
|
|
|
+ w, e := f(r)
|
|
|
if e != nil { // 调用本地RPC处理函数时发生错误
|
|
|
return jsonrpc2.BuildError(r, jsonrpc2.ErrInternal, "")
|
|
|
}
|
|
|
- return resp
|
|
|
+ return w
|
|
|
}
|
|
|
|
|
|
if err != nil {
|
|
|
@@ -150,11 +163,7 @@ func RTU_JsonMsgProcCb(jsonStr *C.char) *C.char {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- b, err := w.String()
|
|
|
- if err != nil {
|
|
|
- return C.CString(fmt.Sprintf("an error occurred while calling the String() method of RpcResponse: %v", err))
|
|
|
- }
|
|
|
- return C.CString(b)
|
|
|
+ return wret()
|
|
|
}
|
|
|
|
|
|
// 控制板查询数据板状态
|