#ifndef H_ED_INET_20060511103600
#define H_ED_INET_20060511103600

#ifdef __cplusplus
extern "C"
{
#endif

   /* ---------------------------------------------------------------------
      (c) ED 2005
      Project      : CLIB
      Function     : Portable sockets for Internet Protocol (IP)
      Module       : inet
      File         : inet.h
      Created      : 23-09-2005
      Modified     : 11-08-2008
      --------------------------------------------------------------------- */

   /* ---------------------------------------------------------------------
      Log

      0.2 11-08-2008 inet_client_receive() fixed.
      .              INET_ERR_SOCKET_DISCONNECTED added.
      0.1 11-05-2006 Becomes inet (was psk)
      0.0 23-09-2005 Created

      --------------------------------------------------------------------- */
#include "ed/inc/types.h"
#include <stddef.h>

   /* macros ============================================================== */

#define INET_SIP_ANY NULL
#define INET_SIP_LOOP "127.0.0.1"

   /* constants =========================================================== */

   typedef enum
   {
      INET_OK,

#define ITEM(n_, s_)\
   INET_ERR_##n_,

#include "psock/inc/inet_err.itm"

#undef ITEM

      INET_ERR_NB
   }
   inet_err_e;

   /* types =============================================================== */
   /* structures ========================================================== */

   typedef struct inet inet_s;

   /* functions =========================================================== */

   /* Identification */
   char const *inet_sid (void);
   char const *inet_sver (void);
   char const *inet_serr (inet_err_e err);
   char const *inet_serr_sock (int err);

   /* emergency shutdown */
   void inet_panic (void);

   /* Dynamic constructor / destructor */
   inet_s *inet_create (void);
   void inet_delete (inet_s *);

   /* Socket version */
   char const *inet_sversock (inet_s * self);

   inet_err_e inet_last_sock_err (inet_s * self, int *p_err);

   inet_err_e inet_server_open (inet_s * self, char const *sip, uint port);

   inet_err_e inet_server_poll (inet_s * self, int *p_accepted);

   int inet_server_received (inet_s * self, uint ms);

   inet_err_e inet_server_receive (inet_s * self, void *p_data, size_t size,
                                   size_t * p_received);

   inet_err_e inet_server_send (inet_s * self, void const *p_data,
                                size_t size, size_t * p_sent);

   inet_err_e inet_server_close (inet_s * self);

   inet_err_e inet_client_open (inet_s * self);

   inet_err_e inet_client_connect (inet_s * self, char const *sip, uint port);

   int inet_client_received (inet_s * self, uint ms);

   inet_err_e inet_client_receive (inet_s * self, void *p_data, size_t size,
                                   size_t * p_received);

   inet_err_e inet_client_send (inet_s * self, void const *p_data,
                                size_t size, size_t * p_sent);

   inet_err_e inet_client_close (inet_s * self);

#ifdef __cplusplus
}
#endif

/* ---------------------------------------------------------------------
   Generated by NEW (c) ED 2.8
   Powered by C-code generator library  1.2
   --------------------------------------------------------------------- */

#endif                          /* guard */
