176404edcSAsim Jamshed #ifndef __TCP_SEND_BUFFER_H_
276404edcSAsim Jamshed #define __TCP_SEND_BUFFER_H_
376404edcSAsim Jamshed 
476404edcSAsim Jamshed #include <stdlib.h>
576404edcSAsim Jamshed #include <stdint.h>
676404edcSAsim Jamshed 
776404edcSAsim Jamshed /*----------------------------------------------------------------------------*/
876404edcSAsim Jamshed typedef struct sb_manager* sb_manager_t;
976404edcSAsim Jamshed /*----------------------------------------------------------------------------*/
1076404edcSAsim Jamshed struct tcp_send_buffer
1176404edcSAsim Jamshed {
1276404edcSAsim Jamshed 	unsigned char *data;
1376404edcSAsim Jamshed 	unsigned char *head;
1476404edcSAsim Jamshed 
1576404edcSAsim Jamshed 	uint32_t head_off;
1676404edcSAsim Jamshed 	uint32_t tail_off;
1776404edcSAsim Jamshed 	uint32_t len;
1876404edcSAsim Jamshed 	uint64_t cum_len;
1976404edcSAsim Jamshed 	uint32_t size;
2076404edcSAsim Jamshed 
2176404edcSAsim Jamshed 	uint32_t head_seq;
2276404edcSAsim Jamshed 	uint32_t init_seq;
2376404edcSAsim Jamshed };
2476404edcSAsim Jamshed /*----------------------------------------------------------------------------*/
2576404edcSAsim Jamshed uint32_t
2676404edcSAsim Jamshed SBGetCurnum(sb_manager_t sbm);
2776404edcSAsim Jamshed /*----------------------------------------------------------------------------*/
2876404edcSAsim Jamshed sb_manager_t
2976404edcSAsim Jamshed SBManagerCreate(size_t chunk_size, uint8_t disable_rings, uint32_t concurrency);
3076404edcSAsim Jamshed /*----------------------------------------------------------------------------*/
3176404edcSAsim Jamshed struct tcp_send_buffer *
3276404edcSAsim Jamshed SBInit(sb_manager_t sbm, uint32_t init_seq);
3376404edcSAsim Jamshed /*----------------------------------------------------------------------------*/
3476404edcSAsim Jamshed void
3576404edcSAsim Jamshed SBFree(sb_manager_t sbm, struct tcp_send_buffer *buf);
3676404edcSAsim Jamshed /*----------------------------------------------------------------------------*/
3776404edcSAsim Jamshed size_t
38*a5e1a556SAsim Jamshed SBPut(sb_manager_t sbm, struct tcp_send_buffer *buf, const void *data, size_t len);
3976404edcSAsim Jamshed /*----------------------------------------------------------------------------*/
4076404edcSAsim Jamshed size_t
4176404edcSAsim Jamshed SBRemove(sb_manager_t sbm, struct tcp_send_buffer *buf, size_t len);
4276404edcSAsim Jamshed /*----------------------------------------------------------------------------*/
4376404edcSAsim Jamshed 
4476404edcSAsim Jamshed #endif /* __TCP_SEND_BUFFER_H_ */
45