summaryrefslogtreecommitdiff
path: root/src/project
diff options
context:
space:
mode:
authorlijia <[email protected]>2021-10-28 17:33:58 +0800
committerlijia <[email protected]>2021-10-28 17:33:58 +0800
commit455b2def86141d28277b29424916ec9e0252d3d3 (patch)
treea391f50fe52676ca09837d5c6c444caf14191434 /src/project
parent295fe48c24d79ea07e15efbdcde7595c50ac633e (diff)
TSG-8200, 增加project, bridge使用计数.
Diffstat (limited to 'src/project')
-rw-r--r--src/project/project_requirement.c24
-rw-r--r--src/project/stream_bridge.c22
2 files changed, 34 insertions, 12 deletions
diff --git a/src/project/project_requirement.c b/src/project/project_requirement.c
index ede1a7b..20c3a96 100644
--- a/src/project/project_requirement.c
+++ b/src/project/project_requirement.c
@@ -14,8 +14,6 @@ extern void del_last_rn(char *data, int max_len);
extern int tcp_flow_stat_init(void);
extern int G_UDP_FLOW_STAT_PROJECT_ID;
-#define PROJECT_REQ_MAX_PLUG_NUM (128)
-
enum pro_type_list{
PROGECT_REQ_VALUE_TYPE_SIMPLE_CHAR = 0,
PROGECT_REQ_VALUE_TYPE_SIMPLE_SHORT,
@@ -71,6 +69,15 @@ static int project_req_str_to_type_id(const char *project_req_val_type)
return pro_req_type;
}
+const char *project_find_name_by_id(int project_id)
+{
+ if((project_id < 0) || (project_id >= G_PROJECT_PLUG_NUM)){
+ return NULL;
+ }
+
+ return G_PROJECT_REQ_MANAGE[project_id].project_req_name;
+}
+
static int __project_find_id_by_name(const char *project_req_name, const char *project_req_val_type)
{
int i, pro_req_id = -1;
@@ -298,6 +305,9 @@ static int __project_req_add(struct streaminfo *stream, int project_req_id, long
}
pinfo[project_req_id].value = project_req_value;
+ if(0 == pinfo[project_req_id].valid_flag){
+ sapp_global_val->mthread_volatile[stream->threadnum]->sys_stat.count_project_in_use[project_req_id]++;
+ }
pinfo[project_req_id].valid_flag = 1;
return 0;
@@ -448,22 +458,20 @@ void project_requirement_destroy(int mem_use_type, int thread_num, void *pprojec
pinfo = (project_req_info_t *)(pproject);
for(i = 0; i < G_PROJECT_PLUG_NUM; i++){
+ if(pinfo[i].valid_flag != 0){
+ sapp_global_val->mthread_volatile[thread_num]->sys_stat.count_project_in_use[i]--;
+ }
if(PROGECT_REQ_VALUE_TYPE_STRUCT == G_PROJECT_REQ_MANAGE[i].project_req_type){
if(pinfo[i].value != 0){
if(G_PROJECT_REQ_MANAGE[i].free_cb != NULL){
(*(G_PROJECT_REQ_MANAGE[i].free_cb))(thread_num, (void *)pinfo[i].value); /* ����Լ�������ڴ��޷�ͳ�� */
}
-#if 0
- else{
- /* û��ע����������, Ĭ�ϰ��ڴ�ֱ���ͷ� */
- dictator_free(thread_num, (void *)(pinfo[i].value));
- }
-#endif
pinfo[i].value = 0;
}
}else{
pinfo[i].value = -1;
}
+ pinfo[i].valid_flag = 0;
}
sapp_mem_free((sapp_mem_type_t)mem_use_type, thread_num, pproject);
diff --git a/src/project/stream_bridge.c b/src/project/stream_bridge.c
index 52ff294..d7479b8 100644
--- a/src/project/stream_bridge.c
+++ b/src/project/stream_bridge.c
@@ -7,8 +7,6 @@ extern "C" {
#include "MESA_htable.h"
#include "MESA_list.h"
-#define STREAM_BRIDGE_MAX_NUM (128)
-
#define STREAM_BRIDGE_MAGIC_SUCC (0x62726765) // "brge" 十六进制
typedef struct{
@@ -78,7 +76,17 @@ static MESA_htable_handle stream_bridge_name2id_htable_create(void)
}
-static int stream_bridge_name2id(const char *bridge_name)
+const char *stream_bridge_id_to_name(int bridge_id)
+{
+ if((bridge_id < 0) || (bridge_id >= g_stream_bridge_actual_num)){
+ return NULL;
+ }
+
+ return g_stream_bridge_manage[bridge_id].bridge_name;
+}
+
+
+static int stream_bridge_name_to_id(const char *bridge_name)
{
int *bridge_id;
@@ -144,6 +152,9 @@ void stream_bridge_destroy_per_stream(int mem_used_type, const struct streaminfo
bridge_array = (stream_bridge_item_t *)(pbridge);
for(i = 0; i < g_stream_bridge_actual_num; i++){
+ if(bridge_array[i].valid_flag != 0){
+ sapp_global_val->mthread_volatile[stream->threadnum]->sys_stat.count_bridge_in_use[i]--;
+ }
if((g_stream_bridge_manage[i].async_data_free_cb) && (bridge_array[i].value != 0)){
g_stream_bridge_manage[i].async_data_free_cb(stream, i, (void *)(bridge_array[i].value));
}
@@ -165,7 +176,7 @@ int stream_bridge_build(const char *bridge_name, const char *rw_mode)
return -1;
}
- bridge_id = stream_bridge_name2id(bridge_name);
+ bridge_id = stream_bridge_name_to_id(bridge_name);
if(bridge_id < 0){
if((strncasecmp(rw_mode, "r", 1) == 0) && (strnlen(rw_mode, 2) == 1)){
@@ -229,6 +240,9 @@ int stream_bridge_async_data_put(const struct streaminfo *stream, int bridge_id,
bridge_item_array = (stream_bridge_item_t *)stream_pr->stream_bridge;
bridge_item_array[bridge_id].value = (long long)data;
+ if(0 == bridge_item_array[bridge_id].valid_flag){
+ sapp_global_val->mthread_volatile[stream->threadnum]->sys_stat.count_bridge_in_use[bridge_id]++;
+ }
bridge_item_array[bridge_id].valid_flag = 1;
return 0;