Open Lighting Architecture: include/ola/io/IOVecInterface.h Source File

| Open Lighting Architecture 0.10.9

Loading...
Searching...
No Matches
IOVecInterface.h
1/*
2 * This library is free software; you can redistribute it and/or
3 * modify it under the terms of the GNU Lesser General Public
4 * License as published by the Free Software Foundation; either
5 * version 2.1 of the License, or (at your option) any later version.
6 *
7 * This library is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10 * Lesser General Public License for more details.
11 *
12 * You should have received a copy of the GNU Lesser General Public
13 * License along with this library; if not, write to the Free Software
14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15 *
16 * IOVecInterface.h
17 * An interface for a class which provides a way of accessing it's data via
18 * iovecs. This allows us to write the contents of the class to a network
19 * socket without incurring a copy.
20 * Copyright (C) 2013 Simon Newton
21 */
22
23#ifndef INCLUDE_OLA_IO_IOVECINTERFACE_H_
24#define INCLUDE_OLA_IO_IOVECINTERFACE_H_
25
26#include <stdlib.h>
27
28namespace ola {
29namespace io {
30
36 struct IOVec {
37 public:
38 /*
39 * Contains the address of a buffer.
40 */
41 void* iov_base;
42
43 /*
44 * Contains the length of the buffer.
45 */
46 size_t iov_len;
47};
48
53 class IOVecInterface {
54 public:
55 virtual ~IOVecInterface() {}
56
57 /*
58 * Returns a pointer to an array of IOVecs and sets io_count to be the
59 * number of IOVecs in the array.
60 */
61 virtual const struct IOVec *AsIOVec(int *io_count) const = 0;
62
66 virtual void Pop(unsigned int bytes) = 0;
67
68 /*
69 * Frees the IOVec array returned by AsIOVec()
70 */
71 static void FreeIOVec(const struct IOVec *iov) {
72 if (iov)
73 delete[] iov;
74 }
75};
76} // namespace io
77} // namespace ola
78#endif // INCLUDE_OLA_IO_IOVECINTERFACE_H_
ola::io::IOVecInterface
Definition IOVecInterface.h:53
ola::io::IOVecInterface::Pop
virtual void Pop(unsigned int bytes)=0
ola::io
Classes for general I/O and event handling.
Definition Descriptor.cpp:49
ola
The namespace containing all OLA symbols.
Definition Credentials.cpp:44
ola::io::IOVec
Definition IOVecInterface.h:36