lugu / qiloop

An implementation of QiMessaging in Go
MIT License
9 stars 1 forks source link

resolve action name using the signature (#30) #31

Closed lugu closed 4 years ago

lugu commented 4 years ago

An object can have several methods or signature with the same name. This is the case of the ALMotion.moveTo API. In such case we need to search an action based on the name and the signature.

Unfortunatly QiLoop have concept of compatible signatures. Here is an example of missmatch:

(dlv) p sig
"(Is)<serviceRemoved,serviceID,name>"
(dlv) p m.Signals
map[uint32]github.com/lugu/qiloop/type/object.MetaSignal [
    86: {
        Uid: 86,
        Name: "traceObject",
        Signature: "((IiIm(ll)<timeval,tv_sec,tv_usec>llII)<EventTrace,id,kind,slotI...+75 more",},
    106: {
        Uid: 106,
        Name: "serviceAdded",
        Signature: "(Is)",},
    107: {
        Uid: 107,
        Name: "serviceRemoved",
        Signature: "(Is)",},
]

Until a proper signature comparison method is found, we rely on the hack:

For methods, find the first with:

For signals and properties:

This is clearly not satisfactory and a proper signature comparison algorithm is needed. It can be cased on a flatten conversion to tuple. Like:

codecov-io commented 4 years ago

Codecov Report

Merging #31 into master will decrease coverage by 0.73%. The diff coverage is 47.73%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #31      +/-   ##
==========================================
- Coverage   68.35%   67.61%   -0.74%     
==========================================
  Files          51       51              
  Lines        8876     9013     +137     
==========================================
+ Hits         6067     6094      +27     
- Misses       2169     2244      +75     
- Partials      640      675      +35
Impacted Files Coverage Δ
bus/proxy.go 72.34% <0%> (-14.76%) :arrow_down:
bus/object.go 62.8% <100%> (ø) :arrow_up:
meta/idl/proxy.go 92.12% <100%> (+0.07%) :arrow_up:
examples/space/space_stub_gen.go 51.86% <28.57%> (-0.39%) :arrow_down:
bus/logger/logger_stub_gen.go 48.78% <39.28%> (-0.74%) :arrow_down:
bus/object_stub_gen.go 28.21% <44.44%> (+0.03%) :arrow_up:
bus/directory/directory_stub_gen.go 63.56% <47.36%> (-1.76%) :arrow_down:
type/object/metaobject_decorator.go 55.22% <50%> (-8.86%) :arrow_down:
examples/clock/clock_stub_gen.go 59.49% <50%> (-1.04%) :arrow_down:
examples/pong/ping_stub_gen.go 61.43% <54.54%> (-1.15%) :arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update e8385b3...325f5c7. Read the comment docs.