Skip to content
Snippets Groups Projects
Commit eca304df authored by Dmitriy A. Gerasimov's avatar Dmitriy A. Gerasimov
Browse files

[+] Added inheritor for session object

parent 85398ae2
No related branches found
No related tags found
No related merge requests found
...@@ -142,20 +142,29 @@ int dap_stream_session_close(unsigned int id) ...@@ -142,20 +142,29 @@ int dap_stream_session_close(unsigned int id)
return stream_session_close2(l_s); return stream_session_close2(l_s);
} }
int stream_session_close2(dap_stream_session_t * s) int stream_session_close2(dap_stream_session_t * a_session)
{ {
// log_it(L_INFO,"Close session"); // log_it(L_INFO,"Close session");
HASH_DEL(sessions,s); HASH_DEL(sessions,a_session);
free(s); if (a_session->callback_delete)
a_session->callback_delete(a_session, NULL);
if (a_session->_inheritor )
DAP_DELETE(a_session->_inheritor);
DAP_DELETE(a_session);
return 0; return 0;
} }
int dap_stream_session_open(dap_stream_session_t * ss) /**
* @brief dap_stream_session_open
* @param a_session
* @return
*/
int dap_stream_session_open(dap_stream_session_t * a_session)
{ {
int ret; int ret;
pthread_mutex_lock(&ss->mutex); pthread_mutex_lock(&a_session->mutex);
ret=ss->opened; ret=a_session->opened;
if(ss->opened==0) ss->opened=1; if(a_session->opened==0) a_session->opened=1;
pthread_mutex_unlock(&ss->mutex); pthread_mutex_unlock(&a_session->mutex);
return ret; return ret;
} }
...@@ -34,6 +34,9 @@ ...@@ -34,6 +34,9 @@
typedef enum stream_session_type {STREAM_SESSION_TYPE_MEDIA=0,STREAM_SESSION_TYPE_VPN} stream_session_type_t; typedef enum stream_session_type {STREAM_SESSION_TYPE_MEDIA=0,STREAM_SESSION_TYPE_VPN} stream_session_type_t;
typedef enum stream_session_connection_type {STEAM_SESSION_HTTP = 0, STREAM_SESSION_UDP, STREAM_SESSION_END_TYPE} stream_session_connection_type_t; typedef enum stream_session_connection_type {STEAM_SESSION_HTTP = 0, STREAM_SESSION_UDP, STREAM_SESSION_END_TYPE} stream_session_connection_type_t;
typedef struct dap_stream_session dap_stream_session_t;
typedef void (*dap_stream_session_callback_t)( dap_stream_session_t *,void*);
struct dap_stream_session { struct dap_stream_session {
bool create_empty; bool create_empty;
unsigned int id; unsigned int id;
...@@ -57,6 +60,8 @@ struct dap_stream_session { ...@@ -57,6 +60,8 @@ struct dap_stream_session {
struct in_addr tun_client_addr; struct in_addr tun_client_addr;
void * _inheritor; void * _inheritor;
dap_stream_session_callback_t callback_delete;
}; };
typedef struct dap_stream_session dap_stream_session_t; typedef struct dap_stream_session dap_stream_session_t;
...@@ -66,6 +71,6 @@ void dap_stream_session_deinit(); ...@@ -66,6 +71,6 @@ void dap_stream_session_deinit();
dap_stream_session_t * dap_stream_session_pure_new(); dap_stream_session_t * dap_stream_session_pure_new();
dap_stream_session_t * dap_stream_session_new(unsigned int media_id, bool open_preview); dap_stream_session_t * dap_stream_session_new(unsigned int media_id, bool open_preview);
dap_stream_session_t * dap_stream_session_id(unsigned int id); dap_stream_session_t * dap_stream_session_id(unsigned int id);
int dap_stream_session_open(dap_stream_session_t * ss); /*Lock for opening for single client , return 0 if ok*/ int dap_stream_session_open(dap_stream_session_t * a_session); /*Lock for opening for single client , return 0 if ok*/
int dap_stream_session_close(unsigned int id); int dap_stream_session_close(unsigned int id);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment