Stupid winsock needs special way to close sockets.
[dftpd.git] / DataBufferFileSymbian.cpp
blob72651ebb7877e10d27408885632be1f6d17fe728
1 #include "DataBufferFileSymbian.hpp"
3 DataBufferFileSymbian::DataBufferFileSymbian( RFile* f, int secondaryBufferSize )
4 : m_file( f )
5 , m_secBuf( new char[secondaryBufferSize] )
6 , m_secBufSize( 0 )
10 DataBufferFileSymbian::~DataBufferFileSymbian()
12 delete[] m_secBuf;
14 m_file->Close();
15 delete m_file;
18 int DataBufferFileSymbian::Read( void* ptr, int size )
20 int bufSize = m_secBufSize;
21 m_secBufSize = 0;
23 memcpy( ptr, m_secBuf, bufSize );
25 if( size - bufSize == 0 )
27 return size;
30 TPtr8 buf( reinterpret_cast<TUint8*>( (char*)ptr + bufSize ), 0, size - bufSize );
32 m_file->Read( buf, size - bufSize );
34 return buf.Length() + bufSize;
37 int DataBufferFileSymbian::Write( void* ptr, int size )
39 TPtr8 buf( reinterpret_cast<TUint8*>( ptr ), size, size );
41 m_file->Write( buf, size );
43 return size;
46 void DataBufferFileSymbian::Store( void* ptr, int size )
48 memcpy( m_secBuf, ptr, size );
49 m_secBufSize = size;