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
|
#ifndef _SLEDJHAMR_H_
#define _SLEDJHAMR_H_
#include <stdlib.h>
#include <Ecore.h>
#include <Ecore_Con.h>
typedef struct _Connection Connection;
typedef Eina_Bool (* streamParser)(void *data, Connection *connection, char *SID, char *command, char *arguments);
typedef enum
{
CT_CLIENT,
CT_SERVER
} connType;
struct _ConnServer
{
Ecore_Con_Server *server;
char *serverCommand;
int count, hackyCount;
};
struct _ConnClient
{
Ecore_Con_Client *client;
Connection *myServer;
};
struct _Connection
{
connType type;
union
{
struct _ConnServer server;
struct _ConnClient client;
} conn;
char *name; // For log entries and such.
char *address;
int port;
Eina_Strbuf *stream;
Eina_Hash *commands;
// streamParser *func;
// Callbacks.
void *pointer;
Ecore_Event_Handler_Cb _add, _data, _del;
Ecore_Event_Handler *add, *data, *del;
streamParser unknownCommand;
};
Ecore_Con_Server *reachOut(char *address, int port, void *data, Ecore_Event_Handler_Cb _add, Ecore_Event_Handler_Cb _data, Ecore_Event_Handler_Cb _del);
void *addMessage(Eina_Clist *list, size_t size, const char *message, ...);
void sendBack(Ecore_Con_Client *client, const char *SID, const char *message, ...);
void sendForth(Ecore_Con_Server *server, const char *SID, const char *message, ...);
Connection *openArms(char *name, const char *address, int port, void *data, Ecore_Event_Handler_Cb _add, Ecore_Event_Handler_Cb _data, Ecore_Event_Handler_Cb _del, streamParser _parser);
#endif
|