socket.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /* File:            socket.h
  2.  *
  3.  * Description:     See "socket.c"
  4.  *
  5.  * Comments:        See "notice.txt" for copyright and license information.
  6.  *
  7.  */
  8. #ifndef __SOCKET_H__
  9. #define __SOCKET_H__
  10. #ifdef HAVE_CONFIG_H
  11. #include "config.h"
  12. #endif
  13. #ifndef WIN32
  14. #include <sys/types.h>
  15. #include <sys/socket.h>
  16. #include <unistd.h>
  17. #include <netdb.h>
  18. #include <netinet/in.h>
  19. #include <arpa/inet.h>
  20. #define closesocket(xxx) close(xxx)
  21. #define SOCKETFD int
  22. #ifndef       INADDR_NONE
  23. #ifndef _IN_ADDR_T
  24. #define _IN_ADDR_T
  25. typedef unsigned int    in_addr_t;
  26. #endif
  27. #define INADDR_NONE ((in_addr_t)-1)
  28. #endif
  29. #else
  30. #include <winsock.h>
  31. #define SOCKETFD SOCKET
  32. #endif
  33. #include "psqlodbc.h"
  34. #define SOCKET_ALREADY_CONNECTED 1
  35. #define SOCKET_HOST_NOT_FOUND 2
  36. #define SOCKET_COULD_NOT_CREATE_SOCKET 3
  37. #define SOCKET_COULD_NOT_CONNECT 4
  38. #define SOCKET_READ_ERROR 5
  39. #define SOCKET_WRITE_ERROR 6
  40. #define SOCKET_NULLPOINTER_PARAMETER 7
  41. #define SOCKET_PUT_INT_WRONG_LENGTH 8
  42. #define SOCKET_GET_INT_WRONG_LENGTH 9
  43. #define SOCKET_CLOSED 10
  44. struct SocketClass_ {
  45. int buffer_filled_in;
  46. int buffer_filled_out;
  47. int buffer_read_in;
  48. unsigned char *buffer_in;
  49. unsigned char *buffer_out;
  50. SOCKETFD socket;
  51. char *errormsg;
  52. int errornumber;
  53. char reverse; /* used to handle Postgres 6.2 protocol (reverse byte order) */
  54. };
  55. #define SOCK_get_char(self) (SOCK_get_next_byte(self))
  56. #define SOCK_put_char(self, c) (SOCK_put_next_byte(self, c))
  57. /* error functions */
  58. #define SOCK_get_errcode(self) (self->errornumber)
  59. #define SOCK_get_errmsg(self) (self->errormsg)
  60. /* Socket prototypes */
  61. SocketClass *SOCK_Constructor(void);
  62. void SOCK_Destructor(SocketClass *self);
  63. char SOCK_connect_to(SocketClass *self, unsigned short port, char *hostname);
  64. void SOCK_get_n_char(SocketClass *self, char *buffer, int len);
  65. void SOCK_put_n_char(SocketClass *self, char *buffer, int len);
  66. void SOCK_get_string(SocketClass *self, char *buffer, int bufsize);
  67. void SOCK_put_string(SocketClass *self, char *string);
  68. int SOCK_get_int(SocketClass *self, short len);
  69. void SOCK_put_int(SocketClass *self, int value, short len);
  70. void SOCK_flush_output(SocketClass *self);
  71. unsigned char SOCK_get_next_byte(SocketClass *self);
  72. void SOCK_put_next_byte(SocketClass *self, unsigned char next_byte);
  73. void SOCK_clear_error(SocketClass *self);
  74. #endif