1
////////////////////////////////////////////////////////////////////////////
2
// NoteCase notes manager project <http://notecase.sf.net>
4
// This code is licensed under BSD license.See "license.txt" for more details.
6
// File: Implements layer for actual reading/writing data into the file
7
////////////////////////////////////////////////////////////////////////////
9
#include "IOLayerFile64.h"
12
IOLayerFile64::IOLayerFile64()
17
IOLayerFile64::~IOLayerFile64()
21
int IOLayerFile64::Process(char *szBuffer, int nLen)
25
if(MODE_WRITE == m_nMode)
27
nBytes = m_file.Write(szBuffer, nLen);
28
//TRACE("IOLayerFile64::Write (%d bytes)\n", nLen);
32
nBytes = m_file.Read(szBuffer, nLen);
34
//when we have read limit defined
35
if(nBytes > 0 && m_nEndOffset > 0){
36
INT64 nPos = m_file.GetPosition();
37
if(nPos > m_nEndOffset){
38
nBytes -= (int)(nPos-m_nEndOffset);
44
//TRACE("IOLayerFile64::Read (buffer size=%d, read bytes=%d)\n", nLen, nBytes);
47
m_nProcessedInBytes += nBytes;
48
m_nProcessedOutBytes += nBytes;
50
//store output size for this operation
51
m_nLastOutBytes = nBytes;
53
//call next layer attached?
54
if(NULL != m_pNextLayer && nBytes > 0)
55
return m_pNextLayer->Process(szBuffer, nBytes);
60
int IOLayerFile64::Finalize()
62
TRACE("IOLayerFile64::Finalize (pass forward)\n");
64
//call next layer attached?
65
if(NULL != m_pNextLayer)
66
return m_pNextLayer->Finalize();
1
////////////////////////////////////////////////////////////////////////////
2
// NoteCase notes manager project <http://notecase.sf.net>
4
// This code is licensed under BSD license.See "license.txt" for more details.
6
// File: Implements layer for actual reading/writing data into the file
7
////////////////////////////////////////////////////////////////////////////
9
#include "IOLayerFile64.h"
12
IOLayerFile64::IOLayerFile64()
17
IOLayerFile64::~IOLayerFile64()
21
int IOLayerFile64::Process(char *szBuffer, int nLen)
25
if(MODE_WRITE == m_nMode)
27
nBytes = m_file.Write(szBuffer, nLen);
28
//TRACE("IOLayerFile64::Write (%d bytes)\n", nLen);
32
nBytes = m_file.Read(szBuffer, nLen);
34
//when we have read limit defined
35
if(nBytes > 0 && m_nEndOffset > 0){
36
INT64 nPos = m_file.GetPosition();
37
if(nPos > m_nEndOffset){
38
nBytes -= (int)(nPos-m_nEndOffset);
44
//TRACE("IOLayerFile64::Read (buffer size=%d, read bytes=%d)\n", nLen, nBytes);
47
m_nProcessedInBytes += nBytes;
48
m_nProcessedOutBytes += nBytes;
50
//store output size for this operation
51
m_nLastOutBytes = nBytes;
53
//call next layer attached?
54
if(NULL != m_pNextLayer && nBytes > 0)
55
return m_pNextLayer->Process(szBuffer, nBytes);
60
int IOLayerFile64::Finalize()
62
TRACE("IOLayerFile64::Finalize (pass forward)\n");
64
//call next layer attached?
65
if(NULL != m_pNextLayer)
66
return m_pNextLayer->Finalize();