CBufferManager Class Reference

#include <buffer.h>

Public Member Functions

 CBufferManager ()
 ~CBufferManager ()
int Initialize (unsigned int nBuffer, unsigned int BufferSize)
StrBufferNew ()
void Free (StrBuffer *buffer)

Private Attributes

CRioFreeList m_FreeList
StrBufferm_Buffer
char * m_Data

Detailed Description

Definition at line 40 of file buffer.h.


Constructor & Destructor Documentation

CBufferManager::CBufferManager (  ) 

Definition at line 36 of file buffer.cpp.

00037 {
00038     m_Buffer = 0;
00039     m_Data   = NULL;
00040 }

CBufferManager::~CBufferManager (  ) 

Definition at line 42 of file buffer.cpp.

00043 {
00044     if(m_Buffer != 0)
00045     {
00046         delete[] m_Buffer;
00047     }
00048     if(m_Data != 0)
00049     {
00050         delete[] m_Data;
00051     }
00052 }


Member Function Documentation

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 }


Field Documentation

Definition at line 55 of file buffer.h.

char* CBufferManager::m_Data [private]

Definition at line 56 of file buffer.h.

Definition at line 54 of file buffer.h.


The documentation for this class was generated from the following files:
Generated on Wed Jul 4 16:03:31 2012 for RIO by  doxygen 1.6.3