Hi all, This is a proposal for a new API to abstract the construction of the TSClientProtoStack. Currently, plugin authors are expected to construct TSClientProtoStack values by bitshifting them into their correct locations. This is tedious likely to be error-prone.
https://issues.apache.org/jira/browse/TS-2699 The following function will be added: TSClientProtoStack TSClientProtoStackCreate(TSProtoType, ...) The TS_PROTO_MAX will be removed and replaced with TS_PROTO_NULL, whose value will be 32. Since TS_PROTO_MAX is the last value in the TSProtoType enumeration, it's value will change when we add new TSProtoType values, causing each new addition to be an ABI breakage. TS_PROTO_NULL solves this issue. TSClientProtoStackCreate() accepts a sequence of TSProtoType values, terminated by a TS_PROTO_NULL. It combines the values and returns a TSClientProtoStack value that describes the protocol layering of a client request. diff --git a/lib/ts/apidefs.h.in b/lib/ts/apidefs.h.in index ffd8cbb..487c25e 100644 --- a/lib/ts/apidefs.h.in +++ b/lib/ts/apidefs.h.in @@ -118,8 +118,8 @@ extern "C" TS_PROTO_RTMP = 14, TS_PROTO_WBSK = 15, /* WebSocket */ - /* MAX value of TSProtoType */ - TS_PROTO_MAX + /* Sentinel value */ + TS_PROTO_NULL = 32 } TSProtoType; typedef uint32_t TSClientProtoStack; diff --git a/proxy/api/ts/ts.h b/proxy/api/ts/ts.h index 367317b..6139fb4 100644 --- a/proxy/api/ts/ts.h +++ b/proxy/api/ts/ts.h @@ -1577,6 +1577,9 @@ extern "C" /* -------------------------------------------------------------------------- Initiate Http Connection */ + + tsapi TSClientProtoStack TSClientProtoStackCreate(TSProtoType, ...); + /** Allows the plugin to initiate an http connection. The TSVConn the plugin receives as the result of successful operates identically to