提交 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); ...@@ -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_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_start(zap_span_t *span);
OZ_DECLARE(zap_status_t) zap_span_stop(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(const char *name);
OZ_DECLARE(int) zap_load_module_assume(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); 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 ...@@ -113,6 +113,11 @@ static int create_conn_socket(sangomabc_connection_t *mcon, char *local_ip, int
char buf[512], local_buf[512]; char buf[512], local_buf[512];
int err = 0, local_err = 0; 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->remote_hp, 0, sizeof(mcon->remote_hp));
memset(&mcon->local_hp, 0, sizeof(mcon->local_hp)); memset(&mcon->local_hp, 0, sizeof(mcon->local_hp));
#ifdef HAVE_NETINET_SCTP_H #ifdef HAVE_NETINET_SCTP_H
...@@ -175,6 +180,10 @@ static int create_conn_socket(sangomabc_connection_t *mcon, char *local_ip, int ...@@ -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) 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) { if (mcon->socket > -1) {
close(mcon->socket); close(mcon->socket);
} }
...@@ -192,6 +201,10 @@ int sangomabc_connection_close(sangomabc_connection_t *mcon) ...@@ -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) 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); create_conn_socket(mcon, local_ip, local_port, ip, port);
return mcon->socket; return mcon->socket;
} }
...@@ -261,8 +274,14 @@ sangomabc_event_t *__sangomabc_connection_read(sangomabc_connection_t *mcon, int ...@@ -261,8 +274,14 @@ sangomabc_event_t *__sangomabc_connection_read(sangomabc_connection_t *mcon, int
int bytes = 0; int bytes = 0;
int msg_ok = 0; int msg_ok = 0;
bytes = recvfrom(mcon->socket, &mcon->event, sizeof(mcon->event), MSG_DONTWAIT, if (mcon->sigmod) {
(struct sockaddr *) &mcon->local_addr, &fromlen); /* 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) { if (bytes <= 0) {
return NULL; return NULL;
......
...@@ -135,15 +135,26 @@ typedef zap_status_t (*boost_stop_span_func_t) BOOST_START_SPAN_ARGS; ...@@ -135,15 +135,26 @@ typedef zap_status_t (*boost_stop_span_func_t) BOOST_START_SPAN_ARGS;
\brief The boost signaling module interface \brief The boost signaling module interface
*/ */
typedef struct boost_sigmod_interface_s { typedef struct boost_sigmod_interface_s {
/*! \brief Module name */
const char *name; const char *name;
/*! \brief write boost message function */
boost_write_msg_func_t write_msg; 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; 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; 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; boost_get_sig_status_func_t get_sig_status;
/*! \brief set channel signaling status */
boost_set_sig_status_func_t set_sig_status; boost_set_sig_status_func_t set_sig_status;
/*! \brief configure span signaling */
boost_configure_span_func_t configure_span; boost_configure_span_func_t configure_span;
/*! \brief start openzap span */
boost_start_span_func_t start_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; } boost_sigmod_interface_t;
#endif #endif
......
...@@ -44,8 +44,12 @@ typedef enum { ...@@ -44,8 +44,12 @@ typedef enum {
typedef struct zap_sangoma_boost_data { typedef struct zap_sangoma_boost_data {
sangomabc_connection_t mcon; sangomabc_connection_t mcon;
sangomabc_connection_t pcon; sangomabc_connection_t pcon;
fd_set rfds;
fd_set efds;
int iteration;
zio_signal_cb_t signal_cb; zio_signal_cb_t signal_cb;
uint32_t flags; uint32_t flags;
boost_sigmod_interface_t *sigmod;
} zap_sangoma_boost_data_t; } zap_sangoma_boost_data_t;
#endif #endif
......
...@@ -2528,14 +2528,8 @@ static zap_status_t process_module_config(zap_io_interface_t *zio) ...@@ -2528,14 +2528,8 @@ static zap_status_t process_module_config(zap_io_interface_t *zio)
return ZAP_SUCCESS; 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 #ifdef WIN32
const char *ext = ".dll"; const char *ext = ".dll";
//const char *EXT = ".DLL"; //const char *EXT = ".DLL";
...@@ -2547,13 +2541,24 @@ OZ_DECLARE(int) zap_load_module(const char *name) ...@@ -2547,13 +2541,24 @@ OZ_DECLARE(int) zap_load_module(const char *name)
const char *ext = ".so"; const char *ext = ".so";
//const char *EXT = ".SO"; //const char *EXT = ".SO";
#endif #endif
if (*name == *ZAP_PATH_SEPARATOR) { if (*name == *ZAP_PATH_SEPARATOR) {
snprintf(path, sizeof(path), "%s%s", name, ext); snprintf(path, len, "%s%s", name, ext);
} else { } 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))) { if (!(lib = zap_dso_open(path, &err))) {
zap_log(ZAP_LOG_ERROR, "Error loading %s [%s]\n", path, err); zap_log(ZAP_LOG_ERROR, "Error loading %s [%s]\n", path, err);
zap_safe_free(err); zap_safe_free(err);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论