提交 890cba5b authored 作者: Moises Silva's avatar Moises Silva

refactoring to use function call based boost instead of sockets

git-svn-id: http://svn.openzap.org/svn/openzap/branches/sangoma_boost@857 a93c3328-9c30-0410-af19-c9cd2b2d52af
上级 66adb741
......@@ -683,6 +683,7 @@ OZ_DECLARE(zap_status_t) zap_unload_modules(void);
OZ_DECLARE(zap_status_t) zap_configure_span(const char *type, zap_span_t *span, zio_signal_cb_t sig_cb, ...);
OZ_DECLARE(zap_status_t) zap_span_start(zap_span_t *span);
OZ_DECLARE(zap_status_t) zap_span_stop(zap_span_t *span);
OZ_DECLARE(char *) zap_build_dso_path(const char *name, char *path, zap_size_t len);
OZ_DECLARE(int) zap_load_module(const char *name);
OZ_DECLARE(int) zap_load_module_assume(const char *name);
OZ_DECLARE(zap_status_t) zap_span_find_by_name(const char *name, zap_span_t **span);
......
......@@ -113,6 +113,11 @@ static int create_conn_socket(sangomabc_connection_t *mcon, char *local_ip, int
char buf[512], local_buf[512];
int err = 0, local_err = 0;
if (mcon->sigmod) {
zap_log(ZAP_LOG_WARNING, "I should not be called on a sigmod-managed connection!\n");
return 0;
}
memset(&mcon->remote_hp, 0, sizeof(mcon->remote_hp));
memset(&mcon->local_hp, 0, sizeof(mcon->local_hp));
#ifdef HAVE_NETINET_SCTP_H
......@@ -175,6 +180,10 @@ static int create_conn_socket(sangomabc_connection_t *mcon, char *local_ip, int
int sangomabc_connection_close(sangomabc_connection_t *mcon)
{
if (mcon->sigmod) {
zap_log(ZAP_LOG_WARNING, "I should not be called on a sigmod-managed connection!\n");
return 0;
}
if (mcon->socket > -1) {
close(mcon->socket);
}
......@@ -192,6 +201,10 @@ int sangomabc_connection_close(sangomabc_connection_t *mcon)
int sangomabc_connection_open(sangomabc_connection_t *mcon, char *local_ip, int local_port, char *ip, int port)
{
if (mcon->sigmod) {
zap_log(ZAP_LOG_WARNING, "I should not be called on a sigmod-managed connection!\n");
return 0;
}
create_conn_socket(mcon, local_ip, local_port, ip, port);
return mcon->socket;
}
......@@ -261,8 +274,14 @@ sangomabc_event_t *__sangomabc_connection_read(sangomabc_connection_t *mcon, int
int bytes = 0;
int msg_ok = 0;
bytes = recvfrom(mcon->socket, &mcon->event, sizeof(mcon->event), MSG_DONTWAIT,
(struct sockaddr *) &mcon->local_addr, &fromlen);
if (mcon->sigmod) {
/* TODO: implement me */
zap_log(ZAP_LOG_ERROR, "__sangomabc_connection_read not implemented yet for signaling modules\n");
return NULL;
} else {
bytes = recvfrom(mcon->socket, &mcon->event, sizeof(mcon->event), MSG_DONTWAIT,
(struct sockaddr *) &mcon->local_addr, &fromlen);
}
if (bytes <= 0) {
return NULL;
......
......@@ -135,15 +135,26 @@ typedef zap_status_t (*boost_stop_span_func_t) BOOST_START_SPAN_ARGS;
\brief The boost signaling module interface
*/
typedef struct boost_sigmod_interface_s {
/*! \brief Module name */
const char *name;
/*! \brief write boost message function */
boost_write_msg_func_t write_msg;
/*! \brief set the user write boost message function */
boost_set_write_msg_cb_func_t set_write_msg_cb;
/*! \brief set the user signaling status function */
boost_set_sig_status_cb_func_t set_sig_status_cb;
/*! \brief get channel signaling status */
boost_get_sig_status_func_t get_sig_status;
/*! \brief set channel signaling status */
boost_set_sig_status_func_t set_sig_status;
/*! \brief configure span signaling */
boost_configure_span_func_t configure_span;
/*! \brief start openzap span */
boost_start_span_func_t start_span;
boost_stop_span_func_t stop_stpan;
/*! \brief stop openzap span */
boost_stop_span_func_t stop_span;
/*! \brief private pointer for the interface user */
void *pvt;
} boost_sigmod_interface_t;
#endif
......
......@@ -44,8 +44,12 @@ typedef enum {
typedef struct zap_sangoma_boost_data {
sangomabc_connection_t mcon;
sangomabc_connection_t pcon;
fd_set rfds;
fd_set efds;
int iteration;
zio_signal_cb_t signal_cb;
uint32_t flags;
boost_sigmod_interface_t *sigmod;
} zap_sangoma_boost_data_t;
#endif
......
......@@ -2528,14 +2528,8 @@ static zap_status_t process_module_config(zap_io_interface_t *zio)
return ZAP_SUCCESS;
}
OZ_DECLARE(int) zap_load_module(const char *name)
OZ_DECLARE(char *) zap_build_dso_path(const char *name, char *path, zap_size_t len)
{
zap_dso_lib_t lib;
int count = 0, x = 0;
char path[128] = "";
char *err;
zap_module_t *mod;
#ifdef WIN32
const char *ext = ".dll";
//const char *EXT = ".DLL";
......@@ -2547,13 +2541,24 @@ OZ_DECLARE(int) zap_load_module(const char *name)
const char *ext = ".so";
//const char *EXT = ".SO";
#endif
if (*name == *ZAP_PATH_SEPARATOR) {
snprintf(path, sizeof(path), "%s%s", name, ext);
snprintf(path, len, "%s%s", name, ext);
} else {
snprintf(path, sizeof(path), "%s%s%s%s", ZAP_MOD_DIR, ZAP_PATH_SEPARATOR, name, ext);
snprintf(path, len, "%s%s%s%s", ZAP_MOD_DIR, ZAP_PATH_SEPARATOR, name, ext);
}
return path;
}
OZ_DECLARE(int) zap_load_module(const char *name)
{
zap_dso_lib_t lib;
int count = 0, x = 0;
char path[128] = "";
char *err;
zap_module_t *mod;
zap_build_dso_path(name, path, sizeof(path));
if (!(lib = zap_dso_open(path, &err))) {
zap_log(ZAP_LOG_ERROR, "Error loading %s [%s]\n", path, err);
zap_safe_free(err);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论