开始之前先看一下libevent libev libuv,参考附录1.
本着我自己的个性,我喜欢简单的东西,越简单越好,越傻越好,所以在此我考虑libev,只是tmd,libev的官网打不开,真是无语了。
上例子:
buffer.h
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
#define default_buf_size 256
class Buffer
{
public:
Buffer()
{
buf = new char[default_buf_size];
buflen = default_buf_size;
}
~Buffer()
{
delete[] buf;
}
void set_write_buf_size(int needsize)
{
int buf_size = writeIdx + needsize;
if(buf_size <= buflen)
return;
if(needsize < readIdx)
{
memmove(buf, buf+readIdx, writeIdx-readIdx);
writeIdx -= readIdx;
readIdx = 0;
return;
}
while(buflen < buf_size)
buflen *= 2;
char *oldbuf = buf;
buf = new char[buflen];
memcpy(buf, oldbuf+readIdx, writeIdx-readIdx);
delete[] oldbuf;
writeIdx -= readIdx;
readIdx = 0;
}
int get_readable_size()
{
return writeIdx-readIdx;
}
int get_writeable_size()
{
return buflen-writeIdx;
}
void writebuf(void *data, int datalen)
{
set_write_buf_size(datalen);
memcpy(buf+writeIdx, data, datalen);
writeIdx += datalen;
}
&n