You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@trafficserver.apache.org by Hiroaki Nakamura <hn...@gmail.com> on 2025/03/30 12:18:29 UTC
[API Proposal] Record reading functions returning std::optional
Hi, I'd like to propose new APIs for record reading functions which
return std::optional<T>.
std::optional<RecInt> RecGetRecordInt(const char *name, bool lock = true);
std::optional<RecFloat> RecGetRecordFloat(const char *name, bool
lock = true);
RecErrT RecGetRecordString(const char *name, char
*buf, int buf_len, bool lock = true);
std::optional<std::string> RecGetRecordStringAlloc(const char *name,
bool lock = true);
std::optional<RecCounter> RecGetRecordCounter(const char *name, bool
lock = true);
std::optional::has_value() for the result returns true if the value is
found or false otherwise.
The third API is unmodified from the current API.
The prerequisite for these APIs is to prohibit using nullptr as the
default value of string records.
Therefore we need to change the default value of proxy.config.diags.action.tags
from nullptr to an empty string "".
For details, please take a look at
https://github.com/apache/trafficserver/pull/12060#issuecomment-2763533666
and the comments above it.
I would appreciate any feedback on this proposal.
Thanks,
--
)Hioraki Nakamura) hnakamur@gmail.com
Re: [API Proposal] Record reading functions returning std::optional
Posted by Chris McFarlen <ch...@mcfarlen.us>.
+1
Sent with Proton Mail secure email.
On Monday, March 31st, 2025 at 6:13 AM, Hiroaki Nakamura <hn...@gmail.com> wrote:
> Hi,
>
> I'd like to change the third API from
>
> RecErrT RecGetRecordString(const char *name, char
> *buf, int buf_len, bool lock = true);
>
> to
>
> std::optionalstd::string_view RecGetRecordString(const char *name,
>
> char *buf, int buf_len, bool lock = true);
>
> as suggested by
> https://github.com/apache/trafficserver/pull/12060#issuecomment-2764549662
>
> 2025年3月30日(日) 21:18 Hiroaki Nakamura hnakamur@gmail.com:
>
> > Hi, I'd like to propose new APIs for record reading functions which
> > return std::optional<T>.
> >
> > std::optional<RecInt> RecGetRecordInt(const char *name, bool lock = true);
> > std::optional<RecFloat> RecGetRecordFloat(const char *name, bool
> > lock = true);
> > RecErrT RecGetRecordString(const char *name, char
> > *buf, int buf_len, bool lock = true);
> > std::optionalstd::string RecGetRecordStringAlloc(const char *name,
> > bool lock = true);
> > std::optional<RecCounter> RecGetRecordCounter(const char *name, bool
> > lock = true);
> >
> > std::optional::has_value() for the result returns true if the value is
> > found or false otherwise.
> > The third API is unmodified from the current API.
> >
> > The prerequisite for these APIs is to prohibit using nullptr as the
> > default value of string records.
> > Therefore we need to change the default value of proxy.config.diags.action.tags
> > from nullptr to an empty string "".
> >
> > For details, please take a look at
> > https://github.com/apache/trafficserver/pull/12060#issuecomment-2763533666
> > and the comments above it.
> >
> > I would appreciate any feedback on this proposal.
> > Thanks,
> >
> > --
> > )Hioraki Nakamura) hnakamur@gmail.com
Re: [API Proposal] Record reading functions returning std::optional
Posted by Hiroaki Nakamura <hn...@gmail.com>.
Hi,
I'd like to change the third API from
RecErrT RecGetRecordString(const char *name, char
*buf, int buf_len, bool lock = true);
to
std::optional<std::string_view> RecGetRecordString(const char *name,
char *buf, int buf_len, bool lock = true);
as suggested by
https://github.com/apache/trafficserver/pull/12060#issuecomment-2764549662
2025年3月30日(日) 21:18 Hiroaki Nakamura <hn...@gmail.com>:
>
> Hi, I'd like to propose new APIs for record reading functions which
> return std::optional<T>.
>
> std::optional<RecInt> RecGetRecordInt(const char *name, bool lock = true);
> std::optional<RecFloat> RecGetRecordFloat(const char *name, bool
> lock = true);
> RecErrT RecGetRecordString(const char *name, char
> *buf, int buf_len, bool lock = true);
> std::optional<std::string> RecGetRecordStringAlloc(const char *name,
> bool lock = true);
> std::optional<RecCounter> RecGetRecordCounter(const char *name, bool
> lock = true);
>
> std::optional::has_value() for the result returns true if the value is
> found or false otherwise.
> The third API is unmodified from the current API.
>
> The prerequisite for these APIs is to prohibit using nullptr as the
> default value of string records.
> Therefore we need to change the default value of proxy.config.diags.action.tags
> from nullptr to an empty string "".
>
> For details, please take a look at
> https://github.com/apache/trafficserver/pull/12060#issuecomment-2763533666
> and the comments above it.
>
> I would appreciate any feedback on this proposal.
> Thanks,
>
> --
> )Hioraki Nakamura) hnakamur@gmail.com