blob: 3a9927f9327be08e9a8471b666ad04b797163429 [file] [log] [blame]
Benny Prijono4766ffe2005-11-01 17:56:59 +00001/* $Id$
2 *
Benny Prijonodd859a62005-11-01 16:42:51 +00003 */
4#include <pj/ioqueue.h>
5#include <pj/os.h>
6#include <pj/log.h>
7#include <pj/list.h>
8#include <pj/pool.h>
9#include <pj/string.h>
10#include <pj/assert.h>
11#include <pj/sock.h>
12#include <pj/errno.h>
13
14#define THIS_FILE "ioqueue"
15
16#define PJ_IOQUEUE_IS_READ_OP(op) \
17 ((op & PJ_IOQUEUE_OP_READ) || (op & PJ_IOQUEUE_OP_RECV_FROM))
18#define PJ_IOQUEUE_IS_WRITE_OP(op) \
19 ((op & PJ_IOQUEUE_OP_WRITE) || (op & PJ_IOQUEUE_OP_SEND_TO))
20
21
22#if PJ_HAS_TCP
23# define PJ_IOQUEUE_IS_ACCEPT_OP(op) (op & PJ_IOQUEUE_OP_ACCEPT)
24# define PJ_IOQUEUE_IS_CONNECT_OP(op) (op & PJ_IOQUEUE_OP_CONNECT)
25#else
26# define PJ_IOQUEUE_IS_ACCEPT_OP(op) 0
27# define PJ_IOQUEUE_IS_CONNECT_OP(op) 0
28#endif
29
30#if defined(PJ_DEBUG) && PJ_DEBUG != 0
31# define VALIDATE_FD_SET 1
32#else
33# define VALIDATE_FD_SET 0
34#endif
35
36struct pj_ioqueue_key_t
37{
38 PJ_DECL_LIST_MEMBER(struct pj_ioqueue_key_t)
39 pj_sock_t fd;
40 pj_ioqueue_operation_e op;
41 void *user_data;
42 pj_ioqueue_callback cb;
43};
44
45struct pj_ioqueue_t
46{
47};
48
49PJ_DEF(pj_status_t) pj_ioqueue_create( pj_pool_t *pool,
50 pj_size_t max_fd,
51 int max_threads,
52 pj_ioqueue_t **ptr_ioqueue)
53{
54 return PJ_ENOTSUP;
55}
56
57PJ_DEF(pj_status_t) pj_ioqueue_destroy(pj_ioqueue_t *ioque)
58{
59 return PJ_ENOTSUP;
60}
61
62PJ_DEF(pj_status_t) pj_ioqueue_set_lock( pj_ioqueue_t *ioque,
63 pj_lock_t *lock,
64 pj_bool_t auto_delete )
65{
66 return PJ_ENOTSUP;
67}
68
69PJ_DEF(pj_status_t) pj_ioqueue_register_sock( pj_pool_t *pool,
70 pj_ioqueue_t *ioque,
71 pj_sock_t sock,
72 void *user_data,
73 const pj_ioqueue_callback *cb,
74 pj_ioqueue_key_t **ptr_key)
75{
76 return PJ_ENOTSUP;
77}
78
79PJ_DEF(pj_status_t) pj_ioqueue_unregister( pj_ioqueue_t *ioque,
80 pj_ioqueue_key_t *key)
81{
82 return PJ_ENOTSUP;
83}
84
85PJ_DEF(void*) pj_ioqueue_get_user_data( pj_ioqueue_key_t *key )
86{
87 return NULL;
88}
89
90
91PJ_DEF(int) pj_ioqueue_poll( pj_ioqueue_t *ioque, const pj_time_val *timeout)
92{
93 return -1;
94}
95
96PJ_DEF(pj_status_t) pj_ioqueue_read( pj_ioqueue_t *ioque,
97 pj_ioqueue_key_t *key,
98 void *buffer,
99 pj_size_t buflen)
100{
101 return -1;
102}
103
104PJ_DEF(pj_status_t) pj_ioqueue_recv( pj_ioqueue_t *ioque,
105 pj_ioqueue_key_t *key,
106 void *buffer,
107 pj_size_t buflen,
108 unsigned flags)
109{
110 return -1;
111}
112
113PJ_DEF(pj_status_t) pj_ioqueue_recvfrom( pj_ioqueue_t *ioque,
114 pj_ioqueue_key_t *key,
115 void *buffer,
116 pj_size_t buflen,
117 unsigned flags,
118 pj_sockaddr_t *addr,
119 int *addrlen)
120{
121 return -1;
122}
123
124PJ_DEF(pj_status_t) pj_ioqueue_write( pj_ioqueue_t *ioque,
125 pj_ioqueue_key_t *key,
126 const void *data,
127 pj_size_t datalen)
128{
129 return -1;
130}
131
132PJ_DEF(pj_status_t) pj_ioqueue_send( pj_ioqueue_t *ioque,
133 pj_ioqueue_key_t *key,
134 const void *data,
135 pj_size_t datalen,
136 unsigned flags)
137{
138 return -1;
139}
140
141PJ_DEF(pj_status_t) pj_ioqueue_sendto( pj_ioqueue_t *ioque,
142 pj_ioqueue_key_t *key,
143 const void *data,
144 pj_size_t datalen,
145 unsigned flags,
146 const pj_sockaddr_t *addr,
147 int addrlen)
148{
149 return -1;
150}
151
152#if PJ_HAS_TCP
153/*
154 * Initiate overlapped accept() operation.
155 */
156PJ_DEF(pj_status_t) pj_ioqueue_accept( pj_ioqueue_t *ioqueue,
157 pj_ioqueue_key_t *key,
158 pj_sock_t *new_sock,
159 pj_sockaddr_t *local,
160 pj_sockaddr_t *remote,
161 int *addrlen)
162{
163 return -1;
164}
165
166/*
167 * Initiate overlapped connect() operation (well, it's non-blocking actually,
168 * since there's no overlapped version of connect()).
169 */
170PJ_DEF(pj_status_t) pj_ioqueue_connect( pj_ioqueue_t *ioqueue,
171 pj_ioqueue_key_t *key,
172 const pj_sockaddr_t *addr,
173 int addrlen )
174{
175 return -1;
176}
177#endif /* PJ_HAS_TCP */
178