summaryrefslogtreecommitdiff
path: root/legacy/ecore/src/lib/ecore_con/Ecore_Con.h
blob: 401e16417bdf64bd789e5d6d3e27050ebf2104f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#ifndef _ECORE_CON_H
#define _ECORE_CON_H

/**
 * @file Ecore_Con.h
 * @brief Sockets functions.
 *
 * The Ecore Connection Library ( @c Ecore_Con ) provides simple mechanisms
 * for communications between programs using reliable sockets.  It saves
 * the programmer from having to worry about file descripters and waiting
 * for incoming connections.
 *
 * There are two main objects in the @c Ecore_Con library: the @c
 * Ecore_Con_Server and the @c Ecore_Con_Client.
 *
 * The @c Ecore_Con_Server represents a server to connect to.  It is
 * represents a server that can be connected to.  It is used regardless
 * of whether the program is acting as a server or client itself.
 *
 * To create a listening server, call @c ecore_con_server_add().
 *
 * To connect to a server, call @c ecore_Con_server_connect().  Data can
 * then be sent to the server using the @c ecore_con_server_send().
 * 
 * Whenever a client connection is made to an @c Ecore_Con_Server, a
 * @c ECORE_CON_CLIENT_ADD event is emitted.  Any event callbacks that are
 * called receive a @c Ecore_Con_Client object, which represents a
 * connection that that particular client.
 *
 * Functions are described in the following groupings:
 * @li @ref Ecore_Con_Lib_Group
 * @li @ref Ecore_Con_Server_Group
 * @li @ref Ecore_Con_Client_Group
 */

#ifdef __cplusplus
extern "C" {
#endif
   
#ifndef _ECORE_CON_PRIVATE_H
   typedef void Ecore_Con_Server; /**< A connection handle */
   typedef void Ecore_Con_Client; /**< A connection handle */
   
   typedef enum _Ecore_Con_Type
     {
	  ECORE_CON_LOCAL_USER,
	  ECORE_CON_LOCAL_SYSTEM,
	  ECORE_CON_REMOTE_SYSTEM,
	  ECORE_CON_USE_SSL = 16
     } Ecore_Con_Type;
   
#endif
   
   typedef struct _Ecore_Con_Event_Client_Add  Ecore_Con_Event_Client_Add;
   typedef struct _Ecore_Con_Event_Client_Del  Ecore_Con_Event_Client_Del;
   typedef struct _Ecore_Con_Event_Server_Add  Ecore_Con_Event_Server_Add;
   typedef struct _Ecore_Con_Event_Server_Del  Ecore_Con_Event_Server_Del;
   typedef struct _Ecore_Con_Event_Client_Data Ecore_Con_Event_Client_Data;
   typedef struct _Ecore_Con_Event_Server_Data Ecore_Con_Event_Server_Data;

   struct _Ecore_Con_Event_Client_Add
     {
	Ecore_Con_Client *client;
     };

   struct _Ecore_Con_Event_Client_Del
     {
	Ecore_Con_Client *client;
     };

   struct _Ecore_Con_Event_Server_Add
     {
	Ecore_Con_Server *server;
     };

   struct _Ecore_Con_Event_Server_Del
     {
	Ecore_Con_Server *server;
     };
   
   struct _Ecore_Con_Event_Client_Data
     {
	Ecore_Con_Client *client;
	void             *data;
	int               size;
     };
   
   struct _Ecore_Con_Event_Server_Data
     {
	Ecore_Con_Server *server;
	void             *data;
	int               size;
     };
   
   extern int ECORE_CON_EVENT_CLIENT_ADD;
   extern int ECORE_CON_EVENT_CLIENT_DEL;
   extern int ECORE_CON_EVENT_SERVER_ADD;
   extern int ECORE_CON_EVENT_SERVER_DEL;
   extern int ECORE_CON_EVENT_CLIENT_DATA;
   extern int ECORE_CON_EVENT_SERVER_DATA;
   
   int               ecore_con_init(void);
   int               ecore_con_shutdown(void);
   
   Ecore_Con_Server *ecore_con_server_add(Ecore_Con_Type type, char *name, int port, const void *data);
   
   Ecore_Con_Server *ecore_con_server_connect(Ecore_Con_Type type, char *name, int port, const void *data);
   void             *ecore_con_server_del(Ecore_Con_Server *svr);
   void             *ecore_con_server_data_get(Ecore_Con_Server *svr);
   int               ecore_con_server_connected_get(Ecore_Con_Server *svr);
   int               ecore_con_server_send(Ecore_Con_Server *svr, void *data, int size);
   
   int               ecore_con_client_send(Ecore_Con_Client *cl, void *data, int size);
   Ecore_Con_Server *ecore_con_client_server_get(Ecore_Con_Client *cl);
   void             *ecore_con_client_del(Ecore_Con_Client *cl);
   void              ecore_con_client_data_set(Ecore_Con_Client *cl, const void *data);
   void             *ecore_con_client_data_get(Ecore_Con_Client *cl);
   
   int               ecore_con_ssl_available_get(void);

   
#ifdef __cplusplus
}
#endif

#endif