a3e9d5f98fb7771ae0cf961a94f734d268d2e4d2
[OpenSRF.git] / include / opensrf / transport_socket.h
1 #include "opensrf/generic_utils.h"
2
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <sys/types.h>
6 #include <errno.h>
7
8 //---------------------------------------------------------------
9 // WIN32
10 //---------------------------------------------------------------
11 #ifdef WIN32
12 #include <Windows.h>
13 #include <Winsock.h>
14 #else
15
16 //---------------------------------------------------------------
17 // Unix headers
18 //---------------------------------------------------------------
19 #include <unistd.h>
20 #include <sys/time.h>
21 #include <sys/stat.h>
22 #include <fcntl.h>
23 #include <sys/socket.h>
24 #include <arpa/inet.h>
25 #include <netdb.h>
26 #include <netinet/in.h>
27 #endif
28
29 #ifndef TRANSPORT_SOCKET_H
30 #define TRANSPORT_SOCKET_H
31
32 /* how many characters we read from the socket at a time */
33 #ifdef _ROUTER
34 #define BUFSIZE 412
35 #else
36 #define BUFSIZE 4096
37 #endif
38
39 /* we maintain the socket information */
40 struct transport_socket_struct {
41         int sock_fd;
42         int connected;
43         char* server;
44         int port;
45         void * user_data;
46         /* user_data may be anything.  it's whatever you wish
47                 to see showing up in the callback in addition to
48                 the acutal character data*/
49         void (*data_received_callback) (void * user_data, char*);
50 };
51 typedef struct transport_socket_struct transport_socket;
52
53 int tcp_connect( transport_socket* obj );
54 int tcp_send( transport_socket* obj, const char* data );
55 int tcp_disconnect( transport_socket* obj );
56 int tcp_wait( transport_socket* obj, int timeout );
57 int tcp_connected( transport_socket* obj );
58
59 /* utility methods */
60 int set_fl( int fd, int flags );
61 int clr_fl( int fd, int flags );
62
63
64 #endif