Hi,

I'm working again on my serializer problem and I don't unterstand why my binary 
stream is as long as my ascii stream. binary should be smaller as ascii I 
suppose

My Testcode code is:

Code:

        // Writing object to stream
        std::stringstream myOstream;
        std::string extension = "osgb";
        bool compressed = true;
        osgDB::ReaderWriter* rw = 
osgDB::Registry::instance()->getReaderWriterForExtension(extension.c_str());
        if ( rw )
        {
                osgDB::ReaderWriter::WriteResult wr;

                if (extension == "osgb")
                {
                        if (compressed)
                                wr = rw->writeObject( *test, myOstream, new 
osgDB::Options("Compressor=zlib") );
                        else
                                wr = rw->writeObject( *test, myOstream );
                }

                if (extension == "osgt")
                {
                        if (compressed)
                                wr = rw->writeObject( *test, myOstream, new 
osgDB::Options("Ascii Compressor=zlib") );
                        else
                                wr = rw->writeObject( *test, myOstream, new 
osgDB::Options("Ascii") );
                }

                if (extension == "osgx")
                {
                        if (compressed)
                                wr = rw->writeObject( *test, myOstream, new 
osgDB::Options("XML Compressor=zlib") );
                        else
                                wr = rw->writeObject( *test, myOstream, new 
osgDB::Options("XML") );
                }


                if (!wr.success() )     OSG_NOTIFY( osg::WARN ) << "ERROR: Save 
failed: " << wr.message() << std::endl;
        }
        else
                OSG_NOTIFY( osg::WARN ) << "error getting readerWriter for 
osgt" << std::endl;

        // Get size.
        stringbuf *pbuf;
        pbuf = myOstream.rdbuf();
        OSG_NOTIFY( osg::WARN ) << "PBUF Bytes available: " << pbuf->in_avail() 
<< std::endl;
        OSG_NOTIFY( osg::ALWAYS ) << "STRING Bytes available: " << 
myOstream.str().length() << std::endl;
        OSG_NOTIFY( osg::ALWAYS ) << "STRING content: " << myOstream.str() << 
std::endl;

        //Reading Stream to node
        if ( rw )
        {
                osgDB::ReaderWriter::ReadResult rr = rw->readObject( myOstream 
);
                osg::ref_ptr<osgVisual::dataIO_transportContainer> test2 = 
dynamic_cast<osgVisual::dataIO_transportContainer*>(rr.takeObject());
                if (test2)
                {
                        OSG_NOTIFY( osg::WARN ) << "TEST::FrameID is: " << 
test->getFrameID() << std::endl;
                }
                else
                        OSG_NOTIFY( osg::WARN ) << "Error converting stream to 
Node" << std::endl;
        }





My Question is: What is the real stream size: 
The value pbuf->in_avail() or the value myOstream.str().length()?
Because it always differs up to 60 bytes.

My stream sizes (  myOstream.str().length() ) of my object ot transfer are:

xml: 739 bytes
ASCII: 389 bytes 
binaryy uncompressed: 353 bytes
binary compressed: 176 bytes

Can anyone give me a hint what the problem in my serializer / stream usage, 
that causes my binary stream to be as large as my ascii stream?

Thank you very much!

Cheers,
Torben

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=26454#26454





_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to