Extend sd_bus_message_append_basic to take length of a string

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi folks,

Does sd-bus API provide a way to append a char string of a basic type (be it SD_BUS_TYPE_STRING, SD_BUS_TYPE_OBJECT_PATH, or SD_BUS_TYPE_SIGNATURE for that matter) to a D-Bus message while allowing the caller to explicitly specify the length of that char string?

sd_bus_message_append_basic()​ function takes a pointer only, and calls strlen()​ on that pointer.

If there is no such API, could we add a new function with string size as an additional parameter. It would make the API more usable and general and, as a specific use case, help C++ code using sd-bus API to append char strings of type std::string_view​ to the D-Bus message without having to convert a std::string_view​ to a std::string​ just to get null-terminated string which can then be passed safely to sd_bus_message_append_basic()​. Right now we have to do that conversion which defeats the fundamental purpose of std::string_view​ type in C++ standard library.

For example something along these lines:

int sd_bus_message_append_basic_string_n(sd_bus_message *m, char type, const void *p, size_t len);

Which would work only for the above-mentioned three D-Bus string types.

And in C++ code (sdbus-c++ wrapper, for example), we could call it simply like this:

std::string_view view{...};
sd_bus_message_append_basic_string_n(msg, SD_BUS_TYPE_STRING, view.data(), view.length());

What do you think of this proposal? Could we extend sd-bus API along these lines? Would you do that or shall I create a PR?

Kind regards,

Stanislav.


[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux