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

📄 stream.cpp

📁 这是和p2p相关的一份源码
💻 CPP
字号:
// ------------------------------------------------// File : stream.cpp// Date: 4-apr-2002// Author: giles// Desc://		Basic stream handling functions. //// (c) 2002 peercast.org// ------------------------------------------------// This program 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.// This program 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.// ------------------------------------------------#include "stream.h"#include "common.h"#include "sys.h"// --------------------------------------------------void MemoryStream::convertFromBase64(){       	char *out = buf;	char *in = buf;		int rl=len;    while(rl >= 4) 	{		out += String::base64WordToChars(out,in);		in += 4;        rl -= 4;    }    *out = 0;	len = out-buf;}// -------------------------------------void FileStream::openReadOnly(const char *fn){	file = fopen(fn,"rb");    if (!file)    	throw StreamException("Unable to open file");}// -------------------------------------void FileStream::openWriteReplace(const char *fn){	file = fopen(fn,"wb");	if (!file)    	throw StreamException("Unable to open file");}// -------------------------------------void FileStream::close(){	fclose(file);}// -------------------------------------void FileStream::rewind(){	fseek(file,0,SEEK_SET);}// -------------------------------------bool FileStream::eof(){	return (feof(file)!=0);}// -------------------------------------int FileStream::read(void *ptr, int len){	if (feof(file))    	throw StreamException("End of file");    return (int)fread(ptr,1,len,file);}// -------------------------------------void FileStream::write(const void *ptr, int len){    fwrite(ptr,1,len,file);}// -------------------------------------void Stream::updateTotals(unsigned int in, unsigned int out){	totalBytesIn += in;	totalBytesOut += out;	unsigned int tdiff = sys->getTime()-lastUpdate;	if (tdiff >= 5)	{		bytesInPerSec = (totalBytesIn-lastBytesIn)/tdiff;		bytesOutPerSec = (totalBytesOut-lastBytesOut)/tdiff;		lastBytesIn = totalBytesIn;		lastBytesOut = totalBytesOut;		lastUpdate = sys->getTime();	}}// -------------------------------------int	Stream::readLine(char *in, int max){    int i=0;	max -= 2;	while(max--)    {                    	char c;             	read(&c,1);		if (c == '\n')			break;		if (c == '\r')			continue;        in[i++] = c;    }    in[i] = 0;	return i;}// -------------------------------------void Stream::write(const char *fmt,va_list ap){	char tmp[4096];	vsprintf(tmp,fmt,ap);    write(tmp,strlen(tmp));}// -------------------------------------void Stream::writeString(const char *fmt,...){	va_list ap;  	va_start(ap, fmt);	write(fmt,ap);   	va_end(ap);	}// -------------------------------------void Stream::writeLine(const char *fmt,...){	va_list ap;  	va_start(ap, fmt);	write(fmt,ap);	if (writeCRLF)	    write("\r\n",2);	else		write("\n",1);   	va_end(ap);	}// -------------------------------------int	Stream::readWord(char *in, int max){	int i=0;    while (!eof())    {        char c = readChar();        if ((c == ' ') || (c == '\t') || (c == '\r') || (c == '\n'))        {        	if (i)            	break;		// stop reading            else	        	continue;	// skip whitespace        }    	if (i >= (max-1))        	break;        in[i++] = c;    }	in[i]=0;    return i;}// --------------------------------------------------int Stream::readBase64(char *p, int max){       	char vals[4];	int cnt=0;	while (cnt < (max-4))	{		read(vals,4);		int rl = String::base64WordToChars(p,vals);		if (!rl)			break;		p+=rl;		cnt+=rl;	}	*p = 0;	return cnt;}

⌨️ 快捷键说明

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