"Fossies" - the Fresh Open Source Software Archive

Member "memcached-1.6.15/bipbuffer.h" (16 Jul 2020, 2118 Bytes) of package /linux/www/memcached-1.6.15.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "bipbuffer.h" see the Fossies "Dox" file reference documentation.

    1 #ifndef BIPBUFFER_H
    2 #define BIPBUFFER_H
    3 
    4 typedef struct
    5 {
    6     unsigned long int size;
    7 
    8     /* region A */
    9     unsigned int a_start, a_end;
   10 
   11     /* region B */
   12     unsigned int b_end;
   13 
   14     /* is B inuse? */
   15     int b_inuse;
   16 
   17     unsigned char data[];
   18 } bipbuf_t;
   19 
   20 /**
   21  * Create a new bip buffer.
   22  *
   23  * malloc()s space
   24  *
   25  * @param[in] size The size of the buffer */
   26 bipbuf_t *bipbuf_new(const unsigned int size);
   27 
   28 /**
   29  * Initialise a bip buffer. Use memory provided by user.
   30  *
   31  * No malloc()s are performed.
   32  *
   33  * @param[in] size The size of the array */
   34 void bipbuf_init(bipbuf_t* me, const unsigned int size);
   35 
   36 /**
   37  * Free the bip buffer */
   38 void bipbuf_free(bipbuf_t *me);
   39 
   40 /* TODO: DOCUMENTATION */
   41 unsigned char *bipbuf_request(bipbuf_t* me, const int size);
   42 int bipbuf_push(bipbuf_t* me, const int size);
   43 
   44 /**
   45  * @param[in] data The data to be offered to the buffer
   46  * @param[in] size The size of the data to be offered
   47  * @return number of bytes offered */
   48 int bipbuf_offer(bipbuf_t *me, const unsigned char *data, const int size);
   49 
   50 /**
   51  * Look at data. Don't move cursor
   52  *
   53  * @param[in] len The length of the data to be peeked
   54  * @return data on success, NULL if we can't peek at this much data */
   55 unsigned char *bipbuf_peek(const bipbuf_t* me, const unsigned int len);
   56 
   57 /**
   58  * Look at data. Don't move cursor
   59  *
   60  * @param[in] len The length of the data returned
   61  * @return data on success, NULL if nothing available */
   62 unsigned char *bipbuf_peek_all(const bipbuf_t* me, unsigned int *len);
   63 
   64 /**
   65  * Get pointer to data to read. Move the cursor on.
   66  *
   67  * @param[in] len The length of the data to be polled
   68  * @return pointer to data, NULL if we can't poll this much data */
   69 unsigned char *bipbuf_poll(bipbuf_t* me, const unsigned int size);
   70 
   71 /**
   72  * @return the size of the bipbuffer */
   73 int bipbuf_size(const bipbuf_t* me);
   74 
   75 /**
   76  * @return 1 if buffer is empty; 0 otherwise */
   77 int bipbuf_is_empty(const bipbuf_t* me);
   78 
   79 /**
   80  * @return how much space we have assigned */
   81 int bipbuf_used(const bipbuf_t* cb);
   82 
   83 /**
   84  * @return bytes of unused space */
   85 int bipbuf_unused(const bipbuf_t* me);
   86 
   87 #endif /* BIPBUFFER_H */