ringbuffer(tcp流编程,用于记录服务器日志)
/******************************************************************************* ** * ** Source File: ring_buffer.h * ** * ** * ** Date: 2012.12.25 * ** Company: jiutianhudong * ** Author: luyuan * ** * ** Email: slxy523@163.com * ** description: * ** . * ** * ** modification history: * ** * *******************************************************************************/#ifndef __RING_BUFFER_H__#define __RING_BUFFER_H__#include #include #include #define BUFFER_SIZE 8192#pragma pack(push)#pragma pack(2)typedef struct send_msg_strut{ int len; unsigned short type; char pdata[0];}SendMsgStruct; #pragma pack(pop)const size_t READ_POSITION = sizeof(SendMsgStruct);class RingBuffer{public:explicit RingBuffer();~RingBuffer();ssize_t RecvFd(int recvfd);void WriteRecord(void) ;protected:private:size_t MsgHeadLen(void);size_t CanWriteLen(void);size_t CanReadLen(void);bool isEmpty(void);bool isFull(void);void ReSize(void);void DeleteResourceMember(void);private://int buffer_fd_;size_t buffer_capacity_;char *ring_buffer_;size_t write_ptr_;size_t read_ptr_ ;};#endif/***********************************************