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

📄 queue.cpp

📁 通过用SOCKET发包来实现PING命令
💻 CPP
字号:
/*********************************************************************************Copyright:	cchbds Tech .Co*Filename:	queue.c*Author        Version           Date:*Description:	 insert datapack  into loop queue and move away*Function List	1	qempty	2	qoverflow	3 	qinsert	4	qmove*History:*********************************************************************************/#include "queue.h"/*********************************************************************************Function:	qempty*Description:	the queue  be empty or not*Calls:		*Called By:	get_send_shm*Input: indata :  front rear *Output: 	*Return: 	1 empty ,0 not empty*Others:*********************************************************************************/int qempty(long front,long rear){	return front==rear;}int qfull(long front,long rear,long size){		return ((rear+1)%size == front);}/*********************************************************************************Function:	qoverflow*Description:	the queue will be overflow or not*Calls:		*Called By:	shmproducer*Input: indata : datalen front rear size insertlen*Output: 	*Return: 	1 overflow ,0 not overfolw*Others:*********************************************************************************/int qoverflow(long front,long rear,long size,int insertlen){	if((rear<front))	{		//队列里的数据是从0到尾和头到size的两段		if(rear+insertlen>front)		{			return 1;		}	}	if((rear>front))	{		//队列里的数据是从尾到头的一段		if(rear+insertlen>front+size)		{			return 1;		}	}	return 0;}/*********************************************************************************Function:	qinsert*Description:	write a datapack to queue tail*Calls:		*Called By:	shmproducer*Input: indata :queue data datalen front rear size*Output: 	*Return: *Others:*********************************************************************************/void qinsert(char *queue,char * data,int datalen,long front,long rear,long size){	if((rear<=front))	{		//队列里的数据是从0到尾和头到size的两段		memcpy(queue+rear,data,datalen);	}	else	{		//队列里的数据是从尾到头的一段		if(size-rear>=datalen)		{			memcpy(queue+rear,data,datalen);		}		else		{			int len;			len=size-rear;			memcpy(queue+rear,data,len);			memcpy(queue,data+len,datalen-len);		}	}}//从队头取/*********************************************************************************Function:	qmove*Description:	get  a datapack from  queue head*Calls:		*Called By:	get_send_shm*Input: indata :queue data datalen front rear size*Output: 	data*Return: *Others:*********************************************************************************/int  qmove(char *queue,char * data,int datalen,long front,long rear,long size){	if(rear==front)	{		printf("取数据包时队列为空 %d ==%d \n",rear,front);			}	if((rear>front))	{		//队列里的数据是从0到尾和头到size的两段		memcpy(data,queue+front,datalen);	}	if((rear<front))	{		//队列里的数据是从尾到头的一段		if(size-front>=datalen)		{			memcpy(data,queue+front,datalen);		}		else		{			int len;			len=size-front;			memcpy(data,queue+front,len);			memcpy(data+len,queue,datalen-len);		}	}	return 1;}

⌨️ 快捷键说明

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