mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-20 20:50:44 +00:00
MINOR: buffer: implement a new file for low-level buffer manipulation functions
The buffer code currently depends on pools and other stuff and is not really autonomous anymore. The rewrite of the new API is an opportunity to clean this up. This patch creates a new file (buf.h) which does not depend on other elements and which will only contain what is needed to perform the most basic buffer operations. The new API will be introduced in this file and the conversion will be finished once buffer.h is empty. The definition of struct buffer was moved to this new file, using more explicity stdint types for the sizes and offsets. Most new functions will be implemented in two variants : __b_something() : unchecked variant, no wrapping is expected b_something() : wrapping-checked variant This way callers will be able to select which one to use depending on the use cases.
This commit is contained in:
parent
9ddaf794a8
commit
41806d1c52
50
include/common/buf.h
Normal file
50
include/common/buf.h
Normal file
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* include/common/buf.h
|
||||
* Simple buffer handling.
|
||||
*
|
||||
* Copyright (C) 2000-2018 Willy Tarreau - w@1wt.eu
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _COMMON_BUF_H
|
||||
#define _COMMON_BUF_H
|
||||
|
||||
|
||||
/* Structure defining a buffer's head */
|
||||
struct buffer {
|
||||
char *p; /* buffer's start pointer, separates in and out data */
|
||||
unsigned int size; /* buffer size in bytes */
|
||||
unsigned int i; /* number of input bytes pending for analysis in the buffer */
|
||||
unsigned int o; /* number of out bytes the sender can consume from this buffer */
|
||||
char data[0]; /* <size> bytes of stored data */
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /* _COMMON_BUF_H */
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* c-indent-level: 8
|
||||
* c-basic-offset: 8
|
||||
* End:
|
||||
*/
|
@ -26,20 +26,13 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <common/buf.h>
|
||||
#include <common/chunk.h>
|
||||
#include <common/config.h>
|
||||
#include <common/ist.h>
|
||||
#include <common/memory.h>
|
||||
|
||||
|
||||
struct buffer {
|
||||
char *p; /* buffer's start pointer, separates in and out data */
|
||||
unsigned int size; /* buffer size in bytes */
|
||||
unsigned int i; /* number of input bytes pending for analysis in the buffer */
|
||||
unsigned int o; /* number of out bytes the sender can consume from this buffer */
|
||||
char data[0]; /* <size> bytes */
|
||||
};
|
||||
|
||||
/* an element of the <buffer_wq> list. It represents an object that need to
|
||||
* acquire a buffer to continue its process. */
|
||||
struct buffer_wait {
|
||||
|
Loading…
Reference in New Issue
Block a user