|
|
//====== Copyright � 1996-2006, Valve Corporation, All rights reserved. =======//
//
// Purpose: Command sink interface implementation.
//
// $NoKeywords: $
//
//=============================================================================//
#include "cmdsink.h"
namespace CmdSink {
// ------ implementation of CResponseFiles --------------
CResponseFiles::CResponseFiles( char const *szFileResult, char const *szFileListing ) : m_fResult(NULL), m_fListing(NULL), m_lenResult(0), m_dataResult(NULL), m_dataListing(NULL) { sprintf( m_szFileResult, szFileResult ); sprintf( m_szFileListing, szFileListing ); }
CResponseFiles::~CResponseFiles( void ) { if ( m_fResult ) fclose( m_fResult );
if ( m_fListing ) fclose( m_fListing ); }
bool CResponseFiles::Succeeded( void ) { OpenResultFile(); return ( m_fResult != NULL ); }
size_t CResponseFiles::GetResultBufferLen( void ) { ReadResultFile(); return m_lenResult; }
const void * CResponseFiles::GetResultBuffer( void ) { ReadResultFile(); return m_dataResult; }
const char * CResponseFiles::GetListing( void ) { ReadListingFile(); return ( ( m_dataListing && *m_dataListing ) ? m_dataListing : NULL ); }
void CResponseFiles::OpenResultFile( void ) { if ( !m_fResult ) { m_fResult = fopen( m_szFileResult, "rb" ); } }
void CResponseFiles::ReadResultFile( void ) { if ( !m_dataResult ) { OpenResultFile();
if ( m_fResult ) { fseek( m_fResult, 0, SEEK_END ); m_lenResult = (size_t) ftell( m_fResult );
if ( m_lenResult != size_t(-1) ) { m_bufResult.EnsureCapacity( m_lenResult ); fseek( m_fResult, 0, SEEK_SET ); fread( m_bufResult.Base(), 1, m_lenResult, m_fResult ); m_dataResult = m_bufResult.Base(); } } } }
void CResponseFiles::ReadListingFile( void ) { if ( !m_dataListing ) { if ( !m_fListing ) m_fListing = fopen( m_szFileListing, "rb" );
if ( m_fListing ) { fseek( m_fListing, 0, SEEK_END ); size_t len = (size_t) ftell( m_fListing );
if ( len != size_t(-1) ) { m_bufListing.EnsureCapacity( len ); fseek( m_fListing, 0, SEEK_SET ); fread( m_bufListing.Base(), 1, len, m_fListing ); m_dataListing = (const char *) m_bufListing.Base(); } } } }
}; // namespace CmdSink
|