⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 schedule_connections.c

📁 linuxUNIX下跑的一套服务端程序
💻 C
字号:
/* *  *  $Id: schedule_connections.c 147 2005-05-20 09:10:17Z federico $ *   *  This file is part of Fenice * *  Fenice -- Open Media Server * *  Copyright (C) 2004 by *  	 *	- Giampaolo Mancini	<giampaolo.mancini@polito.it> *	- Francesco Varano	<francesco.varano@polito.it> *	- Marco Penno		<marco.penno@polito.it> *	- Federico Ridolfo	<federico.ridolfo@polito.it> *	- Eugenio Menegatti 	<m.eu@libero.it> *	- Stefano Cau *	- Giuliano Emma *	- Stefano Oldrini *  *  Fenice is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  Fenice is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with Fenice; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA *   * */#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <fenice/socket.h>#include <fenice/eventloop.h>#include <fenice/utils.h>#include <fenice/rtsp.h>#include <fenice/fnc_log.h>#include <fenice/schedule.h>#include <fenice/bufferpool.h>int stop_schedule = 0;extern int num_conn;void schedule_connections(RTSP_buffer **rtsp_list, int *conn_count){	int res;	RTSP_buffer *p=*rtsp_list,*pp=NULL;	RTP_session *r=NULL, *t=NULL;		while (p!=NULL)	{		if ((res=rtsp_server(p))!=ERR_NOERROR)		{			        		if (res==ERR_CONNECTION_CLOSE || res==ERR_GENERIC)			{        			// The connection is closed				if (res==ERR_CONNECTION_CLOSE)					fnc_log(FNC_LOG_INFO,"RTSP connection closed by client.\n");				else					fnc_log(FNC_LOG_INFO,"RTSP connection closed by server.\n");				close(p->fd);            			--*conn_count;				num_conn--;            			if (p->session_list!=NULL) //if client truncated RTSP connection before sending TEARDOWN: error				{                			r=p->session_list->rtp_session;                			// Release all RTP sessions                			while (r!=NULL)					{												// if (r->current_media->pkt_buffer);        	        			// Release the scheduler entry        	        			t=r->next;        	        			schedule_remove(r->sched_id);						r=t;                			}        				// Close connection        							//close(p->session_list->fd);                			// Release the RTSP session                			free(p->session_list);					p->session_list=NULL;					fnc_log(FNC_LOG_WARN,"WARNING! RTSP connection truncated before ending operations.\n");                		}            			// Release the RTSP_buffer            			if (p==*rtsp_list)				{            				*rtsp_list=p->next;            				free(p);            				p=*rtsp_list;            			}            			else				{            				pp->next=p->next;	                		            				free(p);            				p=pp->next;            			}            			// Release the scheduler if necessary            			if (p==NULL && *conn_count<0)				{            				fnc_log(FNC_LOG_DEBUG,"Fermo il thread\n");    					stop_schedule=1;            			}            		}            		else			{				p=p->next;            		}		}		else		{			pp=p;			p=p->next;								}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -