void rtp_scheduler_stop(RtpScheduler *sched) { if (sched->thread_running==1) { sched->thread_running=0; ortp_thread_join(sched->thread, NULL); } else ortp_warning("Scheduler thread is not running."); }
void ortp_network_simulator_destroy(OrtpNetworkSimulatorCtx *sim){ int drop_by_flush=sim->latency_q.q_mcount+sim->q.q_mcount; if (sim->total_count>0){ ortp_message("Network simulation: destroyed. Statistics are:" "%d/%d(%.1f%%, param=%.1f) packets dropped by loss, " "%d/%d(%.1f%%) packets dropped by congestion, " "%d/%d(%.1f%%) packets flushed." , sim->drop_by_loss, sim->total_count, sim->drop_by_loss*100.f/sim->total_count, sim->params.loss_rate , sim->drop_by_congestion, sim->total_count, sim->drop_by_congestion*100.f/sim->total_count , drop_by_flush, sim->total_count, drop_by_flush*100.f/sim->total_count ); } flushq(&sim->latency_q,0); flushq(&sim->q,0); flushq(&sim->send_q,0); if (sim->thread_started){ sim->thread_started=FALSE; ortp_thread_join(sim->thread, NULL); } ortp_mutex_destroy(&sim->mutex); ortp_free(sim); }
static void stop_pipe_reader(void){ pipe_reader_run=FALSE; linphonec_command_finished(); ortp_server_pipe_close(server_sock); ortp_thread_join(pipe_reader_th,NULL); }