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 
61  #ifdef RUDIMENTS_HAS_SSL
62 
69  void setSSLContext(void *ctx);
70 
77  void *getSSLContext();
78 
88  bool initializeSSL();
89 
97  void *getSSL() const;
98 
103  void deInitializeSSL();
104 
111  int32_t getSSLResult() const;
112  #endif
113 
116  virtual bool supportsBlockingNonBlockingModes();
117 
121  virtual bool useNonBlockingMode() const;
122 
126  virtual bool useBlockingMode() const;
127 
130  virtual bool isUsingNonBlockingMode() const;
131 
135  ssize_t write(uint16_t number) const;
136 
140  ssize_t write(uint32_t number) const;
141 
145  ssize_t write(uint64_t number) const;
146 
150  ssize_t write(int16_t number) const;
151 
155  ssize_t write(int32_t number) const;
156 
160  ssize_t write(int64_t number) const;
161 
165  ssize_t write(float number) const;
166 
170  ssize_t write(double number) const;
171 
175  ssize_t write(unsigned char character) const;
176 
180  ssize_t write(char character) const;
181 
185  ssize_t write(bool value) const;
186 
190  ssize_t write(const unsigned char *string) const;
191 
195  ssize_t write(const char *string) const;
196 
202  ssize_t write(const unsigned char *string, size_t size) const;
203 
209  ssize_t write(const char *string, size_t size) const;
210 
214  ssize_t write(const void *buffer, size_t size) const;
215 
221  ssize_t write(uint16_t number, int32_t sec, int32_t usec) const;
222 
228  ssize_t write(uint32_t number, int32_t sec, int32_t usec) const;
229 
235  ssize_t write(uint64_t number, int32_t sec, int32_t usec) const;
236 
242  ssize_t write(int16_t number, int32_t sec, int32_t usec) const;
243 
249  ssize_t write(int32_t number, int32_t sec, int32_t usec) const;
250 
256  ssize_t write(int64_t number, int32_t sec, int32_t usec) const;
257 
263  ssize_t write(float number, int32_t sec, int32_t usec) const;
264 
270  ssize_t write(double number, int32_t sec, int32_t usec) const;
271 
277  ssize_t write(unsigned char character,
278  int32_t sec, int32_t usec) const;
279 
285  ssize_t write(char character, int32_t sec, int32_t usec) const;
286 
292  ssize_t write(bool value, int32_t sec, int32_t usec) const;
293 
299  ssize_t write(const unsigned char *string,
300  int32_t sec, int32_t usec) const;
301 
307  ssize_t write(const char *string,
308  int32_t sec, int32_t usec) const;
309 
316  ssize_t write(const unsigned char *string, size_t size,
317  int32_t sec, int32_t usec) const;
318 
325  ssize_t write(const char *string, size_t size,
326  int32_t sec, int32_t usec) const;
327 
333  ssize_t write(const void *buffer, size_t size,
334  int32_t sec, int32_t usec) const;
335 
338  size_t printf(const char *format, ...);
339 
345  size_t printf(const char *format, va_list *argp);
346 
351  void safePrint(char c);
352 
357  void safePrint(const char *str);
358 
363  void safePrint(const char *str, int32_t length);
364 
367  void printBits(unsigned char value);
368 
371  void printBits(uint16_t value);
372 
375  void printBits(uint32_t value);
376 
379  void printBits(uint64_t value);
380 
383  void printBits(char value);
384 
387  void printBits(int16_t value);
388 
391  void printBits(int32_t value);
392 
395  void printBits(int64_t value);
396 
399  void printBits(unsigned char *bits, uint64_t size);
400 
405  ssize_t read(uint16_t *buffer) const;
406 
411  ssize_t read(uint32_t *buffer) const;
412 
417  ssize_t read(uint64_t *buffer) const;
418 
422  ssize_t read(int16_t *buffer) const;
423 
427  ssize_t read(int32_t *buffer) const;
428 
432  ssize_t read(int64_t *buffer) const;
433 
438  ssize_t read(float *buffer) const;
439 
444  ssize_t read(double *buffer) const;
445 
450  ssize_t read(unsigned char *buffer) const;
451 
455  ssize_t read(char *buffer) const;
456 
460  ssize_t read(bool *buffer) const;
461 
465  ssize_t read(unsigned char *buffer, size_t size) const;
466 
470  ssize_t read(char *buffer, size_t size) const;
471 
475  ssize_t read(void *buf, size_t size) const;
476 
485  ssize_t read(char **buffer, const char *terminator) const;
486 
492  ssize_t read(uint16_t *buffer, int32_t sec, int32_t usec) const;
493 
499  ssize_t read(uint32_t *buffer, int32_t sec, int32_t usec) const;
500 
506  ssize_t read(uint64_t *buffer, int32_t sec, int32_t usec) const;
507 
513  ssize_t read(int16_t *buffer, int32_t sec, int32_t usec) const;
514 
520  ssize_t read(int32_t *buffer, int32_t sec, int32_t usec) const;
521 
527  ssize_t read(int64_t *buffer, int32_t sec, int32_t usec) const;
528 
534  ssize_t read(float *buffer, int32_t sec, int32_t usec) const;
535 
541  ssize_t read(double *buffer, int32_t sec, int32_t usec) const;
542 
548  ssize_t read(unsigned char *buffer,
549  int32_t sec, int32_t usec) const;
550 
556  ssize_t read(char *buffer, int32_t sec, int32_t usec) const;
557 
563  ssize_t read(bool *buffer, int32_t sec, int32_t usec) const;
564 
570  ssize_t read(unsigned char *buffer, size_t size,
571  int32_t sec, int32_t usec) const;
572 
578  ssize_t read(char *buffer, size_t size,
579  int32_t sec, int32_t usec) const;
580 
586  ssize_t read(void *buf, size_t size,
587  int32_t sec, int32_t usec) const;
588 
598  ssize_t read(char **buffer, const char *terminator,
599  int32_t sec, int32_t usec) const;
600 
601 
621  int32_t waitForNonBlockingRead(int32_t sec, int32_t usec)
622  const;
623 
644  int32_t waitForNonBlockingWrite(int32_t sec, int32_t usec)
645  const;
646 
647 
652  void retryInterruptedReads();
653 
659  void dontRetryInterruptedReads();
660 
663  bool getRetryInterruptedReads() const;
664 
669  void retryInterruptedWrites();
670 
676  void dontRetryInterruptedWrites();
677 
680  bool getRetryInterruptedWrites() const;
681 
687  void retryInterruptedWaits();
688 
694  void dontRetryInterruptedWaits();
695 
698  bool getRetryInterruptedWaits() const;
699 
705  void retryInterruptedFcntl();
706 
712  void dontRetryInterruptedFcntl();
713 
716  bool getRetryInterruptedFcntl() const;
717 
723  void retryInterruptedIoctl();
724 
730  void dontRetryInterruptedIoctl();
731 
734  bool getRetryInterruptedIoctl() const;
735 
736 
747  void allowShortReads();
748 
754  void dontAllowShortReads();
755 
767  void allowShortWrites();
768 
774  void dontAllowShortWrites();
775 
776 
780  virtual bool passFileDescriptor(int32_t fd) const;
781 
785  virtual bool receiveFileDescriptor(int32_t *fd) const;
786 
787 
791  virtual bool passSocket(int32_t sock) const;
792 
796  virtual bool receiveSocket(int32_t *sock) const;
797 
798 
802  void translateByteOrder();
803 
807  void dontTranslateByteOrder();
808 
811  virtual int32_t fCntl(int32_t command, long arg) const;
812 
815  virtual int32_t ioCtl(int32_t command, void *arg) const;
816 
825  bool useNaglesAlgorithm();
826 
831  bool dontUseNaglesAlgorithm();
832 
837  bool setTcpWriteBufferSize(int32_t size);
838 
843  bool getTcpWriteBufferSize(int32_t *size);
844 
849  bool setTcpReadBufferSize(int32_t size);
850 
855  bool getTcpReadBufferSize(int32_t *size);
856 
860  bool disableIPv4();
861 
866  bool enableIPv4();
867 
872  const char *getType() const;
873 
880  char *getPeerAddress() const;
881 
882 
904  bool setWriteBufferSize(ssize_t size) const;
905 
932  bool flushWriteBuffer(int32_t sec, int32_t usec) const;
933 
934 
954  bool setReadBufferSize(ssize_t size) const;
955 
961  bool closeOnExec();
962 
969  bool dontCloseOnExec();
970 
977  bool getCloseOnExec();
978 
981  static uint16_t hostToNet(uint16_t value);
982 
985  static uint32_t hostToNet(uint32_t value);
986 
989  static uint64_t hostToNet(uint64_t value);
990 
993  static uint16_t netToHost(uint16_t value);
994 
997  static uint32_t netToHost(uint32_t value);
998 
1001  static uint64_t netToHost(uint64_t value);
1002 
1003  #include <rudiments/private/filedescriptor.h>
1004 };
1005 
1006 #endif
Definition: character.h:11
Definition: listener.h:16
Definition: filedescriptor.h:14