📄 tport_plugins.h
字号:
/* * This file is part of the Sofia-SIP package * * Copyright (C) 2005 Nokia Corporation. * * Contact: Pekka Pessi <pekka.pessi@nokia.com> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * */#ifndef TPORT_PLUGINS_H/** Defined when <sofia-sip/tport_plugins.h> has been included. */#define TPORT_PLUGINS_H/**@file sofia-sip/tport_plugins.h * @brief Transport plugin interface * * @author Pekka Pessi <Pekka.Pessi@nokia.com> * * @date Created: Fri Mar 31 12:22:22 EEST 2006 ppessi *//* -- STUN Plugin ------------------------------------------------------- */#ifndef TPORT_STUN_SERVER_T#define TPORT_STUN_SERVER_T struct tport_stun_server_s#endif/** Safe type for tport server object */typedef TPORT_STUN_SERVER_T tport_stun_server_t;typedef struct { int vst_size; tport_stun_server_t *(*vst_create)(su_root_t *root, tagi_t const *tags); void (*vst_destroy)(tport_stun_server_t *); int (*vst_add_socket)(tport_stun_server_t *, su_socket_t socket); int (*vst_remove_socket)(tport_stun_server_t *, su_socket_t socket); void (*vst_request)(tport_stun_server_t *server, su_socket_t socket, void *msg, ssize_t msglen, void *addr, socklen_t addrlen);} tport_stun_server_vtable_t;SOFIAPUBFUN int tport_plug_in_stun_server(tport_stun_server_vtable_t const *);/* -- SigComp Plugin ---------------------------------------------------- *//* We already use these SigComp types in applications */struct sigcomp_udvm;struct sigcomp_compartment;typedef struct tport_comp_vtable_s tport_comp_vtable_t;struct tport_comp_vtable_s { /* NOTE: this will change! Unstable! Do not use! */ int vsc_size; char const *vsc_compname; size_t vsc_sizeof_context; int (*vsc_init_comp)(tp_stack_t *, tport_t *, tport_compressor_t *, char const *comp_name, tagi_t const *tags); void (*vsc_deinit_comp)(tp_stack_t *, tport_t *, tport_compressor_t *); char const *(*vsc_comp_name)(tport_compressor_t const *master_sc, char const *compression, tagi_t const *tags); /* Mapping of public tport API */ int (*vsc_can_send_comp)(tport_compressor_t const *); int (*vsc_can_recv_comp)(tport_compressor_t const *); int (*vsc_set_comp_name)(tport_t const *self, tport_compressor_t const *return_sc, char const *comp); int (*vsc_sigcomp_option)(tport_t const *self, struct sigcomp_compartment *cc, char const *option); struct sigcomp_compartment * (*vsc_sigcomp_compartment)(tport_t *self, char const *name, int namelen, int create_if_needed); struct sigcomp_compartment * (*vsc_compartment_incref)(struct sigcomp_compartment *cc); void (*vsc_compartment_decref)(struct sigcomp_compartment **pointer_to_cc); int (*vsc_set_compartment)(tport_t *self, tport_compressor_t *, struct sigcomp_compartment *); struct sigcomp_compartment * (*vsc_get_compartment)(tport_t const *self, tport_compressor_t const *); int (*vsc_has_sigcomp_assigned)(tport_compressor_t const *comp); int (*vsc_sigcomp_accept)(tport_t *self, tport_compressor_t const *comp, struct sigcomp_compartment *cc, msg_t *msg); int (*vsc_delivered_using_udvm)(tport_t *tp, msg_t const *msg, struct sigcomp_udvm **return_pointer_to_udvm, int remove); int (*vsc_sigcomp_close)(tport_t *self, struct sigcomp_compartment *cc, int how); int (*vsc_sigcomp_lifetime)(tport_t *self, struct sigcomp_compartment *, unsigned lifetime_in_ms, int only_expand); /* Internal API */ struct sigcomp_udvm **(*vsc_get_udvm_slot)(tport_t *self); struct sigcomp_compartment * (*vsc_sigcomp_assign_if_needed)(tport_t *self, struct sigcomp_compartment *cc); void (*vsc_accept_incomplete)(tport_t const *self, tport_compressor_t *sc, msg_t *msg); int (*vsc_recv_comp)(tport_t const *self, tport_compressor_t *sc, msg_t **in_out_msg, su_sockaddr_t *from, socklen_t fromlen); ssize_t (*vsc_send_comp)(tport_t const *self, msg_t *msg, msg_iovec_t iov[], size_t iovused, struct sigcomp_compartment *cc, tport_compressor_t *sc);};SOFIAPUBFUN int tport_plug_in_comp(tport_comp_vtable_t const *);#endif /* !defined(TPORT_PLUGINS_H) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -