return 0;
}
-void buffer::list::prepare_iov(std::vector<iovec> *piov) const
-{
- assert(_buffers.size() <= IOV_MAX);
- piov->resize(_buffers.size());
- unsigned n = 0;
- for (std::list<buffer::ptr>::const_iterator p = _buffers.begin();
- p != _buffers.end();
- ++p, ++n) {
- (*piov)[n].iov_base = (void *)p->c_str();
- (*piov)[n].iov_len = p->length();
- }
-}
-
int buffer::list::write_fd_zero_copy(int fd) const
{
if (!can_zero_copy())
#if defined(__linux__) || defined(__FreeBSD__)
#include <stdlib.h>
#endif
+#include <limits.h>
#ifndef _XOPEN_SOURCE
# define _XOPEN_SOURCE 600
int write_fd(int fd) const;
int write_fd(int fd, uint64_t offset) const;
int write_fd_zero_copy(int fd) const;
- void prepare_iov(std::vector<iovec> *piov) const;
+ template<typename VectorT>
+ void prepare_iov(VectorT *piov) const {
+ assert(_buffers.size() <= IOV_MAX);
+ piov->resize(_buffers.size());
+ unsigned n = 0;
+ for (std::list<buffer::ptr>::const_iterator p = _buffers.begin();
+ p != _buffers.end();
+ ++p, ++n) {
+ (*piov)[n].iov_base = (void *)p->c_str();
+ (*piov)[n].iov_len = p->length();
+ }
+ }
uint32_t crc32c(uint32_t crc) const;
void invalidate_crc();
};