com0com.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /******************************************************
  2. The communication primitives
  3. (c) 1995 Innobase Oy
  4. Created 9/23/1995 Heikki Tuuri
  5. *******************************************************/
  6. /* This module defines a standard datagram communication
  7. function interface for use in the database. We assume that
  8. the communication medium is reliable. */
  9. #ifndef com0com_h
  10. #define com0com_h
  11. #include "univ.i"
  12. /* The communications endpoint type definition */
  13. typedef struct com_endpoint_struct com_endpoint_t;
  14. /* Possible endpoint communication types */
  15. #define COM_SHM 1 /* communication through shared memory */
  16. /* Option numbers for endpoint */
  17. #define COM_OPT_MAX_DGRAM_SIZE 1
  18. /* Error numbers */
  19. #define COM_ERR_NOT_SPECIFIED 1
  20. #define COM_ERR_NOT_BOUND 2
  21. #define COM_ERR_ALREADY_BOUND 3
  22. #define COM_ERR_MAX_DATAGRAM_SIZE_NOT_SET 4
  23. #define COM_ERR_DATA_BUFFER_TOO_SMALL 5
  24. #define COM_ERR_ADDR_BUFFER_TOO_SMALL 6
  25. #define COM_ERR_DATA_TOO_LONG 7
  26. #define COM_ERR_ADDR_TOO_LONG 8
  27. #define COM_ERR_DGRAM_NOT_DELIVERED 9
  28. /* Maximum allowed address length in bytes */
  29. #define COM_MAX_ADDR_LEN 100
  30. /*************************************************************************
  31. Creates a communications endpoint. */
  32. com_endpoint_t*
  33. com_endpoint_create(
  34. /*================*/
  35. /* out, own: communications endpoint, NULL if
  36. did not succeed */
  37. ulint type); /* in: communication type of endpoint:
  38. only COM_SHM supported */
  39. /*************************************************************************
  40. Frees a communications endpoint. */
  41. ulint
  42. com_endpoint_free(
  43. /*==============*/
  44. /* out: O if succeed, else error number */
  45. com_endpoint_t* ep); /* in, own: communications endpoint */
  46. /*************************************************************************
  47. Sets an option, like the maximum datagram size for an endpoint.
  48. The options may vary depending on the endpoint type. */
  49. ulint
  50. com_endpoint_set_option(
  51. /*====================*/
  52. /* out: 0 if succeed, else error number */
  53. com_endpoint_t* ep, /* in: endpoint */
  54. ulint optno, /* in: option number, only
  55. COM_OPT_MAX_DGRAM_SIZE currently supported */
  56. byte* optval, /* in: pointer to a buffer containing the
  57. option value to set */
  58. ulint optlen);/* in: option value buffer length */
  59. /*************************************************************************
  60. Binds a communications endpoint to a specified address. */
  61. ulint
  62. com_bind(
  63. /*=====*/
  64. /* out: 0 if succeed, else error number */
  65. com_endpoint_t* ep, /* in: communications endpoint */
  66. char* name, /* in: address name */
  67. ulint len); /* in: name length */
  68. /*************************************************************************
  69. Waits for a datagram to arrive at an endpoint. */
  70. ulint
  71. com_recvfrom(
  72. /*=========*/
  73. /* out: 0 if succeed, else error number */
  74. com_endpoint_t* ep, /* in: communications endpoint */
  75. byte* buf, /* out: datagram buffer; the buffer must be
  76. supplied by the caller */
  77. ulint buf_len,/* in: datagram buffer length */
  78. ulint* len, /* out: datagram length */
  79. char* from, /* out: address name buffer; the buffer must be
  80. supplied by the caller */
  81. ulint from_len,/* in: address name buffer length */
  82. ulint* addr_len);/* out: address name length */
  83. /*************************************************************************
  84. Sends a datagram to a specified destination. */
  85. ulint
  86. com_sendto(
  87. /*=======*/
  88. /* out: 0 if succeed, else error number */
  89. com_endpoint_t* ep, /* in: communications endpoint */
  90. byte* buf, /* in: datagram buffer */
  91. ulint len, /* in: datagram length */
  92. char* to, /* in: address name buffer */
  93. ulint tolen); /* in: address name length */
  94. /*************************************************************************
  95. Gets the maximum datagram size for an endpoint. */
  96. ulint
  97. com_endpoint_get_max_size(
  98. /*======================*/
  99. /* out: maximum size */
  100. com_endpoint_t* ep); /* in: endpoint */
  101. #ifndef UNIV_NONINL
  102. #include "com0com.ic"
  103. #endif
  104. #endif