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::preprocess( SocketPackage& cPackageIn )
{
    cPackageIn.done();

    return true;
}
Esempio n. 3
0
void
TFSBasis::serialize( std::vector<Class*>& paArray
                     , size_t&              nSize
                     , SocketPackage&       cPackage
                     , bool                 bWriteToStorage )
{
    size_t      n;
    TFSBasis   *pAction;

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

        for ( n=0; n<nSize; n++ )
        {
            pAction = paArray[n];

            if ( !getStorage().isPresent(pAction) )
                pAction = NULL;

            serialize( pAction, cPackage, true );
        }
    }
    else
    {
        nSize   = cPackage.getInt();

        paArray.resize( std::max<size_t>(INI_SIZE,nSize) );

        for ( n=0; n<nSize; n++ )
        {
            serialize( pAction, cPackage, false );

            if ( pAction == NULL )
                paArray[n]  = NULL;
            else
                paArray[n]  = dynamic_cast<Class*>( pAction );
        }
    }
}
Esempio n. 4
0
void
ReadData::readEveryObject( SocketPackage& cPackage )
{
    ItemStorageWithKey<Class,std::string>&  cStorage    = Class::getStorage();
    int                                     n, max;
    std::string                             sID         = Class::ClassID();
    TFSBasis*                               pObject;

    max     = cPackage.getInt();

    for ( n=0; n<max; n++ )
        TFSBasis::serialize( pObject, cPackage, false );
}
Esempio n. 5
0
bool
ReadData::postprocess( SocketPackage& cPackageOut )
{
    TFSBasis   *pObject = NULL;

    cPackageOut.resetCounter();

    readEveryObject<StatusType>( cPackageOut );
    readEveryObject<User>      ( cPackageOut );

    TFSBasis::serialize( pObject, cPackageOut, false );

    return true;
}
Esempio n. 6
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;
}