#include <buffer.h>
Public Member Functions | |
CBufferManager () | |
~CBufferManager () | |
int | Initialize (unsigned int nBuffer, unsigned int BufferSize) |
StrBuffer * | New () |
void | Free (StrBuffer *buffer) |
Private Attributes | |
CRioFreeList | m_FreeList |
StrBuffer * | m_Buffer |
char * | m_Data |
Definition at line 40 of file buffer.h.
CBufferManager::CBufferManager | ( | ) |
Definition at line 36 of file buffer.cpp.
CBufferManager::~CBufferManager | ( | ) |
void CBufferManager::Free | ( | StrBuffer * | buffer | ) |
Definition at line 105 of file buffer.cpp.
00106 { 00107 m_FreeList.Free( (RioQueueEle*)Buffer); 00108 }
int CBufferManager::Initialize | ( | unsigned int | nBuffer, | |
unsigned int | BufferSize | |||
) |
Definition at line 55 of file buffer.cpp.
00057 { 00058 // In case was initialized before 00059 if(m_Buffer != 0) 00060 { 00061 delete[] m_Buffer; 00062 m_Buffer = 0; 00063 } 00064 if(m_Data != 0) 00065 { 00066 delete[] m_Data; 00067 m_Data = 0; 00068 } 00069 00070 m_Buffer = new StrBuffer[nBuffer]; 00071 if(m_Buffer == 0) 00072 return ERROR_SS_MEMORY; 00073 00074 //m_Data = new char[nBuffer*BufferSize]; 00075 char *Data; 00076 try { 00077 Data = new char[nBuffer*BufferSize]; 00078 }catch( bad_alloc Data) 00079 { 00080 RioErr << "Could not allocate memory ( " 00081 << nBuffer*BufferSize << " bytes )!" <<endl; 00082 return ERROR_SS_MEMORY; 00083 }; 00084 00085 m_Data = Data; 00086 // ------------------------------------------------------------------------ 00087 00088 if(m_Data == 0) 00089 { 00090 delete[] m_Buffer; 00091 return ERROR_SS_MEMORY; 00092 } 00093 00094 for(int i= ((int)(nBuffer))-1; i>=0; i--) 00095 { 00096 m_Buffer[i].Data = &m_Data[i*BufferSize]; 00097 m_FreeList.Free((RioQueueEle*)&m_Buffer[i]); 00098 } 00099 00100 return (0); 00101 }
StrBuffer * CBufferManager::New | ( | ) |
Definition at line 113 of file buffer.cpp.
00114 { 00115 return (StrBuffer*) m_FreeList.GetNB(); 00116 }
StrBuffer* CBufferManager::m_Buffer [private] |
char* CBufferManager::m_Data [private] |
CRioFreeList CBufferManager::m_FreeList [private] |