#define APPCTX_FL_ERROR 0x00000080
#define APPCTX_FL_SHUTDOWN 0x00000100 /* applet was shut down (->release() called if any). No more data exchange with SCs */
#define APPCTX_FL_WANT_DIE 0x00000200 /* applet was running and requested to die */
-#define APPCTX_FL_INOUT_BUFS 0x00000400 /* applet uses its own buffers */
+/* unused: 0x00000400 */
#define APPCTX_FL_FASTFWD 0x00000800 /* zero-copy forwarding is in-use, don't fill the outbuf */
#define APPCTX_FL_IN_MAYALLOC 0x00001000 /* applet may try again to allocate its inbuf */
#define APPCTX_FL_OUT_MAYALLOC 0x00002000 /* applet may try again to allocate its outbuf */
_(APPCTX_FL_OUTBLK_ALLOC, _(APPCTX_FL_OUTBLK_FULL,
_(APPCTX_FL_EOI, _(APPCTX_FL_EOS,
_(APPCTX_FL_ERR_PENDING, _(APPCTX_FL_ERROR,
- _(APPCTX_FL_SHUTDOWN, _(APPCTX_FL_WANT_DIE, _(APPCTX_FL_INOUT_BUFS,
- _(APPCTX_FL_FASTFWD, _(APPCTX_FL_IN_MAYALLOC, _(APPCTX_FL_OUT_MAYALLOC))))))))))))));
+ _(APPCTX_FL_SHUTDOWN, _(APPCTX_FL_WANT_DIE,
+ _(APPCTX_FL_FASTFWD, _(APPCTX_FL_IN_MAYALLOC, _(APPCTX_FL_OUT_MAYALLOC)))))))))))));
/* epilogue */
_(~0U);
return buf;
*/
static inline struct buffer *applet_get_inbuf(struct appctx *appctx)
{
- if (appctx->flags & APPCTX_FL_INOUT_BUFS) {
+ if (appctx->applet->flags & APPLET_FL_NEW_API) {
if (applet_fl_test(appctx, APPCTX_FL_INBLK_ALLOC) || !appctx_get_buf(appctx, &appctx->inbuf))
return NULL;
return &appctx->inbuf;
*/
static inline struct buffer *applet_get_outbuf(struct appctx *appctx)
{
- if (appctx->flags & APPCTX_FL_INOUT_BUFS) {
+ if (appctx->applet->flags & APPLET_FL_NEW_API) {
if (applet_fl_test(appctx, APPCTX_FL_OUTBLK_ALLOC|APPCTX_FL_OUTBLK_FULL) ||
!appctx_get_buf(appctx, &appctx->outbuf))
return NULL;
/* Returns the amount of data in the input buffer (see applet_get_inbuf) */
static inline size_t applet_input_data(const struct appctx *appctx)
{
- if (appctx->flags & APPCTX_FL_INOUT_BUFS)
+ if (appctx->applet->flags & APPLET_FL_NEW_API)
return b_data(&appctx->inbuf);
else
return co_data(sc_oc(appctx_sc(appctx)));
/* Returns the amount of HTX data in the input buffer (see applet_get_inbuf) */
static inline size_t applet_htx_input_data(const struct appctx *appctx)
{
- if (appctx->flags & APPCTX_FL_INOUT_BUFS)
+ if (appctx->applet->flags & APPLET_FL_NEW_API)
return htx_used_space(htxbuf(&appctx->inbuf));
else
return co_data(sc_oc(appctx_sc(appctx)));
*/
static inline void applet_skip_input(struct appctx *appctx, size_t len)
{
- if (appctx->flags & APPCTX_FL_INOUT_BUFS) {
+ if (appctx->applet->flags & APPLET_FL_NEW_API) {
b_del(&appctx->inbuf, len);
applet_fl_clr(appctx, APPCTX_FL_INBLK_FULL);
}
*/
static inline void applet_reset_input(struct appctx *appctx)
{
- if (appctx->flags & APPCTX_FL_INOUT_BUFS) {
+ if (appctx->applet->flags & APPLET_FL_NEW_API) {
b_reset(&appctx->inbuf);
applet_fl_clr(appctx, APPCTX_FL_INBLK_FULL);
}
*/
static inline size_t applet_output_room(const struct appctx *appctx)
{
- if (appctx->flags & APPCTX_FL_INOUT_BUFS)
+ if (appctx->applet->flags & APPLET_FL_NEW_API)
return b_room(&appctx->outbuf);
else
return channel_recv_max(sc_ic(appctx_sc(appctx)));
*/
static inline size_t applet_htx_output_room(const struct appctx *appctx)
{
- if (appctx->flags & APPCTX_FL_INOUT_BUFS)
+ if (appctx->applet->flags & APPLET_FL_NEW_API)
return htx_free_data_space(htxbuf(&appctx->outbuf));
else
return channel_recv_max(sc_ic(appctx_sc(appctx)));
*/
static inline void applet_need_room(struct appctx *appctx, size_t room_needed)
{
- if (appctx->flags & APPCTX_FL_INOUT_BUFS)
+ if (appctx->applet->flags & APPLET_FL_NEW_API)
applet_have_more_data(appctx);
else
sc_need_room(appctx_sc(appctx), room_needed);
{
int ret;
- if (appctx->flags & APPCTX_FL_INOUT_BUFS) {
+ if (appctx->applet->flags & APPLET_FL_NEW_API) {
if (unlikely(stress) ?
b_data(&appctx->outbuf) :
b_data(chunk) > b_room(&appctx->outbuf)) {
{
int ret;
- if (appctx->flags & APPCTX_FL_INOUT_BUFS) {
+ if (appctx->applet->flags & APPLET_FL_NEW_API) {
if (len > b_room(&appctx->outbuf)) {
applet_fl_set(appctx, APPCTX_FL_OUTBLK_FULL);
ret = -1;
{
int ret;
- if (appctx->flags & APPCTX_FL_INOUT_BUFS) {
+ if (appctx->applet->flags & APPLET_FL_NEW_API) {
int len = strlen(str);
if (len > b_room(&appctx->outbuf)) {
{
int ret;
- if (appctx->flags & APPCTX_FL_INOUT_BUFS) {
+ if (appctx->applet->flags & APPLET_FL_NEW_API) {
if (b_full(&appctx->outbuf)) {
applet_fl_set(appctx, APPCTX_FL_OUTBLK_FULL);
ret = -1;
static inline int applet_may_get(const struct appctx *appctx, size_t len)
{
- if (appctx->flags & APPCTX_FL_INOUT_BUFS) {
+ if (appctx->applet->flags & APPLET_FL_NEW_API) {
if (len > b_data(&appctx->inbuf)) {
if (se_fl_test(appctx->sedesc, SE_FL_SHW))
return -1;
ret = applet_may_get(appctx, 1);
if (ret <= 0)
return ret;
- *c = ((appctx->flags & APPCTX_FL_INOUT_BUFS)
+ *c = ((appctx->applet->flags & APPLET_FL_NEW_API)
? *(b_head(&appctx->inbuf))
: *(co_head(sc_oc(appctx_sc(appctx)))));
if (ret <= 0)
return ret;
- buf = ((appctx->flags & APPCTX_FL_INOUT_BUFS)
+ buf = ((appctx->applet->flags & APPLET_FL_NEW_API)
? &appctx->inbuf
: sc_ob(appctx_sc(appctx)));
return b_getblk(buf, blk, len, offset);
if (ret <= 0)
goto out;
- if (appctx->flags & APPCTX_FL_INOUT_BUFS) {
+ if (appctx->applet->flags & APPLET_FL_NEW_API) {
buf = &appctx->inbuf;
input = b_data(buf);
}
p = b_next(buf, p);
}
- if (appctx->flags & APPCTX_FL_INOUT_BUFS) {
+ if (appctx->applet->flags & APPLET_FL_NEW_API) {
if (ret < len && (ret < input || b_room(buf)) &&
!se_fl_test(appctx->sedesc, SE_FL_SHW))
ret = 0;
if (ret <= 0)
return ret;
- if (appctx->flags & APPCTX_FL_INOUT_BUFS) {
+ if (appctx->applet->flags & APPLET_FL_NEW_API) {
buf = &appctx->inbuf;
max = b_data(buf);
}
* the resulting string is made of the concatenation of the pending
* blocks (1 or 2).
*/
- if (appctx->flags & APPCTX_FL_INOUT_BUFS) {
+ if (appctx->applet->flags & APPLET_FL_NEW_API) {
if (b_full(&appctx->inbuf) || se_fl_test(appctx->sedesc, SE_FL_SHW))
return ret;
}