mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-05-16 22:58:02 +00:00
MINOR: quic: redirect app_ops snd_buf through mux
This change is required to be able to use multiple app_ops layer on top of QUIC. The stream-interface will now call the mux snd_buf which is just a proxy to the app_ops snd_buf function. The architecture may be simplified in the structure to install the app_ops on the stream_interface and avoid the detour via the mux layer on the sending path.
This commit is contained in:
parent
d1acaf9828
commit
abbe91e5e8
@ -239,6 +239,7 @@ struct qcc_app_ops {
|
|||||||
int (*init)(struct qcc *qcc);
|
int (*init)(struct qcc *qcc);
|
||||||
int (*attach_ruqs)(struct qcs *qcs, void *ctx);
|
int (*attach_ruqs)(struct qcs *qcs, void *ctx);
|
||||||
int (*decode_qcs)(struct qcs *qcs, void *ctx);
|
int (*decode_qcs)(struct qcs *qcs, void *ctx);
|
||||||
|
size_t (*snd_buf)(struct conn_stream *cs, struct buffer *buf, size_t count, int flags);
|
||||||
int (*finalize)(void *ctx);
|
int (*finalize)(void *ctx);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -121,7 +121,5 @@ static inline void *qcs_new(struct qcc *qcc, uint64_t id)
|
|||||||
return bidi_qcs_new(qcc, id);
|
return bidi_qcs_new(qcc, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t qc_snd_buf(struct conn_stream *cs, struct buffer *buf, size_t count, int flags);
|
|
||||||
|
|
||||||
#endif /* USE_QUIC */
|
#endif /* USE_QUIC */
|
||||||
#endif /* _HAPROXY_MUX_QUIC_H */
|
#endif /* _HAPROXY_MUX_QUIC_H */
|
||||||
|
1
src/h3.c
1
src/h3.c
@ -820,5 +820,6 @@ const struct qcc_app_ops h3_ops = {
|
|||||||
.init = h3_init,
|
.init = h3_init,
|
||||||
.attach_ruqs = h3_attach_ruqs,
|
.attach_ruqs = h3_attach_ruqs,
|
||||||
.decode_qcs = h3_decode_qcs,
|
.decode_qcs = h3_decode_qcs,
|
||||||
|
.snd_buf = h3_snd_buf,
|
||||||
.finalize = h3_finalize,
|
.finalize = h3_finalize,
|
||||||
};
|
};
|
||||||
|
@ -1852,6 +1852,12 @@ static int qc_show_fd(struct buffer *msg, struct connection *conn)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static size_t qc_snd_buf(struct conn_stream *cs, struct buffer *buf, size_t count, int flags)
|
||||||
|
{
|
||||||
|
struct qcs *qcs = cs->ctx;
|
||||||
|
return qcs->qcc->app_ops->snd_buf(cs, buf, count, flags);
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************/
|
/****************************************/
|
||||||
/* MUX initialization and instantiation */
|
/* MUX initialization and instantiation */
|
||||||
/***************************************/
|
/***************************************/
|
||||||
@ -1860,8 +1866,7 @@ static int qc_show_fd(struct buffer *msg, struct connection *conn)
|
|||||||
static const struct mux_ops qc_ops = {
|
static const struct mux_ops qc_ops = {
|
||||||
.init = qc_init,
|
.init = qc_init,
|
||||||
.wake = qc_wake,
|
.wake = qc_wake,
|
||||||
//.snd_buf = qc_snd_buf,
|
.snd_buf = qc_snd_buf,
|
||||||
.snd_buf = h3_snd_buf,
|
|
||||||
.rcv_buf = qc_rcv_buf,
|
.rcv_buf = qc_rcv_buf,
|
||||||
.subscribe = qc_subscribe,
|
.subscribe = qc_subscribe,
|
||||||
.unsubscribe = qc_unsubscribe,
|
.unsubscribe = qc_unsubscribe,
|
||||||
|
Loading…
Reference in New Issue
Block a user