Rudiments
filedescriptor.h
1 // Copyright (c) 2002 David Muse
2 // See the COPYING file for more information.
3 
4 #ifndef RUDIMENTS_FILEDESCRIPTOR_H
5 #define RUDIMENTS_FILEDESCRIPTOR_H
6 
7 #include <rudiments/private/filedescriptorincludes.h>
8 
9 class listener;
10 
13 class RUDIMENTS_DLLSPEC filedescriptor : public input, public output {
14  public:
17 
21 
24  filedescriptor &operator=(const filedescriptor &f);
25 
28  virtual ~filedescriptor();
29 
32  virtual bool close();
33 
35  int32_t getFileDescriptor() const;
36 
39  void setFileDescriptor(int32_t filedesc);
40 
50  int32_t duplicate() const;
51 
58  bool duplicate(int32_t newfd) const;
59 
62  void setSecurityContext(securitycontext *ctx);
63 
67  securitycontext *getSecurityContext();
68 
71  virtual bool supportsBlockingNonBlockingModes();
72 
76  virtual bool useNonBlockingMode() const;
77 
81  virtual bool useBlockingMode() const;
82 
85  virtual bool isUsingNonBlockingMode() const;
86 
90  ssize_t write(uint16_t number);
91 
95  ssize_t write(uint32_t number);
96 
100  ssize_t write(uint64_t number);
101 
105  ssize_t write(int16_t number);
106 
110  ssize_t write(int32_t number);
111 
115  ssize_t write(int64_t number);
116 
120  ssize_t write(float number);
121 
125  ssize_t write(double number);
126 
130  ssize_t write(unsigned char character);
131 
135  ssize_t write(char character);
136 
140  ssize_t write(bool value);
141 
145  ssize_t write(const unsigned char *string);
146 
150  ssize_t write(const char *string);
151 
157  ssize_t write(const unsigned char *string, size_t size);
158 
164  ssize_t write(const char *string, size_t size);
165 
169  ssize_t write(const void *buffer, size_t size);
170 
176  ssize_t write(uint16_t number, int32_t sec, int32_t usec);
177 
183  ssize_t write(uint32_t number, int32_t sec, int32_t usec);
184 
190  ssize_t write(uint64_t number, int32_t sec, int32_t usec);
191 
197  ssize_t write(int16_t number, int32_t sec, int32_t usec);
198 
204  ssize_t write(int32_t number, int32_t sec, int32_t usec);
205 
211  ssize_t write(int64_t number, int32_t sec, int32_t usec);
212 
218  ssize_t write(float number, int32_t sec, int32_t usec);
219 
225  ssize_t write(double number, int32_t sec, int32_t usec);
226 
232  ssize_t write(unsigned char character,
233  int32_t sec, int32_t usec);
234 
240  ssize_t write(char character, int32_t sec, int32_t usec);
241 
247  ssize_t write(bool value, int32_t sec, int32_t usec);
248 
254  ssize_t write(const unsigned char *string,
255  int32_t sec, int32_t usec);
256 
262  ssize_t write(const char *string,
263  int32_t sec, int32_t usec);
264 
271  ssize_t write(const unsigned char *string, size_t size,
272  int32_t sec, int32_t usec);
273 
280  ssize_t write(const char *string, size_t size,
281  int32_t sec, int32_t usec);
282 
288  ssize_t write(const void *buffer, size_t size,
289  int32_t sec, int32_t usec);
290 
293  size_t printf(const char *format, ...);
294 
300  size_t printf(const char *format, va_list *argp);
301 
306  void safePrint(unsigned char c);
307 
312  void safePrint(const unsigned char *str);
313 
318  void safePrint(const unsigned char *str, int32_t length);
319 
324  void safePrint(char c);
325 
330  void safePrint(const char *str);
331 
336  void safePrint(const char *str, int32_t length);
337 
340  void printBits(unsigned char value);
341 
344  void printBits(uint16_t value);
345 
348  void printBits(uint32_t value);
349 
352  void printBits(uint64_t value);
353 
356  void printBits(char value);
357 
360  void printBits(int16_t value);
361 
364  void printBits(int32_t value);
365 
368  void printBits(int64_t value);
369 
372  void printBits(const unsigned char *bits, uint64_t size);
373 
378  ssize_t read(uint16_t *buffer);
379 
384  ssize_t read(uint32_t *buffer);
385 
390  ssize_t read(uint64_t *buffer);
391 
395  ssize_t read(int16_t *buffer);
396 
400  ssize_t read(int32_t *buffer);
401 
405  ssize_t read(int64_t *buffer);
406 
411  ssize_t read(float *buffer);
412 
417  ssize_t read(double *buffer);
418 
423  ssize_t read(unsigned char *buffer);
424 
428  ssize_t read(char *buffer);
429 
433  ssize_t read(bool *buffer);
434 
438  ssize_t read(unsigned char *buffer, size_t size);
439 
443  ssize_t read(char *buffer, size_t size);
444 
448  ssize_t read(void *buf, size_t size);
449 
458  ssize_t read(char **buffer, const char *terminator);
459 
471  ssize_t read(char **buffer,
472  const char *terminator, size_t maxbytes);
473 
479  ssize_t read(uint16_t *buffer, int32_t sec, int32_t usec);
480 
486  ssize_t read(uint32_t *buffer, int32_t sec, int32_t usec);
487 
493  ssize_t read(uint64_t *buffer, int32_t sec, int32_t usec);
494 
500  ssize_t read(int16_t *buffer, int32_t sec, int32_t usec);
501 
507  ssize_t read(int32_t *buffer, int32_t sec, int32_t usec);
508 
514  ssize_t read(int64_t *buffer, int32_t sec, int32_t usec);
515 
521  ssize_t read(float *buffer, int32_t sec, int32_t usec);
522 
528  ssize_t read(double *buffer, int32_t sec, int32_t usec);
529 
535  ssize_t read(unsigned char *buffer, int32_t sec, int32_t usec);
536 
542  ssize_t read(char *buffer, int32_t sec, int32_t usec);
543 
549  ssize_t read(bool *buffer, int32_t sec, int32_t usec);
550 
556  ssize_t read(unsigned char *buffer, size_t size,
557  int32_t sec, int32_t usec);
558 
564  ssize_t read(char *buffer, size_t size,
565  int32_t sec, int32_t usec);
566 
572  ssize_t read(void *buf, size_t size,
573  int32_t sec, int32_t usec);
574 
584  ssize_t read(char **buffer, const char *terminator,
585  int32_t sec, int32_t usec);
586 
599  ssize_t read(char **buffer,
600  const char *terminator, size_t maxbytes,
601  int32_t sec, int32_t usec);
602 
618  ssize_t read(char **buffer,
619  const char *terminator, size_t maxbytes,
620  char escapechar, int32_t sec, int32_t usec);
621 
622 
642  int32_t waitForNonBlockingRead(int32_t sec, int32_t usec)
643  const;
644 
665  int32_t waitForNonBlockingWrite(int32_t sec, int32_t usec)
666  const;
667 
668 
673  void retryInterruptedReads();
674 
680  void dontRetryInterruptedReads();
681 
684  bool getRetryInterruptedReads() const;
685 
690  void retryInterruptedWrites();
691 
697  void dontRetryInterruptedWrites();
698 
701  bool getRetryInterruptedWrites() const;
702 
708  void retryInterruptedWaits();
709 
715  void dontRetryInterruptedWaits();
716 
719  bool getRetryInterruptedWaits() const;
720 
726  void retryInterruptedFcntl();
727 
733  void dontRetryInterruptedFcntl();
734 
737  bool getRetryInterruptedFcntl() const;
738 
744  void retryInterruptedIoctl();
745 
751  void dontRetryInterruptedIoctl();
752 
755  bool getRetryInterruptedIoctl() const;
756 
757 
768  void allowShortReads();
769 
775  void dontAllowShortReads();
776 
788  void allowShortWrites();
789 
795  void dontAllowShortWrites();
796 
797 
801  virtual bool passFileDescriptor(int32_t fd);
802 
806  virtual bool receiveFileDescriptor(int32_t *fd);
807 
808 
812  virtual bool passSocket(int32_t sock);
813 
817  virtual bool receiveSocket(int32_t *sock);
818 
819 
823  void translateByteOrder();
824 
828  void dontTranslateByteOrder();
829 
832  virtual int32_t fCntl(int32_t command, long arg) const;
833 
836  virtual int32_t ioCtl(int32_t command, void *arg) const;
837 
846  bool useNaglesAlgorithm();
847 
852  bool dontUseNaglesAlgorithm();
853 
857  bool setSocketWriteBufferSize(int32_t size);
858 
863  bool getSocketWriteBufferSize(int32_t *size);
864 
868  bool setSocketReadBufferSize(int32_t size);
869 
874  bool getSocketReadBufferSize(int32_t *size);
875 
879  bool disableIPv4();
880 
885  bool enableIPv4();
886 
891  const char *getType() const;
892 
899  char *getPeerAddress() const;
900 
901 
923  bool setWriteBufferSize(ssize_t size) const;
924 
951  bool flushWriteBuffer(int32_t sec, int32_t usec);
952 
953 
973  bool setReadBufferSize(ssize_t size) const;
974 
980  bool closeOnExec();
981 
988  bool dontCloseOnExec();
989 
996  bool getCloseOnExec();
997 
1000  static bool createPipe(filedescriptor *readfd,
1001  filedescriptor *writefd);
1002 
1005  static uint16_t hostToNet(uint16_t value);
1006 
1009  static uint32_t hostToNet(uint32_t value);
1010 
1013  static uint64_t hostToNet(uint64_t value);
1014 
1017  static uint16_t netToHost(uint16_t value);
1018 
1021  static uint32_t netToHost(uint32_t value);
1022 
1025  static uint64_t netToHost(uint64_t value);
1026 
1029  static uint16_t hostToLittleEndian(uint16_t value);
1030 
1033  static uint32_t hostToLittleEndian(uint32_t value);
1034 
1037  static uint64_t hostToLittleEndian(uint64_t value);
1038 
1041  static uint16_t littleEndianToHost(uint16_t value);
1042 
1045  static uint32_t littleEndianToHost(uint32_t value);
1046 
1049  static uint64_t littleEndianToHost(uint64_t value);
1050 
1051  #include <rudiments/private/filedescriptor.h>
1052 };
1053 
1054 #endif
Definition: input.h:9
Definition: character.h:11
Definition: listener.h:14
Definition: filedescriptor.h:13
Definition: security.h:16
Definition: output.h:9