Changed IF_IStream::close to return an RCODE so that it is compatible with IF_OStream::close. This allows the derivation of input/output stream objects with a single close method.

git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@351 0109f412-320b-0410-ab79-c3e0c5ffbbe6
This commit is contained in:
ahodgkinson
2006-04-18 18:38:27 +00:00
parent 4e4ebe3bc7
commit 20d0865556
6 changed files with 77 additions and 95 deletions
+8 -3
View File
@@ -89,8 +89,9 @@ public:
FLMUINT uiBytesToRead,
FLMUINT * puiBytesRead);
FINLINE void XFLMAPI close( void)
FINLINE RCODE XFLMAPI close( void)
{
return( NE_XFLM_OK);
}
private:
@@ -2836,13 +2837,15 @@ public:
FLMUINT uiBytesToRead,
FLMUINT * puiBytesRead);
FINLINE void XFLMAPI close( void)
FINLINE RCODE XFLMAPI close( void)
{
if( m_pIStream)
{
m_pIStream->Release();
m_pIStream = NULL;
}
return( NE_XFLM_OK);
}
RCODE open(
@@ -2987,13 +2990,15 @@ public:
FLMUINT uiBytesToRead,
FLMUINT * puiBytesRead);
FINLINE void XFLMAPI close( void)
FINLINE RCODE XFLMAPI close( void)
{
if( m_pEncoderStream)
{
m_pEncoderStream->Release();
m_pEncoderStream = NULL;
}
return( NE_XFLM_OK);
}
RCODE open(
+5 -2
View File
@@ -5763,13 +5763,15 @@ public:
return( NE_XFLM_OK);
}
void XFLMAPI close( void)
RCODE XFLMAPI close( void)
{
if( m_pIStream)
{
m_pIStream->Release();
m_pIStream = NULL;
}
return( NE_XFLM_OK);
}
RCODE XFLMAPI read(
@@ -5970,9 +5972,10 @@ public:
return( m_uiStreamSize - (m_uiBufferStartOffset + m_uiBufferOffset));
}
FINLINE void XFLMAPI close( void)
FINLINE RCODE XFLMAPI close( void)
{
reset();
return( NE_XFLM_OK);
}
RCODE XFLMAPI positionTo(
+4 -2
View File
@@ -121,7 +121,7 @@ public:
F_DbRebuild * pRebuild,
FLMBOOL bRecovDictionary);
void XFLMAPI close( void);
RCODE XFLMAPI close( void);
RCODE XFLMAPI read(
void * pvBuffer,
@@ -1860,7 +1860,7 @@ Exit:
/***************************************************************************
Desc:
*****************************************************************************/
void F_RebuildNodeIStream::close( void)
RCODE F_RebuildNodeIStream::close( void)
{
if( m_pucFirstElmBlk)
{
@@ -1883,6 +1883,8 @@ void F_RebuildNodeIStream::close( void)
f_memset( &m_firstElmState, 0, sizeof( F_SCAN_STATE));
f_memset( &m_tmpState, 0, sizeof( F_SCAN_STATE));
return( NE_XFLM_OK);
}
/***************************************************************************
+30 -65
View File
@@ -208,16 +208,19 @@ Exit:
/****************************************************************************
Desc: Closes the input stream and frees any resources
*****************************************************************************/
void F_FileIStream::close( void)
RCODE F_FileIStream::close( void)
{
RCODE rc = NE_XFLM_OK;
if( m_pFileHdl)
{
m_pFileHdl->Close();
rc = m_pFileHdl->Close();
m_pFileHdl->Release();
m_pFileHdl = NULL;
}
m_ui64FileOffset = 0;
return( rc);
}
/****************************************************************************
@@ -409,13 +412,15 @@ Exit:
/****************************************************************************
Desc:
*****************************************************************************/
void XFLMAPI F_BufferedIStream::close( void)
RCODE XFLMAPI F_BufferedIStream::close( void)
{
RCODE rc = NE_XFLM_OK;
if( m_pIStream)
{
if( m_pIStream->getRefCount() == 1)
{
m_pIStream->close();
rc = m_pIStream->close();
}
m_pIStream->Release();
@@ -430,6 +435,8 @@ void XFLMAPI F_BufferedIStream::close( void)
m_uiBufferSize = 0;
m_uiBufferOffset = 0;
m_uiBytesAvail = 0;
return( rc);
}
/****************************************************************************
@@ -740,7 +747,7 @@ Exit:
/******************************************************************************
Desc:
******************************************************************************/
void XFLMAPI F_MultiFileIStream::close( void)
RCODE XFLMAPI F_MultiFileIStream::close( void)
{
if( m_pIStream)
{
@@ -754,6 +761,8 @@ void XFLMAPI F_MultiFileIStream::close( void)
m_szBaseName[ 0] = 0;
m_bEndOfStream = FALSE;
m_bOpen = FALSE;
return( NE_XFLM_OK);
}
/****************************************************************************
@@ -1289,7 +1298,7 @@ Exit:
/*****************************************************************************
Desc:
******************************************************************************/
void XFLMAPI F_BufferIStream::close( void)
RCODE XFLMAPI F_BufferIStream::close( void)
{
if( m_bIsOpen)
{
@@ -1309,6 +1318,8 @@ void XFLMAPI F_BufferIStream::close( void)
m_bIsOpen = FALSE;
}
return( NE_XFLM_OK);
}
/*****************************************************************************
@@ -2207,7 +2218,7 @@ Exit:
/******************************************************************************
Desc:
******************************************************************************/
void XFLMAPI F_UncompressingIStream::close( void)
RCODE XFLMAPI F_UncompressingIStream::close( void)
{
if( m_pIStream)
{
@@ -2224,6 +2235,8 @@ void XFLMAPI F_UncompressingIStream::close( void)
{
f_free( &m_pucDecodeBuffer);
}
return( NE_XFLM_OK);
}
/****************************************************************************
@@ -3059,8 +3072,8 @@ Exit:
/********************************************************************
Desc:
*********************************************************************/
RCODE F_TCPStream::write(
FLMBYTE * pucBuffer,
RCODE XFLMAPI F_TCPStream::write(
const void * pucBuffer,
FLMUINT uiBytesToWrite,
FLMUINT * puiBytesWritten)
{
@@ -3141,12 +3154,12 @@ Exit:
}
/********************************************************************
Desc: Reads data from the connection
Desc:
*********************************************************************/
RCODE F_TCPStream::read(
FLMBYTE * pucBuffer,
FLMUINT uiBytesToWrite,
FLMUINT * puiBytesRead)
RCODE XFLMAPI F_TCPStream::read(
void * pucBuffer,
FLMUINT uiBytesToWrite,
FLMUINT * puiBytesRead)
{
RCODE rc = NE_XFLM_OK;
FLMINT iReadCnt = 0;
@@ -3310,63 +3323,13 @@ Exit:
/********************************************************************
Desc: Closes any open connections
*********************************************************************/
void F_TCPStream::close(
FLMBOOL bForce)
RCODE XFLMAPI F_TCPStream::close( void)
{
if( m_iSocket == INVALID_SOCKET)
{
goto Exit;
}
#ifdef FLM_NLM
F_UNREFERENCED_PARM( bForce);
#else
if( !bForce)
{
char ucTmpBuf[ 128];
struct timeval tv;
fd_set fds;
fd_set fds_read;
fd_set fds_err;
// Close our half of the connection
shutdown( m_iSocket, 1);
// Set up to wait for readable data on the socket
FD_ZERO( &fds);
#ifdef FLM_WIN
#pragma warning( push)
#pragma warning( disable : 4127)
#endif
FD_SET( m_iSocket, &fds);
#ifdef FLM_WIN
#pragma warning( pop)
#endif
tv.tv_sec = 10;
tv.tv_usec = 0;
fds_read = fds;
fds_err = fds;
// Wait for data or an error
while( select( m_iSocket + 1, &fds_read, NULL, &fds_err, &tv) > 0)
{
if( recv( m_iSocket, ucTmpBuf, sizeof( ucTmpBuf), 0) <= 0)
{
break;
}
fds_read = fds;
fds_err = fds;
}
shutdown( m_iSocket, 2);
}
#endif
#ifndef FLM_UNIX
closesocket( m_iSocket);
#else
@@ -3377,4 +3340,6 @@ Exit:
m_iSocket = INVALID_SOCKET;
m_bConnected = FALSE;
return( NE_XFLM_OK);
}
+29 -22
View File
@@ -2189,7 +2189,7 @@
return( m_uiBufferLen - m_uiOffset);
}
void XFLMAPI close( void);
RCODE XFLMAPI close( void);
FINLINE RCODE XFLMAPI positionTo(
FLMUINT64 ui64Position)
@@ -2279,7 +2279,7 @@
RCODE XFLMAPI open(
const char * pszPath);
void XFLMAPI close( void);
RCODE XFLMAPI close( void);
RCODE XFLMAPI positionTo(
FLMUINT64 ui64Position);
@@ -2328,7 +2328,7 @@
FLMUINT uiBytesToRead,
FLMUINT * puiBytesRead);
void XFLMAPI close( void);
RCODE XFLMAPI close( void);
FINLINE FLMUINT64 XFLMAPI totalSize( void)
{
@@ -2493,7 +2493,7 @@
FLMUINT uiBytesToRead,
FLMUINT * puiBytesRead);
void XFLMAPI close( void);
RCODE XFLMAPI close( void);
private:
@@ -2586,13 +2586,15 @@
FLMUINT uiBytesToRead,
FLMUINT * puiBytesRead);
FINLINE void XFLMAPI close( void)
FINLINE RCODE XFLMAPI close( void)
{
RCODE rc = NE_XFLM_OK;
if( m_pIStream)
{
if( m_pIStream->getRefCount() == 1)
{
m_pIStream->close();
rc = m_pIStream->close();
}
m_pIStream->Release();
@@ -2601,6 +2603,8 @@
m_uiAvailBytes = 0;
m_uiBufOffset = 0;
return( rc);
}
private:
@@ -2638,18 +2642,22 @@
FLMUINT uiBytesToRead,
FLMUINT * puiBytesRead);
FINLINE void XFLMAPI close( void)
FINLINE RCODE XFLMAPI close( void)
{
RCODE rc = NE_XFLM_OK;
if( m_pIStream)
{
if( m_pIStream->getRefCount() == 1)
{
m_pIStream->close();
rc = m_pIStream->close();
}
m_pIStream->Release();
m_pIStream = NULL;
}
return( rc);
}
private:
@@ -2765,7 +2773,7 @@
FLMUINT uiBytesToRead,
FLMUINT * puiBytesRead);
void XFLMAPI close( void);
RCODE XFLMAPI close( void);
private:
@@ -2803,6 +2811,16 @@
FLMUINT uiConnectTimeout = 3,
FLMUINT uiDataTimeout = 15);
RCODE XFLMAPI read(
void * pvBuffer,
FLMUINT uiBytesToRead,
FLMUINT * puiBytesRead);
RCODE XFLMAPI write(
const void * pvBuffer,
FLMUINT uiBytesToWrite,
FLMUINT * puiBytesWritten);
FINLINE RCODE socketPeekWrite(
FLMINT iTimeOut)
{
@@ -2839,11 +2857,6 @@
return( (const char *)m_pszPeerIp);
};
RCODE read(
FLMBYTE * pucBuffer,
FLMUINT uiCount,
FLMUINT * puiBytesRead);
RCODE readNoWait(
FLMBYTE * pucBuffer,
FLMUINT uiCount,
@@ -2854,16 +2867,10 @@
FLMUINT uiCount,
FLMUINT * puiBytesRead);
RCODE write(
FLMBYTE * pucBuffer,
FLMUINT uiCount,
FLMUINT * puiBytesWritten);
RCODE setTcpDelay(
FLMBOOL bOn);
void close(
FLMBOOL bForce = FALSE);
RCODE XFLMAPI close( void);
private:
+1 -1
View File
@@ -4265,7 +4265,7 @@
* @brief Close the input stream.
*
*/
virtual void XFLMAPI close( void) = 0;
virtual RCODE XFLMAPI close( void) = 0;
};
/****************************************************************************