diff options
| author | lijia <[email protected]> | 2021-10-28 17:33:58 +0800 |
|---|---|---|
| committer | lijia <[email protected]> | 2021-10-28 17:33:58 +0800 |
| commit | 455b2def86141d28277b29424916ec9e0252d3d3 (patch) | |
| tree | a391f50fe52676ca09837d5c6c444caf14191434 /src/project | |
| parent | 295fe48c24d79ea07e15efbdcde7595c50ac633e (diff) | |
TSG-8200, 增加project, bridge使用计数.
Diffstat (limited to 'src/project')
| -rw-r--r-- | src/project/project_requirement.c | 24 | ||||
| -rw-r--r-- | src/project/stream_bridge.c | 22 |
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; |
