/* * Copyright (c) 1995 Danny Gasparovski. * * Please read the file COPYRIGHT for the * terms and conditions of the copyright. */ #ifndef _SBUF_H_ #define _SBUF_H_ #include "mbuf.h" #include /* a SBuf is a simple circular buffer used to hold RX and TX data in a struct socket */ typedef struct sbuf { unsigned sb_cc; /* actual chars in buffer */ unsigned sb_datalen; /* Length of data */ char* sb_wptr; /* write pointer. points to where the next * bytes should be written in the sbuf */ char* sb_rptr; /* read pointer. points to where the next * byte should be read from the sbuf */ char* sb_data; /* Actual data */ } SBufRec, *SBuf; void sbuf_free (SBuf sb); void sbuf_drop (SBuf sb, int num); void sbuf_reserve (SBuf sb, int count); void sbuf_append (struct socket *so, MBuf m); void sbuf_appendsb(SBuf sb, MBuf m); void sbuf_copy (SBuf sb, int offset, int length, char *to); #define sbuf_flush(sb) sbuf_drop((sb),(sb)->sb_cc) #define sbuf_space(sb) ((sb)->sb_datalen - (sb)->sb_cc) #endif