libzypp  17.31.31
IOTools.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_BASE_IOTOOLS_H
13 #define ZYPP_BASE_IOTOOLS_H
14 
15 #include <stdio.h>
16 #include <utility>
17 #include <string>
18 #include <zypp-core/base/Exception.h>
19 
20 namespace zypp::io {
21 
22  enum class BlockingMode{
23  FailedToSetMode = -1,
24  WasBlocking,
26  };
27 
32  BlockingMode setFILEBlocking ( FILE *file, bool mode = true );
33  BlockingMode setFDBlocking ( int fd, bool mode = true );
34 
35 
39  bool writeAll ( int fd, void *buf, size_t size );
40 
44  enum class ReadAllResult {
45  Error,
46  Eof,
47  Ok
48  };
49  ReadAllResult readAll ( int fd, void *buf, size_t size );
50 
51  class TimeoutException : public Exception
52  {
53  public:
57  TimeoutException() : Exception( "Timeout Exception" )
58  {}
62  TimeoutException( const std::string & msg_r )
63  : Exception( msg_r )
64  {}
65 
67  virtual ~TimeoutException() noexcept override;
68  };
69 
75  };
76 
77  using timeout_type = size_t;
78  static constexpr timeout_type no_timeout = static_cast<timeout_type>(-1);
79 
86  std::pair<ReceiveUpToResult, std::string> receiveUpto( FILE * file, char c, timeout_type timeout, bool failOnUnblockError = true );
87 
91  std::vector<char> peek_data_fd ( FILE *fd, off_t offset, size_t count );
92 }
93 
94 #endif
95 
TimeoutException()
Ctor taking message.
Definition: IOTools.h:57
ReadAllResult
Definition: IOTools.h:44
BlockingMode setFILEBlocking(FILE *file, bool mode)
Enables or disabled non blocking mode on a file descriptor.
Definition: IOTools.cc:25
size_t timeout_type
Definition: IOTools.h:77
Failed to block or unblock the fd.
std::vector< char > peek_data_fd(FILE *fd, off_t offset, size_t count)
Definition: IOTools.cc:171
TimeoutException(const std::string &msg_r)
Ctor taking message.
Definition: IOTools.h:62
BlockingMode
Definition: IOTools.h:22
bool writeAll(int fd, void *buf, size_t size)
Definition: IOTools.cc:55
std::pair< ReceiveUpToResult, std::string > receiveUpto(FILE *file, char c, timeout_type timeout, bool failOnUnblockError)
Definition: IOTools.cc:85
Base class for Exception.
Definition: Exception.h:145
static constexpr timeout_type no_timeout
Definition: IOTools.h:78
FD was blocking before.
ReceiveUpToResult
Definition: IOTools.h:70
FD was non blocking before.
virtual ~TimeoutException() noexcept override
Dtor.
Definition: IOTools.cc:168
ReadAllResult readAll(int fd, void *buf, size_t size)
Definition: IOTools.cc:69
BlockingMode setFDBlocking(int fd, bool mode)
Definition: IOTools.cc:31