/* ==========================================================================
 * libevnet/src/bufio-membuf.h - Network server library for libevent.
 * --------------------------------------------------------------------------
 * Copyright (c) 2006  Barracuda Networks, Inc.
 * Copyright (c) 2006  William Ahern
 *
 * 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 EVNET_BUFIO_MEMBUF_H
#define EVNET_BUFIO_MEMBUF_H

struct bufio_membuf_options {
	int oneshot;
}; /* bufio_membuf_options */


#define BUFIO_MEMBUF_ONESHOT	(&bufio_membuf_oneshot)

extern const struct bufio_membuf_options bufio_membuf_oneshot;


#define BUFIO_MEMBUF_DEFAULTS	(&bufio_membuf_defaults)

extern const struct bufio_membuf_options bufio_membuf_defaults;


struct bufio_membuf {
	struct bufio_page page;

	struct bufio_membuf_options opts;

	BUFIO_IMPLEMENTS(bufio_membuf, bufio_source);
	BUFIO_IMPLEMENTS(bufio_membuf, bufio_sink);
}; /* struct bufio_membuf */


struct bufio_membuf *bufio_membuf_init(struct bufio_membuf *, const struct bufio_membuf_options *);

struct bufio_source *bufio_membuf_init_source(struct bufio_membuf *, const struct bufio_membuf_options *, const void *, size_t);

struct bufio_sink *bufio_membuf_init_sink(struct bufio_membuf *, const struct bufio_membuf_options *, void *, size_t);


struct bufio_source *bufio_membuf_to_source(struct bufio_membuf *);

struct bufio_sink *bufio_membuf_to_sink(struct bufio_membuf *);


#endif /* EVNET_BUFIO_MEMBUF_H */


syntax highlighted by Code2HTML, v. 0.9.1