Esempio n. 1
0
void
StatusType::serialize( std::vector<std::string>& saStatus
                     , size_t&                   nCount
                     , SocketPackage&            cPackage
                     , bool                      bWriteToStorage )
{
    size_t  n;

    if ( bWriteToStorage )
    {
        cPackage.add( int(nCount) );

        for ( n=0; n<nCount; n++ )
            cPackage.add( saStatus[n] );
    }
    else
    {
        nCount   = cPackage.getInt();

        saStatus.resize( std::max<size_t>(INI_SIZE,nCount) );

        for ( n=0; n<nCount; n++ )
        {
            cPackage.getString( saStatus[n] );
        }
    }
}
Esempio n. 2
0
bool
ReadData::process( SocketPackage& cPackageIn
                 , SocketPackage& cPackageOut )
{
    std::string     sBuffer,
                    sFilename;
    bool            bCanRead    = false;
    std::ifstream   cFile;

    cPackageIn.resetCounter();

    cPackageIn.getString( sBuffer );                // action name
    createFilename( cPackageIn, sFilename, false ); // read two strings

    cFile.open( sFilename.c_str(), std::ios::in|std::ios::binary );
    bCanRead    = cFile.is_open();
    if ( bCanRead )
    {
        struct _stat        nStatus;
        int                 nSize;
        std::vector<char>   caBuffer;

        ::_stat( sFilename.c_str(), &nStatus ); 
        
        nSize   = nStatus.st_size;
        caBuffer.resize( nSize );

        cFile.read( &caBuffer[0], nSize );
        cFile.close();

        cPackageOut.resetCounter();
        cPackageOut.add( &caBuffer[0], nSize );
        cPackageOut.done();
    }
    else
        cPackageOut.resetCounter();

    return bCanRead;
}