What's the advantage of using TSHeapBuf? What issue does it solve?
On Wed, Aug 31, 2022 at 7:48 AM Walt Karas <wka...@yahooinc.com.invalid> wrote: > Described here: > > https://github.com/apache/trafficserver/blob/os_pkey_cnf_reload/doc/developer-guide/api/functions/TSHeapBuf.en.rst#tsheapbufdata > , > > In PR https://github.com/apache/trafficserver/pull/8790 . > > This allows a dynamically allocated buffer, of any reasonable length, to be > returned by a TS API function, like this: > > TSHeapBuf hb = TSSomething(x, y, z); > > One alternative is an interface like this: > > int length; > char *data = TSSomething(x, y, z, &length); > > The data is dynamically allocated, and would be freed with TSfree(). > > Another alternative is: > > char *buf = TSalloc(BUF_SIZE); > int actual_size = TSSomething(x, y, z, buf, BUF_SIZE); > if (actual_size > BUF_SIZE) { > // buf was too small, unchanged. > TSfree(buf); > buf = TSalloc(actual_size); > TSSomething(x, y, z, buf, actual_size); > } >