Vowpal Wabbit
Public Member Functions | Public Attributes | List of all members
comp_io_buf Class Reference

#include <comp_io.h>

Inheritance diagram for comp_io_buf:
io_buf

Public Member Functions

int open_file (const char *name, bool stdin_off, int flag) override
 
void reset_file (int f) override
 
ssize_t read_file (int f, void *buf, size_t nbytes) override
 
size_t num_files () override
 
ssize_t write_file (int file, const void *buf, size_t nbytes) override
 
bool compressed () override
 
void flush () override
 
bool close_file () override
 
- Public Member Functions inherited from io_buf
void verify_hash (bool verify)
 
uint32_t hash ()
 
virtual int open_file (const char *name, bool stdin_off)
 
 io_buf ()
 
virtual ~io_buf ()
 
void set (char *p)
 
ssize_t fill (int f)
 
void close_files ()
 
void buf_write (char *&pointer, size_t n)
 
size_t buf_read (char *&pointer, size_t n)
 
size_t bin_read_fixed (char *data, size_t len, const char *read_message)
 
size_t bin_write_fixed (const char *data, size_t len)
 

Public Attributes

std::vector< gzFilegz_files
 
- Public Attributes inherited from io_buf
v_array< char > space
 
v_array< int > files
 
size_t count
 
size_t current
 
char * head
 
v_array< char > currentname
 
v_array< char > finalname
 

Additional Inherited Members

- Static Public Member Functions inherited from io_buf
static ssize_t read_file_or_socket (int f, void *buf, size_t nbytes)
 
static ssize_t write_file_or_socket (int f, const void *buf, size_t nbytes)
 
static void close_file_or_socket (int f)
 
static bool is_socket (int f)
 
- Static Public Attributes inherited from io_buf
static constexpr int READ = 1
 
static constexpr int WRITE = 2
 

Detailed Description

Definition at line 19 of file comp_io.h.

Member Function Documentation

◆ close_file()

bool comp_io_buf::close_file ( )
overridevirtual

Reimplemented from io_buf.

Definition at line 76 of file comp_io.cc.

References v_array< T >::empty(), io_buf::files, gz_files, and v_array< T >::pop().

77 {
78  if (!gz_files.empty())
79  {
80  gzclose(gz_files.back());
81  gz_files.pop_back();
82  if (!files.empty())
83  files.pop();
84  return true;
85  }
86  return false;
87 }
T pop()
Definition: v_array.h:58
v_array< int > files
Definition: io_buf.h:64
std::vector< gzFile > gz_files
Definition: comp_io.h:22
bool empty() const
Definition: v_array.h:59

◆ compressed()

bool comp_io_buf::compressed ( )
overridevirtual

Reimplemented from io_buf.

Definition at line 67 of file comp_io.cc.

67 { return true; }

◆ flush()

void comp_io_buf::flush ( )
overridevirtual

Reimplemented from io_buf.

Definition at line 69 of file comp_io.cc.

References v_array< T >::begin(), v_array< T >::end(), io_buf::head, io_buf::space, and write_file().

70 {
71  if (write_file(0, space.begin(), head - space.end()) != (int)((head - space.end())))
72  std::cerr << "error, failed to write to cache\n";
73  head = space.begin();
74 }
T *& begin()
Definition: v_array.h:42
char * head
Definition: io_buf.h:67
ssize_t write_file(int file, const void *buf, size_t nbytes) override
Definition: comp_io.cc:61
v_array< char > space
Definition: io_buf.h:62
T *& end()
Definition: v_array.h:43

◆ num_files()

size_t comp_io_buf::num_files ( )
overridevirtual

Reimplemented from io_buf.

Definition at line 59 of file comp_io.cc.

References gz_files.

59 { return gz_files.size(); }
std::vector< gzFile > gz_files
Definition: comp_io.h:22

◆ open_file()

int comp_io_buf::open_file ( const char *  name,
bool  stdin_off,
int  flag 
)
overridevirtual

Reimplemented from io_buf.

Definition at line 5 of file comp_io.cc.

References io_buf::files, gz_files, v_array< T >::push_back(), io_buf::READ, and io_buf::WRITE.

6 {
7  gzFile fil = nullptr;
8  int ret = -1;
9  switch (flag)
10  {
11  case READ:
12  if (*name != '\0')
13  fil = gzopen(name, "rb");
14  else if (!stdin_off)
15 #ifdef _WIN32
16  fil = gzdopen(_fileno(stdin), "rb");
17 #else
18  fil = gzdopen(fileno(stdin), "rb");
19 #endif
20  if (fil != nullptr)
21  {
22  gz_files.push_back(fil);
23  ret = (int)gz_files.size() - 1;
24  files.push_back(ret);
25  }
26  break;
27 
28  case WRITE:
29  fil = gzopen(name, "wb");
30  if (fil != nullptr)
31  {
32  gz_files.push_back(fil);
33  ret = (int)gz_files.size() - 1;
34  files.push_back(ret);
35  }
36  break;
37 
38  default:
39  std::cerr << "Unknown file operation. Something other than READ/WRITE specified" << std::endl;
40  }
41  return ret;
42 }
static constexpr int WRITE
Definition: io_buf.h:72
static constexpr int READ
Definition: io_buf.h:71
void push_back(const T &new_ele)
Definition: v_array.h:107
v_array< int > files
Definition: io_buf.h:64
std::vector< gzFile > gz_files
Definition: comp_io.h:22
void * gzFile
Definition: comp_io.h:13

◆ read_file()

ssize_t comp_io_buf::read_file ( int  f,
void *  buf,
size_t  nbytes 
)
overridevirtual

Reimplemented from io_buf.

Definition at line 52 of file comp_io.cc.

References f, and gz_files.

53 {
54  gzFile fil = gz_files[f];
55  int num_read = gzread(fil, buf, (unsigned int)nbytes);
56  return (num_read > 0) ? num_read : 0;
57 }
std::vector< gzFile > gz_files
Definition: comp_io.h:22
void * gzFile
Definition: comp_io.h:13
float f
Definition: cache.cc:40

◆ reset_file()

void comp_io_buf::reset_file ( int  f)
overridevirtual

Reimplemented from io_buf.

Definition at line 44 of file comp_io.cc.

References v_array< T >::begin(), v_array< T >::end(), f, gz_files, io_buf::head, and io_buf::space.

45 {
46  gzFile fil = gz_files[f];
47  gzseek(fil, 0, SEEK_SET);
48  space.end() = space.begin();
49  head = space.begin();
50 }
T *& begin()
Definition: v_array.h:42
char * head
Definition: io_buf.h:67
v_array< char > space
Definition: io_buf.h:62
T *& end()
Definition: v_array.h:43
std::vector< gzFile > gz_files
Definition: comp_io.h:22
void * gzFile
Definition: comp_io.h:13
float f
Definition: cache.cc:40

◆ write_file()

ssize_t comp_io_buf::write_file ( int  file,
const void *  buf,
size_t  nbytes 
)
overridevirtual

Reimplemented from io_buf.

Definition at line 61 of file comp_io.cc.

References gz_files.

Referenced by flush().

62 {
63  int num_written = gzwrite(gz_files[file], buf, (unsigned int)nbytes);
64  return (num_written > 0) ? num_written : 0;
65 }
std::vector< gzFile > gz_files
Definition: comp_io.h:22

Member Data Documentation

◆ gz_files

std::vector<gzFile> comp_io_buf::gz_files

Definition at line 22 of file comp_io.h.

Referenced by close_file(), num_files(), open_file(), read_file(), reset_file(), and write_file().


The documentation for this class was generated from the following files: