Open Lighting Architecture
Latest Git
include
ola
io
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
28
namespace
ola
{
29
namespace
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::IOVec
Definition:
IOVecInterface.h:36
ola::io::IOVecInterface
Definition:
IOVecInterface.h:53
ola
The namespace containing all OLA symbols.
Definition:
Credentials.cpp:44
Generated on Mon Jan 2 2023 23:40:35 for Open Lighting Architecture by
1.8.13