Rudiments
filedescriptor.h
1 // Copyright (c) 2002 David Muse
2 // See the COPYING file for more information.
3 
4  friend class timezonefile;
5  protected:
6 
7  void filedescriptorInit();
8  void filedescriptorClone(const filedescriptor &f);
9 
10  virtual ssize_t bufferedRead(void *buf, ssize_t count,
11  long sec, long usec) const;
12  virtual ssize_t bufferedWrite(const void *buf, ssize_t count,
13  long sec, long usec) const;
14  virtual ssize_t safeRead(void *buf, ssize_t count,
15  long sec, long usec) const;
16  virtual ssize_t safeWrite(const void *buf, ssize_t count,
17  long sec, long usec) const;
18  virtual int32_t safeSelect(long sec, long usec,
19  bool read, bool write) const;
20  virtual int32_t safePoll(long sec, long usec,
21  bool read, bool write) const;
22  bool setNoDelay(int32_t onoff);
23 
24  #ifdef RUDIMENTS_HAS_SSL
25  virtual BIO *newSSLBIO() const;
26  #endif
27 
28  int32_t getSockOpt(int32_t level, int32_t optname,
29  void *optval, socklen_t *optlen);
30  int32_t setSockOpt(int32_t level, int32_t optname,
31  const void *optval, socklen_t optlen);
32 
33  virtual ssize_t lowLevelRead(void *buf,
34  ssize_t count) const;
35  virtual ssize_t lowLevelWrite(const void *buf,
36  ssize_t count) const;
37  virtual int32_t lowLevelClose();
38 
39  const char *type() const;
40  void type(const char *tp);
41 
42  int32_t fd() const;
43  void fd(int32_t filedes);
44 
45  #ifdef RUDIMENTS_HAS_SSL
46  SSL_CTX *ctx();
47  SSL *ssl();
48  int32_t sslresult();
49  void sslresult(int32_t sslrslt);
50  #endif
51 
52  private:
53  filedescriptorprivate *pvt;