diff options
Diffstat (limited to 'pjlib-util/src/pjstun-srv-test/server.h')
-rw-r--r-- | pjlib-util/src/pjstun-srv-test/server.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/pjlib-util/src/pjstun-srv-test/server.h b/pjlib-util/src/pjstun-srv-test/server.h new file mode 100644 index 00000000..612ea41a --- /dev/null +++ b/pjlib-util/src/pjstun-srv-test/server.h @@ -0,0 +1,122 @@ +/* $Id$ */ +/* + * Copyright (C) 2003-2005 Benny Prijono <benny@prijono.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef __STUN_SERVER_H__ +#define __STUN_SERVER_H__ + +#include <pjlib-util.h> +#include <pjlib.h> + + +/** Opaque declaration for STUN server instance */ +typedef struct pj_stun_server pj_stun_server; + +/** STUN server info */ +typedef struct pj_stun_server_info +{ + pj_pool_factory *pf; + pj_stun_endpoint *endpt; + pj_ioqueue_t *ioqueue; + pj_timer_heap_t *timer_heap; + unsigned thread_cnt; +} pj_stun_server_info; + +/** STUN usage */ +typedef struct pj_stun_usage pj_stun_usage; + +/** STUN usage callback */ +typedef struct pj_stun_usage_cb +{ + void (*on_rx_data)(pj_stun_usage *usage, + void *pkt, + pj_size_t pkt_size, + const pj_sockaddr_t *src_addr, + unsigned src_addr_len); +} pj_stun_usage_cb; + + +PJ_DECL(pj_status_t) pj_stun_perror(const char *sender, + const char *title, + pj_status_t status); + +/** + * Create instance of STUN server. + */ +PJ_DECL(pj_status_t) pj_stun_server_create(pj_pool_factory *pf, + unsigned thread_cnt, + pj_stun_server **p_srv); + +/** + * Get STUN server info. + */ +PJ_DECL(pj_stun_server_info*) pj_stun_server_get_info(pj_stun_server *srv); + + +/** + * Destroy STUN server. + */ +PJ_DECL(pj_status_t) pj_stun_server_destroy(pj_stun_server *srv); + + +/** + * Create STUN usage. + */ +PJ_DECL(pj_status_t) pj_stun_usage_create(pj_stun_server *srv, + const char *name, + const pj_stun_usage_cb *cb, + int family, + int type, + int protocol, + const pj_sockaddr_t *local_addr, + int addr_len, + pj_stun_usage **p_usage); + +/** + * Destroy usage. + */ +PJ_DECL(pj_status_t) pj_stun_usage_destroy(pj_stun_usage *usage); + +/** + * Set user data. + */ +PJ_DECL(pj_status_t) pj_stun_usage_set_user_data(pj_stun_usage *usage, + void *user_data); +/** + * Get user data. + */ +PJ_DECL(void*) pj_stun_usage_get_user_data(pj_stun_usage *usage); + +/** + * Send with the usage. + */ +PJ_DECL(pj_status_t) pj_stun_usage_sendto(pj_stun_usage *usage, + const void *pkt, + pj_size_t pkt_size, + unsigned flags, + const pj_sockaddr_t *dst_addr, + unsigned addr_len); + +PJ_DEF(pj_status_t) pj_stun_bind_usage_create(pj_stun_server *srv, + const pj_str_t *ip_addr, + unsigned port, + pj_stun_usage **p_bu); + + +#endif /* __STUN_SERVER_H__ */ + + |