<div dir="ltr">We should have common headers for this because I'd like to see us have a typesafe client interface that is autogenerated with the server interface. I wrote the code a while back to implement a typesafe sdbusplus client interface but never finished the generator code that automatically defines the types and DBus strings.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Feb 13, 2020 at 6:39 AM Lei YU <<a href="mailto:mine260309@gmail.com">mine260309@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Currently, sdbus++ generates the server code separately, and in<br>
phosphor-dbus-interfaces, the separated headers are installed, and the<br>
separated cpp files are combined together, and compiled as a library.<br>
The public information of the interfaces (e.g, the interface strings,<br>
the enum strings) are either in the separated header or in the cpp<br>
files.<br>
<br>
The result is, when a phosphor service needs to use an interface, or<br>
an enum, it has to define the interface string or the enum string<br>
manually, and it happens everywhere.<br>
<br>
How about<br>
1. Making sdbusplus to generate a "common" header for each interface<br>
including the public information;<br>
2. Then phosphor-dbus-interfaces could generate a single header file<br>
that includes all the public information of the interfaces;<br>
3. Then the phosphor service could include a single header file, and<br>
use the interface/enum strings it needs, without manually defining<br>
them?<br>
<br>
There is an initial concept implementation:<br>
* <a href="https://github.com/mine260309/sdbusplus/commit/78cb63fb7e1ceb62165c71e15779f23f7e9f166c" rel="noreferrer" target="_blank">https://github.com/mine260309/sdbusplus/commit/78cb63fb7e1ceb62165c71e15779f23f7e9f166c</a><br>
* <a href="https://github.com/mine260309/phosphor-dbus-interfaces/commit/6079d25547f0143fc7562a1c7ee6beb888a66432" rel="noreferrer" target="_blank">https://github.com/mine260309/phosphor-dbus-interfaces/commit/6079d25547f0143fc7562a1c7ee6beb888a66432</a><br>
<br>
With the above changes, a service could directly use the generated<br>
interface string, e.g.<br>
`sdbusplus::xyz::openbmc_project::Software::ApplyTime::interface`.<br>
In the future, the enum strings could be put there and thus we do not<br>
have to manually write the long full qualified string.<br>
<br>
Ideas and suggestions are welcome.<br>
</blockquote></div>