summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryangwei <[email protected]>2024-03-22 11:08:00 +0800
committeryangwei <[email protected]>2024-03-22 14:08:42 +0800
commit6bad4730f7a3089ace6072986256865b94a066fb (patch)
treec19b8d6248cd51fd057a31f96a4584504b44233e
parent0075dcbd3da31e0a396e414eaa93814f1e2c1ac0 (diff)
🧪 test(refactor test stellar plugin):
-rw-r--r--examples/stellar_plugin/simple_plugin.toml7
-rw-r--r--examples/stellar_plugin/simple_stellar_plugin.c266
-rw-r--r--include/stellar/stellar.h2
-rw-r--r--src/adapter/adapter.c12
-rw-r--r--src/adapter/adapter.h2
-rw-r--r--src/adapter/session_manager.c10
-rw-r--r--src/stellar_on_sapp/stellar_on_sapp.c5
-rw-r--r--src/stellar_on_sapp/version.map5
8 files changed, 222 insertions, 87 deletions
diff --git a/examples/stellar_plugin/simple_plugin.toml b/examples/stellar_plugin/simple_plugin.toml
index ce08b65..1b02a5d 100644
--- a/examples/stellar_plugin/simple_plugin.toml
+++ b/examples/stellar_plugin/simple_plugin.toml
@@ -7,4 +7,9 @@ exit = "simple_stellar_event_plugin_exit"
[[plugin]]
path = "./stellar_plugin/simple_stellar_plugin.so"
init = "simple_stellar_mq_plugin_init"
-exit = "simple_stellar_mq_plugin_exit" \ No newline at end of file
+exit = "simple_stellar_mq_plugin_exit"
+
+[[plugin]]
+path = "./stellar_plugin/simple_stellar_plugin.so"
+init = "simple_stellar_pp_plugin_init"
+exit = "simple_stellar_pp_plugin_exit" \ No newline at end of file
diff --git a/examples/stellar_plugin/simple_stellar_plugin.c b/examples/stellar_plugin/simple_stellar_plugin.c
index 50f38f0..c5798eb 100644
--- a/examples/stellar_plugin/simple_stellar_plugin.c
+++ b/examples/stellar_plugin/simple_stellar_plugin.c
@@ -1,3 +1,4 @@
+#include "src/adapter/stellar_internal.h"
#include "stellar/stellar.h"
#include "stellar/utils.h"
#include "stellar/session_exdata.h"
@@ -5,14 +6,16 @@
#include <stdio.h>
-struct simple_stellar_plugin_ctx
+struct simple_stellar_plugin_env
{
int plugin_id;
int exdata_idx;
+ int topic_id;
+ int sub_id;
struct stellar *st;
};
-struct mq_message_stat
+struct simple_message
{
uint32_t c2s_pkts;
uint32_t c2s_bytes;
@@ -21,62 +24,75 @@ struct mq_message_stat
struct session_event* ud_ev;
};
-extern int simple_mq_plugin_entry(struct session *sess, int events, const struct packet *pkt, void *cb_arg);
-static int session_mq_plugin_sub_fn(struct session *sess, int topic_id, const void *data, void *cb_arg)
+static void print_simple_message(struct session *sess, struct simple_message *msg, int plugin_id)
{
- struct mq_message_stat *ctx =(struct mq_message_stat *)data;
- struct simple_stellar_plugin_ctx *plugin_ctx = (struct simple_stellar_plugin_ctx *)cb_arg;
- printf("%s(topic:%d->plug:%d)-----------%20s: ", __FUNCTION__, topic_id, plugin_ctx->plugin_id, session_get0_readable_addr(sess));
+ printf("%s(plug:%d)-----------%20s: ", __FUNCTION__, plugin_id, session_get0_readable_addr(sess));
printf("server-pkt=%u, server-count=%u, client-pkt=%u, client-count=%u, ",
- ctx->c2s_pkts, ctx->c2s_bytes,
- ctx->s2c_pkts, ctx->s2c_bytes);
- printf("total-pkt=%u, ", ctx->c2s_pkts+ctx->s2c_pkts);
- printf("total-count=%u\n", ctx->c2s_bytes+ctx->s2c_bytes);
-
- struct session_event *i_ev=session_get_intrinsic_event(sess, plugin_ctx->plugin_id);
- session_event_assign(i_ev, plugin_ctx->st, sess, (SESS_EV_TCP|SESS_EV_UDP|SESS_EV_OPENING|SESS_EV_PACKET|SESS_EV_CLOSING), simple_mq_plugin_entry, plugin_ctx);
- printf("%s(plug:%d)session_event_assign-----------%20s\n", __FUNCTION__, plugin_ctx->plugin_id, session_get0_readable_addr(sess));
+ msg->c2s_pkts, msg->c2s_bytes,
+ msg->s2c_pkts, msg->s2c_bytes);
+ printf("total-pkt=%u, ", msg->c2s_pkts+msg->s2c_pkts);
+ printf("total-count=%u\n", msg->c2s_bytes+msg->s2c_bytes);
+ return;
+}
- return 0;
+static void simple_message_free(void *data, void *cb_arg)
+{
+ FREE(data);
+ return;
}
-static void print_session_ctx(struct session *sess, struct mq_message_stat *ctx, int plugin_id)
+static void simple_exdata_free(struct session *sess, int idx, void *ex_ptr, void *arg)
{
- printf("%s(plug:%d)-----------%20s: ", __FUNCTION__, plugin_id, session_get0_readable_addr(sess));
- printf("server-pkt=%u, server-count=%u, client-pkt=%u, client-count=%u, ",
- ctx->c2s_pkts, ctx->c2s_bytes,
- ctx->s2c_pkts, ctx->s2c_bytes);
- printf("total-pkt=%u, ", ctx->c2s_pkts+ctx->s2c_pkts);
- printf("total-count=%u\n", ctx->c2s_bytes+ctx->s2c_bytes);
+ if(ex_ptr)
+ {
+ FREE(ex_ptr);
+ }
return;
}
+/***************************************
+ * simple stellar mq publisher plugin *
+ ***************************************/
+
int simple_event_plugin_user_defined_ev(struct session *sess, int events, const struct packet *pkt, void *cb_arg)
{
if(cb_arg == NULL)return -1;
- struct simple_stellar_plugin_ctx *plugin_ctx=(struct simple_stellar_plugin_ctx *)cb_arg;
- struct mq_message_stat *mg_stat = (struct mq_message_stat *)session_get_ex_data(sess, plugin_ctx->exdata_idx);
- printf("%s(plug:%d)trigger-----------%20s\n", __FUNCTION__, plugin_ctx->plugin_id, session_get0_readable_addr(sess));
- print_session_ctx(sess, mg_stat, plugin_ctx->plugin_id);
+ struct simple_stellar_plugin_env *plugin_env=(struct simple_stellar_plugin_env *)cb_arg;
+ struct simple_message *msg = (struct simple_message *)session_get_ex_data(sess, plugin_env->exdata_idx);
+ printf("%s(plug:%d)trigger-----------%20s\n", __FUNCTION__, plugin_env->plugin_id, session_get0_readable_addr(sess));
+ print_simple_message(sess, msg, plugin_env->plugin_id);
return 0;
}
+static struct simple_message *simple_message_dup(struct simple_message *in)
+{
+ struct simple_message *out = CALLOC(struct simple_message, 1);
+ if(out)
+ {
+ out->c2s_pkts = in->c2s_pkts;
+ out->c2s_bytes = in->c2s_bytes;
+ out->s2c_pkts = in->s2c_pkts;
+ out->s2c_bytes = in->s2c_bytes;
+ }
+ return out;
+}
+
int simple_event_plugin_entry(struct session *sess, int events, const struct packet *pkt, void *cb_arg)
{
if(cb_arg == NULL)return -1;
- struct simple_stellar_plugin_ctx *plugin_ctx=(struct simple_stellar_plugin_ctx *)cb_arg;
- struct mq_message_stat *mg_stat = (struct mq_message_stat *)session_get_ex_data(sess, plugin_ctx->exdata_idx);
- if (mg_stat == NULL)
+ struct simple_stellar_plugin_env *plugin_env=(struct simple_stellar_plugin_env *)cb_arg;
+ struct simple_message *exdata_msg = (struct simple_message *)session_get_ex_data(sess, plugin_env->exdata_idx);
+ if (exdata_msg == NULL)
{
- mg_stat = CALLOC(struct mq_message_stat, 1);
- session_set_ex_data(sess, plugin_ctx->exdata_idx, mg_stat);
+ exdata_msg = CALLOC(struct simple_message, 1);
+ session_set_ex_data(sess, plugin_env->exdata_idx, exdata_msg);
}
if ((events & SESS_EV_OPENING))
{
- mg_stat->ud_ev=session_event_new(plugin_ctx->st, sess, (SESS_EV_TCP|SESS_EV_UDP|SESS_EV_OPENING|SESS_EV_PACKET|SESS_EV_CLOSING), simple_event_plugin_user_defined_ev, cb_arg);
- session_event_add(mg_stat->ud_ev, NULL);
+ exdata_msg->ud_ev=session_event_new(plugin_env->st, sess, (SESS_EV_TCP|SESS_EV_UDP|SESS_EV_OPENING|SESS_EV_PACKET|SESS_EV_CLOSING), simple_event_plugin_user_defined_ev, cb_arg);
+ session_event_add(exdata_msg->ud_ev, NULL);
}
if (pkt)
@@ -86,82 +102,178 @@ int simple_event_plugin_entry(struct session *sess, int events, const struct pac
int dir = session_get_direction(sess);
if (dir==SESSION_DIRECTION_IN)
{
- mg_stat->c2s_bytes += payload_len;
- mg_stat->c2s_pkts += 1;
+ exdata_msg->c2s_bytes += payload_len;
+ exdata_msg->c2s_pkts += 1;
}
if (dir==SESSION_DIRECTION_OUT)
{
- mg_stat->s2c_bytes += payload_len;
- mg_stat->s2c_pkts += 1;
+ exdata_msg->s2c_bytes += payload_len;
+ exdata_msg->s2c_pkts += 1;
+ }
+ struct simple_message *send_msg = simple_message_dup(exdata_msg);
+ if(session_mq_publish_message(sess, plugin_env->topic_id, send_msg) < 0)
+ {
+ FREE(send_msg);
}
}
- if (mg_stat != NULL && (events & SESS_EV_CLOSING))
+ if (exdata_msg != NULL && (events & SESS_EV_CLOSING))
{
- print_session_ctx(sess, mg_stat, plugin_ctx->plugin_id);
- session_event_free(mg_stat->ud_ev);
+ print_simple_message(sess, exdata_msg, plugin_env->plugin_id);
+ session_event_free(exdata_msg->ud_ev);
}
return 0;
}
-int simple_mq_plugin_entry(struct session *sess, int events, const struct packet *pkt, void *cb_arg)
+void *simple_stellar_event_plugin_init(struct stellar *st)
{
- if(cb_arg == NULL)return -1;
- struct simple_stellar_plugin_ctx *plugin_ctx=(struct simple_stellar_plugin_ctx *)cb_arg;
- struct session_event *i_ev=session_get_intrinsic_event(sess, plugin_ctx->plugin_id);
- session_event_assign(i_ev, plugin_ctx->st, sess, 0, simple_mq_plugin_entry, plugin_ctx);
- printf("%s(plug:%d)session_event_assign-----------%20s: \n", __FUNCTION__, plugin_ctx->plugin_id, session_get0_readable_addr(sess));
- return 0;
+ struct simple_stellar_plugin_env *plugin_env = CALLOC(struct simple_stellar_plugin_env, 1);
+ plugin_env->st = st;
+ plugin_env->exdata_idx = stellar_session_get_ex_new_index(st, "SIMPLE_EVENT_PLUGIN", simple_exdata_free, NULL);
+ if(plugin_env->exdata_idx < 0)exit(-1);
+ int plugin_id=stellar_plugin_register(st, (SESS_EV_TCP|SESS_EV_UDP|SESS_EV_OPENING|SESS_EV_PACKET|SESS_EV_CLOSING), simple_event_plugin_entry, plugin_env);
+ if(plugin_id < 0)exit(-1);
+ plugin_env->plugin_id=plugin_id;
+
+ session_mq_create_topic(st, "SIMPLE_MQ_TOPIC", simple_message_free, NULL);
+ plugin_env->topic_id=session_mq_get_topic_id(st, "SIMPLE_MQ_TOPIC");
+ if(plugin_env->topic_id < 0)exit(-1);
+ session_mq_update_topic(st, plugin_env->topic_id, simple_message_free, NULL);
+ return plugin_env;
}
-static void simple_exdata_free(struct session *sess, int idx, void *ex_ptr, void *arg)
+void simple_stellar_event_plugin_exit(void *plugin_env)
{
- if(ex_ptr)
+
+ if(plugin_env)
{
- FREE(ex_ptr);
+ struct simple_stellar_plugin_env *env=(struct simple_stellar_plugin_env *)plugin_env;
+ session_mq_destroy_topic(env->st, env->topic_id);
+ FREE(plugin_env);
}
return;
}
-void *simple_stellar_event_plugin_init(struct stellar *st)
+
+/**************************************
+ * simple stellar mq subscibe plugin *
+ **************************************/
+
+int simple_mq_plugin_entry(struct session *sess, int events, const struct packet *pkt, void *cb_arg)
{
- struct simple_stellar_plugin_ctx *ctx = CALLOC(struct simple_stellar_plugin_ctx, 1);
- ctx->st = st;
- ctx->exdata_idx = stellar_session_get_ex_new_index(st, "SIMPLE_EVENT_PLUGIN", simple_exdata_free, NULL);
- int plugin_id=stellar_plugin_register(st, (SESS_EV_TCP|SESS_EV_UDP|SESS_EV_OPENING|SESS_EV_PACKET|SESS_EV_CLOSING), simple_event_plugin_entry, ctx);
- if(plugin_id >= 0)
+ if(cb_arg == NULL)return -1;
+ struct simple_stellar_plugin_env *plugin_env=(struct simple_stellar_plugin_env *)cb_arg;
+ struct session_event *i_ev=session_get_intrinsic_event(sess, plugin_env->plugin_id);
+ session_event_assign(i_ev, plugin_env->st, sess, 0, simple_mq_plugin_entry, plugin_env);// in event entry, remove all subsequent events
+ printf("%s(plug:%d)session_event_assign-----------%20s: \n", __FUNCTION__, plugin_env->plugin_id, session_get0_readable_addr(sess));
+ return 0;
+}
+
+static int session_mq_plugin_sub_fn(struct session *sess, int topic_id, const void *data, void *cb_arg)
+{
+ struct simple_message *msg =(struct simple_message *)data;
+ struct simple_stellar_plugin_env *plugin_ctx = (struct simple_stellar_plugin_env *)cb_arg;
+ printf("%s(topic:%d->plug:%d)-----------%20s: ", __FUNCTION__, topic_id, plugin_ctx->plugin_id, session_get0_readable_addr(sess));
+ printf("server-pkt=%u, server-count=%u, client-pkt=%u, client-count=%u, ",
+ msg->c2s_pkts, msg->c2s_bytes,
+ msg->s2c_pkts, msg->s2c_bytes);
+ printf("total-pkt=%u, ", msg->c2s_pkts+msg->s2c_pkts);
+ printf("total-count=%u\n", msg->c2s_bytes+msg->s2c_bytes);
+
+ if((msg->c2s_pkts+msg->s2c_pkts)>10)
+ {
+ session_mq_ignore_message(sess, topic_id, plugin_ctx->sub_id);
+ printf("%s(topic:%d->plug:%d)session_mq_ignore_message-----------%20s\n", __FUNCTION__, topic_id, plugin_ctx->plugin_id, session_get0_readable_addr(sess));
+ }
+ else
{
- ctx->plugin_id=plugin_id;
+ struct session_event *i_ev=session_get_intrinsic_event(sess, plugin_ctx->plugin_id);
+ session_event_assign(i_ev, plugin_ctx->st, sess, (SESS_EV_TCP|SESS_EV_UDP|SESS_EV_OPENING|SESS_EV_PACKET|SESS_EV_CLOSING), simple_mq_plugin_entry, plugin_ctx);
+ printf("%s(plug:%d)session_event_assign-----------%20s\n", __FUNCTION__, plugin_ctx->plugin_id, session_get0_readable_addr(sess));
}
- return ctx;
+
+ return 0;
+}
+
+
+
+void *simple_stellar_mq_plugin_init(struct stellar *st)
+{
+ struct simple_stellar_plugin_env *plugin_env = CALLOC(struct simple_stellar_plugin_env, 1);
+ plugin_env->st = st;
+ plugin_env->exdata_idx = stellar_session_get_ex_new_index(st, "SIMPLE_MQ_PLUGIN", simple_exdata_free, NULL);
+ session_mq_create_topic(st, "SIMPLE_MQ_TOPIC", simple_message_free, NULL);
+ plugin_env->topic_id=session_mq_get_topic_id(st, "SIMPLE_MQ_TOPIC");
+ if(plugin_env->topic_id < 0)exit(-1);
+ plugin_env->sub_id=session_mq_subscribe_topic(st, plugin_env->topic_id, session_mq_plugin_sub_fn, plugin_env);
+ int plugin_id=stellar_plugin_register(st, 0, simple_mq_plugin_entry, plugin_env);
+ if(plugin_id < 0)exit(-1);
+ plugin_env->plugin_id=plugin_id;
+ return plugin_env;
}
-void simple_stellar_event_plugin_exit(void *ctx)
+void simple_stellar_mq_plugin_exit(void *plugin_env)
{
- if(ctx)FREE(ctx);
+ if(plugin_env)FREE(plugin_env);
return;
}
-void *simple_stellar_mq_plugin_init(struct stellar *st)
+/*********************************************
+ * simple stellar pakcet and polling plugin *
+ *********************************************/
+
+struct pp_plugin_env
{
- struct simple_stellar_plugin_ctx *ctx = CALLOC(struct simple_stellar_plugin_ctx, 1);
- ctx->st = st;
- ctx->exdata_idx = stellar_session_get_ex_new_index(st, "SIMPLE_MQ_PLUGIN", simple_exdata_free, NULL);
- int topic_id=session_mq_get_topic_id(st, "SIMPLE_MQ_TOPIC");
- if(topic_id < 0)
- {
- topic_id=session_mq_create_topic(st, "SIMPLE_MQ_TOPIC", NULL, NULL);
- }
- session_mq_subscribe_topic(st, topic_id, session_mq_plugin_sub_fn, ctx);
- int plugin_id=stellar_plugin_register(st, 0, simple_mq_plugin_entry, ctx);
- if(plugin_id >= 0)
+ struct stellar *st;
+ long long polling_cnt[256];
+ long long tcp_pkt_cnt[256];
+ long long udp_pkt_cnt[256];
+};
+
+
+static int simple_pp_plugin_on_polling_entry(void *cb_arg)
+{
+ struct pp_plugin_env *plugin_env=(struct pp_plugin_env *)cb_arg;
+ int work_thread_idx=stellar_get_current_thread_id(plugin_env->st);
+ plugin_env->polling_cnt[work_thread_idx]+=1;
+ return 0;
+}
+
+static void simple_pp_plugin_on_packet_entry(struct packet *pkt, unsigned char ip_protocol, void *cb_arg)
+{
+ struct pp_plugin_env *plugin_env=(struct pp_plugin_env *)cb_arg;
+ int work_thread_idx=stellar_get_current_thread_id(plugin_env->st);
+ switch (ip_protocol)
{
- ctx->plugin_id=plugin_id;
+ case 6:
+ plugin_env->tcp_pkt_cnt[work_thread_idx]+=1;
+ break;
+ case 17:
+ plugin_env->udp_pkt_cnt[work_thread_idx]+=1;
+ break;
+ default:
+ break;
}
- return ctx;
}
-void simple_stellar_mq_plugin_exit(void *ctx)
+void *simple_stellar_pp_plugin_init(struct stellar *st)
{
- if(ctx)FREE(ctx);
+ struct pp_plugin_env *plugin_env = CALLOC(struct pp_plugin_env, 1);
+ plugin_env->st = st;
+ stellar_polling_plugin_register(st, simple_pp_plugin_on_polling_entry, plugin_env);
+ stellar_packet_plugin_register(st, 6, simple_pp_plugin_on_packet_entry, plugin_env);
+ stellar_packet_plugin_register(st, 17, simple_pp_plugin_on_packet_entry, plugin_env);
+ return plugin_env;
+}
+
+void simple_stellar_pp_plugin_exit(void *plugin_env)
+{
+ struct pp_plugin_env *pp_env=(struct pp_plugin_env *)plugin_env;
+ int thread_num=stellar_get_worker_thread_num(pp_env->st);
+ printf("(%s)-----------thread_num:%d\n", __FUNCTION__, thread_num);
+ for(int i=0; i<thread_num; i++)
+ {
+ printf("thread:%d, polling_cnt:%lld, tcp_pkt_cnt:%lld, udp_pkt_cnt:%lld\n", i, pp_env->polling_cnt[i], pp_env->tcp_pkt_cnt[i], pp_env->udp_pkt_cnt[i]);
+ }
+ if(plugin_env)FREE(plugin_env);
return;
} \ No newline at end of file
diff --git a/include/stellar/stellar.h b/include/stellar/stellar.h
index 559da20..7f9cd05 100644
--- a/include/stellar/stellar.h
+++ b/include/stellar/stellar.h
@@ -18,7 +18,7 @@ typedef int stellar_periodic_cb_func(struct stellar *st, void *cb_arg);
int stellar_worker_thread_periodic_add(struct stellar *st, stellar_periodic_cb_func *periodic_cb, void *cb_arg, const struct timeval *interval);
-typedef void plugin_on_polling_func(void *cb_arg);
+typedef int plugin_on_polling_func(void *cb_arg);
//return polling plugin_id
int stellar_polling_plugin_register(struct stellar *st, plugin_on_polling_func on_polling, void *cb_arg); \ No newline at end of file
diff --git a/src/adapter/adapter.c b/src/adapter/adapter.c
index 48e211e..ee7d9aa 100644
--- a/src/adapter/adapter.c
+++ b/src/adapter/adapter.c
@@ -251,18 +251,22 @@ int stellar_polling_plugin_register(struct stellar *st, plugin_on_polling_func o
}
// FIXME: scheduler with return value
-void adapter_on_polling(struct stellar *st)
+int adapter_on_polling(struct stellar *st)
{
- if(st->registered_polling_plugin_array == NULL)return;
+ if(st->registered_polling_plugin_array == NULL)return 0;
struct registered_polling_plugin_schema *p=NULL;
+ int is_working=0;
while ((p = (struct registered_polling_plugin_schema *)utarray_next(st->registered_polling_plugin_array, p)))
{
if(p->on_polling)
{
- p->on_polling(p->plugin_env);
+ if(p->on_polling(p->plugin_env)==1)
+ {
+ is_working=1;
+ }
}
}
- return;
+ return is_working;
}
diff --git a/src/adapter/adapter.h b/src/adapter/adapter.h
index d9385bc..2d2cbda 100644
--- a/src/adapter/adapter.h
+++ b/src/adapter/adapter.h
@@ -28,4 +28,4 @@ enum packet_type
};
void adapter_on_packet_update(struct stellar *st, struct streaminfo *pstream, void *pkt_hdr, enum packet_type type);
-void adapter_on_polling(struct stellar *st); \ No newline at end of file
+int adapter_on_polling(struct stellar *st); \ No newline at end of file
diff --git a/src/adapter/session_manager.c b/src/adapter/session_manager.c
index e12709b..3312763 100644
--- a/src/adapter/session_manager.c
+++ b/src/adapter/session_manager.c
@@ -129,8 +129,16 @@ static void session_mq_topic_schema_dtor(void *_elt)
{
struct session_mq_topic_schema *elt = (struct session_mq_topic_schema *)_elt;
if (elt->topic_name)
+ {
FREE(elt->topic_name);
- // FREE(elt); // free the item
+ }
+ // free the item
+ struct session_mq_subscriber *sub_elt, *sub_tmp;
+ DL_FOREACH_SAFE(elt->subscribers, sub_elt, sub_tmp)
+ {
+ DL_DELETE(elt->subscribers, sub_elt);
+ free(sub_elt);
+ }
}
UT_icd session_mq_topic_schema_icd = {sizeof(struct session_mq_topic_schema), NULL, session_mq_topic_schema_copy, session_mq_topic_schema_dtor};
diff --git a/src/stellar_on_sapp/stellar_on_sapp.c b/src/stellar_on_sapp/stellar_on_sapp.c
index 3f60b4e..9d0096e 100644
--- a/src/stellar_on_sapp/stellar_on_sapp.c
+++ b/src/stellar_on_sapp/stellar_on_sapp.c
@@ -198,6 +198,7 @@ char stellar_on_sapp_ip6_entry( struct streaminfo *pstream,unsigned char routedi
char stellar_on_sapp_polling_entry(struct streaminfo *stream, void **pme, int thread_seq,void *a_packet)
{
- adapter_on_polling(g_stellar);
- return APP_STATE_GIVEME;
+ int is_working=adapter_on_polling(g_stellar);
+ if(is_working==1)return POLLING_STATE_WORK;
+ return POLLING_STATE_IDLE;
}
diff --git a/src/stellar_on_sapp/version.map b/src/stellar_on_sapp/version.map
index 32bdd9d..ecd8ed8 100644
--- a/src/stellar_on_sapp/version.map
+++ b/src/stellar_on_sapp/version.map
@@ -8,11 +8,16 @@
STELLAR_DEFER_LOADER_INIT;
STELLAR_DEFER_LOADER_EXIT;
stellar_on_sapp_defer_entry;
+ stellar_on_sapp_ip4_entry;
+ stellar_on_sapp_ip6_entry;
+ stellar_on_sapp_polling_entry;
stellar_get_worker_thread_num;
stellar_get_current_thread_id;
stellar_session_get_ex_new_index;
stellar_plugin_register;
+ stellar_polling_plugin_register;
+ stellar_packet_plugin_register;
session_is_inner_most;
session_is_outer_tunnel;