diff options
Diffstat (limited to 'innobase/include/com0com.h')
-rw-r--r-- | innobase/include/com0com.h | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/innobase/include/com0com.h b/innobase/include/com0com.h new file mode 100644 index 00000000000..6f04b6a3f11 --- /dev/null +++ b/innobase/include/com0com.h @@ -0,0 +1,125 @@ +/****************************************************** +The communication primitives + +(c) 1995 Innobase Oy + +Created 9/23/1995 Heikki Tuuri +*******************************************************/ + +/* This module defines a standard datagram communication +function interface for use in the database. We assume that +the communication medium is reliable. */ + +#ifndef com0com_h +#define com0com_h + +#include "univ.i" + +/* The communications endpoint type definition */ +typedef struct com_endpoint_struct com_endpoint_t; + +/* Possible endpoint communication types */ +#define COM_SHM 1 /* communication through shared memory */ + +/* Option numbers for endpoint */ +#define COM_OPT_MAX_DGRAM_SIZE 1 + +/* Error numbers */ +#define COM_ERR_NOT_SPECIFIED 1 +#define COM_ERR_NOT_BOUND 2 +#define COM_ERR_ALREADY_BOUND 3 +#define COM_ERR_MAX_DATAGRAM_SIZE_NOT_SET 4 +#define COM_ERR_DATA_BUFFER_TOO_SMALL 5 +#define COM_ERR_ADDR_BUFFER_TOO_SMALL 6 +#define COM_ERR_DATA_TOO_LONG 7 +#define COM_ERR_ADDR_TOO_LONG 8 +#define COM_ERR_DGRAM_NOT_DELIVERED 9 + +/* Maximum allowed address length in bytes */ +#define COM_MAX_ADDR_LEN 100 + +/************************************************************************* +Creates a communications endpoint. */ + +com_endpoint_t* +com_endpoint_create( +/*================*/ + /* out, own: communications endpoint, NULL if + did not succeed */ + ulint type); /* in: communication type of endpoint: + only COM_SHM supported */ +/************************************************************************* +Frees a communications endpoint. */ + +ulint +com_endpoint_free( +/*==============*/ + /* out: O if succeed, else error number */ + com_endpoint_t* ep); /* in, own: communications endpoint */ +/************************************************************************* +Sets an option, like the maximum datagram size for an endpoint. +The options may vary depending on the endpoint type. */ + +ulint +com_endpoint_set_option( +/*====================*/ + /* out: 0 if succeed, else error number */ + com_endpoint_t* ep, /* in: endpoint */ + ulint optno, /* in: option number, only + COM_OPT_MAX_DGRAM_SIZE currently supported */ + byte* optval, /* in: pointer to a buffer containing the + option value to set */ + ulint optlen);/* in: option value buffer length */ +/************************************************************************* +Binds a communications endpoint to a specified address. */ + +ulint +com_bind( +/*=====*/ + /* out: 0 if succeed, else error number */ + com_endpoint_t* ep, /* in: communications endpoint */ + char* name, /* in: address name */ + ulint len); /* in: name length */ +/************************************************************************* +Waits for a datagram to arrive at an endpoint. */ + +ulint +com_recvfrom( +/*=========*/ + /* out: 0 if succeed, else error number */ + com_endpoint_t* ep, /* in: communications endpoint */ + byte* buf, /* out: datagram buffer; the buffer must be + supplied by the caller */ + ulint buf_len,/* in: datagram buffer length */ + ulint* len, /* out: datagram length */ + char* from, /* out: address name buffer; the buffer must be + supplied by the caller */ + ulint from_len,/* in: address name buffer length */ + ulint* addr_len);/* out: address name length */ +/************************************************************************* +Sends a datagram to a specified destination. */ + +ulint +com_sendto( +/*=======*/ + /* out: 0 if succeed, else error number */ + com_endpoint_t* ep, /* in: communications endpoint */ + byte* buf, /* in: datagram buffer */ + ulint len, /* in: datagram length */ + char* to, /* in: address name buffer */ + ulint tolen); /* in: address name length */ +/************************************************************************* +Gets the maximum datagram size for an endpoint. */ + +ulint +com_endpoint_get_max_size( +/*======================*/ + /* out: maximum size */ + com_endpoint_t* ep); /* in: endpoint */ + + +#ifndef UNIV_NONINL +#include "com0com.ic" +#endif + +#endif |