void session_delete(t_session *session) { t_context *context; t_session *tmp; t_session *tmp2; session_end(session); context = get_context_ptr((void *)0); VERBOSE(printf("\033[%d;1m<%03d> - session delete\033[m\n", COLOR(session->id), session->id)); tmp = context->sessions; if (tmp == session) { context->sessions = tmp->next; session_free(tmp); return ; } tmp2 = tmp; tmp = tmp->next; for (tmp2 = tmp, tmp = tmp->next; tmp && tmp != session; tmp = tmp->next, tmp2 = tmp2->next) ; if (tmp == session) { tmp2->next = tmp->next; session_free(tmp); } return ; }
JNIEXPORT void JNICALL Java_com_harrcharr_pulse_PulseContext_setConnectionFailedCallback( JNIEnv *jenv, jobject jcontext, jobject runnable) { pa_context *c = get_context_ptr(jenv, jcontext); jni_pa_state_cbs_t *cbs = get_state_cbs_ptr(jenv, jcontext); if (cbs == NULL && runnable != NULL) { cbs = new_state_cbs(); set_state_cbs_ptr(jenv, jcontext, cbs); pa_context_set_state_callback(c, context_state_cb, cbs); } if (cbs != NULL && cbs->failed_cbo != NULL) { del_cb_globalref(jenv, cbs->failed_cbo); } if (runnable != NULL) { cbs->failed_cbo = get_cb_globalref(jenv, jcontext, runnable); } }
JNIEXPORT void JNICALL Java_com_harrcharr_pulse_PulseContext_JNISubscribe( JNIEnv *jenv, jobject jcontext) { pa_context *c = get_context_ptr(jenv, jcontext); pa_threaded_mainloop *m = get_mainloop_ptr(jenv, jcontext); LOGE("Subscribing, pulse state %d", pa_context_get_state(c)); LOGE("Subscribing, pulse state %d", pa_context_get_state(c)); LOGE("Subscribing, pulse state %d", pa_context_get_state(c)); pa_threaded_mainloop_lock(m); pa_operation *o; o = pa_context_subscribe(c, PA_SUBSCRIPTION_MASK_ALL, NULL, NULL); assert(o); pa_operation_unref(o); pa_threaded_mainloop_unlock(m); }
JNIEXPORT void JNICALL Java_com_harrcharr_pulse_PulseContext_JNISubscribeSource( JNIEnv *jenv, jobject jcontext, jobject runnable) { pa_context *c = get_context_ptr(jenv, jcontext); jni_pa_event_cbs_t *cbs = get_event_cbs_ptr(jenv, jcontext); if (cbs == NULL && runnable != NULL) { cbs = new_event_cbs(); set_event_cbs_ptr(jenv, jcontext, cbs); pa_context_set_subscribe_callback(c, context_subscription_cb, cbs); } if (cbs != NULL && cbs->source_cbo != NULL) { del_cb_globalref(jenv, cbs->source_cbo); cbs->source_cbo = NULL; } if (runnable != NULL) { cbs->source_cbo = get_cb_globalref(jenv, jcontext, runnable); } }
void session_end(t_session *session) { t_client *tmp; t_context *context; if (session->attack.step++ && session->attack.time) { session_write_time(session); session->attack.time = 0; } VERBOSE(printf("\033[%d;1m<%03d> - session end (%d)\033[m\n", COLOR(session->id), session->id, session->attack.step)); context = get_context_ptr((void *)0); for (tmp = context->clients; tmp; tmp = tmp->next) if (tmp->session == session) { http_send_404(tmp); del_the_client(tmp); } session->active = 0; return ; }