Changeset 1913 for pjproject/trunk/pjnath/src/pjturn-srv/listener_udp.c
- Timestamp:
- Apr 9, 2008 9:38:12 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjnath/src/pjturn-srv/listener_udp.c
r1852 r1913 18 18 */ 19 19 #include "turn.h" 20 #include <pj/compat/socket.h> 20 21 21 22 struct read_op … … 28 29 { 29 30 pj_turn_listener base; 31 30 32 pj_ioqueue_key_t *key; 31 33 unsigned read_cnt; 32 34 struct read_op **read_op; /* Array of read_op's */ 35 36 pj_turn_transport tp; /* Transport instance */ 33 37 }; 34 38 35 39 36 static pj_status_t udp_sendto(pj_turn_listener *listener, 40 static pj_status_t udp_destroy(pj_turn_listener *udp); 41 static void on_read_complete(pj_ioqueue_key_t *key, 42 pj_ioqueue_op_key_t *op_key, 43 pj_ssize_t bytes_read); 44 45 static pj_status_t udp_sendto(pj_turn_transport *tp, 37 46 const void *packet, 38 47 pj_size_t size, … … 40 49 const pj_sockaddr_t *addr, 41 50 int addr_len); 42 static pj_status_t udp_destroy(pj_turn_listener *udp);43 static void on_read_complete(pj_ioqueue_key_t *key, 44 pj_ioqueue_op_key_t *op_key, 45 pj_ssize_t bytes_read);51 static void udp_add_ref(pj_turn_transport *tp, 52 pj_turn_allocation *alloc); 53 static void udp_dec_ref(pj_turn_transport *tp, 54 pj_turn_allocation *alloc); 46 55 47 56 … … 71 80 udp->base.tp_type = PJ_TURN_TP_UDP; 72 81 udp->base.sock = PJ_INVALID_SOCKET; 73 udp->base.sendto = &udp_sendto;74 82 udp->base.destroy = &udp_destroy; 75 83 udp->read_cnt = concurrency_cnt; 76 84 udp->base.flags = flags; 85 86 udp->tp.obj_name = udp->base.obj_name; 87 udp->tp.info = udp->base.info; 88 udp->tp.listener = &udp->base; 89 udp->tp.sendto = &udp_sendto; 90 udp->tp.add_ref = &udp_add_ref; 91 udp->tp.dec_ref = &udp_dec_ref; 77 92 78 93 /* Create socket */ … … 173 188 * Callback to send packet. 174 189 */ 175 static pj_status_t udp_sendto(pj_turn_ listener *listener,190 static pj_status_t udp_sendto(pj_turn_transport *tp, 176 191 const void *packet, 177 192 pj_size_t size, … … 181 196 { 182 197 pj_ssize_t len = size; 183 return pj_sock_sendto(listener->sock, packet, &len, flag, addr, addr_len); 184 } 198 return pj_sock_sendto(tp->listener->sock, packet, &len, flag, addr, addr_len); 199 } 200 201 202 static void udp_add_ref(pj_turn_transport *tp, 203 pj_turn_allocation *alloc) 204 { 205 /* Do nothing */ 206 PJ_UNUSED_ARG(tp); 207 PJ_UNUSED_ARG(alloc); 208 } 209 210 static void udp_dec_ref(pj_turn_transport *tp, 211 pj_turn_allocation *alloc) 212 { 213 /* Do nothing */ 214 PJ_UNUSED_ARG(tp); 215 PJ_UNUSED_ARG(alloc); 216 } 217 185 218 186 219 /* … … 212 245 pj_pool_reset(rpool); 213 246 read_op->pkt.pool = rpool; 214 read_op->pkt. listener = &udp->base;247 read_op->pkt.transport = &udp->tp; 215 248 read_op->pkt.src.tp_type = udp->base.tp_type; 216 249 … … 228 261 bytes_read = -status; 229 262 230 } while (status != PJ_EPENDING && status != PJ_ECANCELLED); 231 } 232 263 } while (status != PJ_EPENDING && status != PJ_ECANCELLED && 264 status != PJ_STATUS_FROM_OS(PJ_BLOCKING_ERROR_VAL)); 265 } 266
Note: See TracChangeset
for help on using the changeset viewer.