tree 95ba2f4e875aacb23c002bf9aafceaf9dd24981c
parent a564ac95dd5933d8e5660f3dd05c3076cca48c56
author Vernon Mauery <vernon.mauery@linux.intel.com> 1557273230 -0700
committer Vernon Mauery <vernon.mauery@linux.intel.com> 1557501083 -0700

Change yield_method_call to be no-throw

The yield_method_call() would throw despite the inferred promise that it
would not, because the caller could attach an error_code to the yield
object. But that would only protect from the dbus method call itself.
When it came time to unpack the response, the read(...) method call
would throw if the received types did not match the expected types. Now,
the method forces you to pass in an error_code and it will always return
the appropriate error instead of throw.

Tested-by: run asio-example to see that it works as expected:
    # /tmp/asio-example
    voidBar() -> 42
    async_send callback
    error with async_send
    async_method_call callback
    /org/openbmc/control/bmc0
    /org/openbmc/control/flash/bmc
    fooYield(yield, 41)...
    ipmiInterface:execute(61)
    ipmi call returns OK!
    fooYield(yield, 41)...
    foo(41) -> 42
    async call to Properties.Get serialized via yield OK!
    foo(41) -> 42
    yielding call to foo OK! (-> 42)
    TestYieldFunction return 42
    yielding call to foo OK! (-> 42)
    yielding call to TestYieldFunction serialized via yield OK!
    async call to Properties.Get serialized via yield OK!
    *** tick ***
    *** tock ***
    *** tick ***
    *** tick ***
    *** tick ***
    *** tick ***
    *** tick ***

Change-Id: Iea43acd432107b4149f8e549310cfce2518cbc1d
Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
