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 class filedescriptorprivate;
11 
14 class RUDIMENTS_DLLSPEC filedescriptor {
15  public:
18 
22 
25  filedescriptor &operator=(const filedescriptor &f);
26 
29  virtual ~filedescriptor();
30 
33  virtual bool close();
34 
36  int32_t getFileDescriptor() const;
37 
40  void setFileDescriptor(int32_t filedesc);
41 
51  int32_t duplicate() const;
52 
59  bool duplicate(int32_t newfd) const;
60 
63  void setSecurityContext(securitycontext *ctx);
64 
68  securitycontext *getSecurityContext();
69 
72  virtual bool supportsBlockingNonBlockingModes();
73 
77  virtual bool useNonBlockingMode() const;
78 
82  virtual bool useBlockingMode() const;
83 
86  virtual bool isUsingNonBlockingMode() const;
87 
91  ssize_t write(uint16_t number) const;
92 
96  ssize_t write(uint32_t number) const;
97 
101  ssize_t write(uint64_t number) const;
102 
106  ssize_t write(int16_t number) const;
107 
111  ssize_t write(int32_t number) const;
112 
116  ssize_t write(int64_t number) const;
117 
121  ssize_t write(float number) const;
122 
126  ssize_t write(double number) const;
127 
131  ssize_t write(unsigned char character) const;
132 
136  ssize_t write(char character) const;
137 
141  ssize_t write(bool value) const;
142 
146  ssize_t write(const unsigned char *string) const;
147 
151  ssize_t write(const char *string) const;
152 
158  ssize_t write(const unsigned char *string, size_t size) const;
159 
165  ssize_t write(const char *string, size_t size) const;
166 
170  ssize_t write(const void *buffer, size_t size) const;
171 
177  ssize_t write(uint16_t number, int32_t sec, int32_t usec) const;
178 
184  ssize_t write(uint32_t number, int32_t sec, int32_t usec) const;
185 
191  ssize_t write(uint64_t number, int32_t sec, int32_t usec) const;
192 
198  ssize_t write(int16_t number, int32_t sec, int32_t usec) const;
199 
205  ssize_t write(int32_t number, int32_t sec, int32_t usec) const;
206 
212  ssize_t write(int64_t number, int32_t sec, int32_t usec) const;
213 
219  ssize_t write(float number, int32_t sec, int32_t usec) const;
220 
226  ssize_t write(double number, int32_t sec, int32_t usec) const;
227 
233  ssize_t write(unsigned char character,
234  int32_t sec, int32_t usec) const;
235 
241  ssize_t write(char character, int32_t sec, int32_t usec) const;
242 
248  ssize_t write(bool value, int32_t sec, int32_t usec) const;
249 
255  ssize_t write(const unsigned char *string,
256  int32_t sec, int32_t usec) const;
257 
263  ssize_t write(const char *string,
264  int32_t sec, int32_t usec) const;
265 
272  ssize_t write(const unsigned char *string, size_t size,
273  int32_t sec, int32_t usec) const;
274 
281  ssize_t write(const char *string, size_t size,
282  int32_t sec, int32_t usec) const;
283 
289  ssize_t write(const void *buffer, size_t size,
290  int32_t sec, int32_t usec) const;
291 
294  size_t printf(const char *format, ...);
295 
301  size_t printf(const char *format, va_list *argp);
302 
307  void safePrint(unsigned char c);
308 
313  void safePrint(const unsigned char *str);
314 
319  void safePrint(const unsigned char *str, int32_t length);
320 
325  void safePrint(char c);
326 
331  void safePrint(const char *str);
332 
337  void safePrint(const char *str, int32_t length);
338 
341  void printBits(unsigned char value);
342 
345  void printBits(uint16_t value);
346 
349  void printBits(uint32_t value);
350 
353  void printBits(uint64_t value);
354 
357  void printBits(char value);
358 
361  void printBits(int16_t value);
362 
365  void printBits(int32_t value);
366 
369  void printBits(int64_t value);
370 
373  void printBits(const unsigned char *bits, uint64_t size);
374 
379  ssize_t read(uint16_t *buffer);
380 
385  ssize_t read(uint32_t *buffer);
386 
391  ssize_t read(uint64_t *buffer);
392 
396  ssize_t read(int16_t *buffer);
397 
401  ssize_t read(int32_t *buffer);
402 
406  ssize_t read(int64_t *buffer);
407 
412  ssize_t read(float *buffer);
413 
418  ssize_t read(double *buffer);
419 
424  ssize_t read(unsigned char *buffer);
425 
429  ssize_t read(char *buffer);
430 
434  ssize_t read(bool *buffer);
435 
439  ssize_t read(unsigned char *buffer, size_t size);
440 
444  ssize_t read(char *buffer, size_t size);
445 
449  ssize_t read(void *buf, size_t size);
450 
459  ssize_t read(char **buffer, const char *terminator);
460 
472  ssize_t read(char **buffer,
473  const char *terminator, size_t maxbytes);
474 
480  ssize_t read(uint16_t *buffer, int32_t sec, int32_t usec);
481 
487  ssize_t read(uint32_t *buffer, int32_t sec, int32_t usec);
488 
494  ssize_t read(uint64_t *buffer, int32_t sec, int32_t usec);
495 
501  ssize_t read(int16_t *buffer, int32_t sec, int32_t usec);
502 
508  ssize_t read(int32_t *buffer, int32_t sec, int32_t usec);
509 
515  ssize_t read(int64_t *buffer, int32_t sec, int32_t usec);
516 
522  ssize_t read(float *buffer, int32_t sec, int32_t usec);
523 
529  ssize_t read(double *buffer, int32_t sec, int32_t usec);
530 
536  ssize_t read(unsigned char *buffer, int32_t sec, int32_t usec);
537 
543  ssize_t read(char *buffer, int32_t sec, int32_t usec);
544 
550  ssize_t read(bool *buffer, int32_t sec, int32_t usec);
551 
557  ssize_t read(unsigned char *buffer, size_t size,
558  int32_t sec, int32_t usec);
559 
565  ssize_t read(char *buffer, size_t size,
566  int32_t sec, int32_t usec);
567 
573  ssize_t read(void *buf, size_t size,
574  int32_t sec, int32_t usec);
575 
585  ssize_t read(char **buffer, const char *terminator,
586  int32_t sec, int32_t usec);
587 
600  ssize_t read(char **buffer,
601  const char *terminator, size_t maxbytes,
602  int32_t sec, int32_t usec);
603 
619  ssize_t read(char **buffer,
620  const char *terminator, size_t maxbytes,
621  char escapechar, int32_t sec, int32_t usec);
622 
623 
643  int32_t waitForNonBlockingRead(int32_t sec, int32_t usec)
644  const;
645 
666  int32_t waitForNonBlockingWrite(int32_t sec, int32_t usec)
667  const;
668 
669 
674  void retryInterruptedReads();
675 
681  void dontRetryInterruptedReads();
682 
685  bool getRetryInterruptedReads() const;
686 
691  void retryInterruptedWrites();
692 
698  void dontRetryInterruptedWrites();
699 
702  bool getRetryInterruptedWrites() const;
703 
709  void retryInterruptedWaits();
710 
716  void dontRetryInterruptedWaits();
717 
720  bool getRetryInterruptedWaits() const;
721 
727  void retryInterruptedFcntl();
728 
734  void dontRetryInterruptedFcntl();
735 
738  bool getRetryInterruptedFcntl() const;
739 
745  void retryInterruptedIoctl();
746 
752  void dontRetryInterruptedIoctl();
753 
756  bool getRetryInterruptedIoctl() const;
757 
758 
769  void allowShortReads();
770 
776  void dontAllowShortReads();
777 
789  void allowShortWrites();
790 
796  void dontAllowShortWrites();
797 
798 
802  virtual bool passFileDescriptor(int32_t fd);
803 
807  virtual bool receiveFileDescriptor(int32_t *fd);
808 
809 
813  virtual bool passSocket(int32_t sock);
814 
818  virtual bool receiveSocket(int32_t *sock);
819 
820 
824  void translateByteOrder();
825 
829  void dontTranslateByteOrder();
830 
833  virtual int32_t fCntl(int32_t command, long arg) const;
834 
837  virtual int32_t ioCtl(int32_t command, void *arg) const;
838 
847  bool useNaglesAlgorithm();
848 
853  bool dontUseNaglesAlgorithm();
854 
858  bool setSocketWriteBufferSize(int32_t size);
859 
864  bool getSocketWriteBufferSize(int32_t *size);
865 
869  bool setSocketReadBufferSize(int32_t size);
870 
875  bool getSocketReadBufferSize(int32_t *size);
876 
880  bool disableIPv4();
881 
886  bool enableIPv4();
887 
892  const char *getType() const;
893 
900  char *getPeerAddress() const;
901 
902 
924  bool setWriteBufferSize(ssize_t size) const;
925 
952  bool flushWriteBuffer(int32_t sec, int32_t usec) const;
953 
954 
974  bool setReadBufferSize(ssize_t size) const;
975 
981  bool closeOnExec();
982 
989  bool dontCloseOnExec();
990 
997  bool getCloseOnExec();
998 
1001  static bool createPipe(filedescriptor *readfd,
1002  filedescriptor *writefd);
1003 
1006  static uint16_t hostToNet(uint16_t value);
1007 
1010  static uint32_t hostToNet(uint32_t value);
1011 
1014  static uint64_t hostToNet(uint64_t value);
1015 
1018  static uint16_t netToHost(uint16_t value);
1019 
1022  static uint32_t netToHost(uint32_t value);
1023 
1026  static uint64_t netToHost(uint64_t value);
1027 
1030  static uint16_t hostToLittleEndian(uint16_t value);
1031 
1034  static uint32_t hostToLittleEndian(uint32_t value);
1035 
1038  static uint64_t hostToLittleEndian(uint64_t value);
1039 
1042  static uint16_t littleEndianToHost(uint16_t value);
1043 
1046  static uint32_t littleEndianToHost(uint32_t value);
1047 
1050  static uint64_t littleEndianToHost(uint64_t value);
1051 
1052  #include <rudiments/private/filedescriptor.h>
1053 };
1054 
1055 #endif
Definition: character.h:11
Definition: listener.h:16
Definition: filedescriptor.h:14
Definition: security.h:16