Mailinglist Archive: zypp-commit (149 mails)

< Previous Next >
[zypp-commit] r5441 - in /trunk/libzypp/zypp/base: InputStream.cc InputStream.h
  • From: mlandres@xxxxxxxxxxxxxxxx
  • Date: Wed, 25 Apr 2007 08:10:10 -0000
  • Message-id: <20070425081010.3FCAA47406@xxxxxxxxxxxxxxxx>
Author: mlandres
Date: Wed Apr 25 10:10:09 2007
New Revision: 5441

URL: http://svn.opensuse.org/viewcvs/zypp?rev=5441&view=rev
Log:
Add size to InputStream to ease progress computation

Modified:
    trunk/libzypp/zypp/base/InputStream.cc
    trunk/libzypp/zypp/base/InputStream.h

Modified: trunk/libzypp/zypp/base/InputStream.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/base/InputStream.cc?rev=5441&r1=5440&r2=5441&view=diff
==============================================================================
--- trunk/libzypp/zypp/base/InputStream.cc (original)
+++ trunk/libzypp/zypp/base/InputStream.cc Wed Apr 25 10:10:09 2007
@@ -15,6 +15,8 @@
 #include "zypp/base/InputStream.h"
 #include "zypp/base/GzStream.h"
 
+#include "zypp/PathInfo.h"
+
 using std::endl;
 
 ///////////////////////////////////////////////////////////////////
@@ -22,6 +24,22 @@
 { /////////////////////////////////////////////////////////////////
 
   ///////////////////////////////////////////////////////////////////
+  namespace
+  { /////////////////////////////////////////////////////////////////
+
+    inline std::streamoff _heplerInitSize( const Pathname & file_r )
+    {
+      PathInfo p( file_r );
+      if ( p.isFile() )
+       return p.size();
+      return -1;
+    }
+
+    /////////////////////////////////////////////////////////////////
+  } // namespace
+  ///////////////////////////////////////////////////////////////////
+
+  ///////////////////////////////////////////////////////////////////
   //
   //   METHOD NAME : InputStream::InputStream
   //   METHOD TYPE : Constructor
@@ -51,6 +69,7 @@
   : _path( file_r )
   , _stream( new ifgzstream( _path.asString().c_str() ) )
   , _name( _path.asString() )
+  , _size( _heplerInitSize( _path ) )
   {}
 
   ///////////////////////////////////////////////////////////////////
@@ -63,6 +82,7 @@
   : _path( file_r )
   , _stream( new ifgzstream( _path.asString().c_str() ) )
   , _name( name_r )
+  , _size( _heplerInitSize( _path ) )
   {}
 
   ///////////////////////////////////////////////////////////////////
@@ -74,6 +94,7 @@
   : _path( file_r )
   , _stream( new ifgzstream( _path.asString().c_str() ) )
   , _name( _path.asString() )
+  , _size( _heplerInitSize( _path ) )
   {}
 
   ///////////////////////////////////////////////////////////////////
@@ -86,6 +107,7 @@
   : _path( file_r )
   , _stream( new ifgzstream( _path.asString().c_str() ) )
   , _name( name_r )
+  , _size( _heplerInitSize( _path ) )
   {}
 
   ///////////////////////////////////////////////////////////////////
@@ -97,6 +119,7 @@
   : _path( file_r )
   , _stream( new ifgzstream( _path.asString().c_str() ) )
   , _name( _path.asString() )
+  , _size( _heplerInitSize( _path ) )
   {}
 
   ///////////////////////////////////////////////////////////////////
@@ -109,6 +132,7 @@
   : _path( file_r )
   , _stream( new ifgzstream( _path.asString().c_str() ) )
   , _name( name_r )
+  , _size( _heplerInitSize( _path ) )
   {}
 
   ///////////////////////////////////////////////////////////////////

Modified: trunk/libzypp/zypp/base/InputStream.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/base/InputStream.h?rev=5441&r1=5440&r2=5441&view=diff
==============================================================================
--- trunk/libzypp/zypp/base/InputStream.h (original)
+++ trunk/libzypp/zypp/base/InputStream.h Wed Apr 25 10:10:09 2007
@@ -15,6 +15,7 @@
 #include <iosfwd>
 
 #include "zypp/base/PtrTypes.h"
+#include "zypp/base/DefaultIntegral.h"
 #include "zypp/Pathname.h"
 
 ///////////////////////////////////////////////////////////////////
@@ -110,10 +111,27 @@
     const Pathname & path() const
     { return _path; }
 
+    /** Size of the input stream (might be estimated).
+     * If constructed from a file, the file size. Otherwise \c -1.
+     * See \ref setSize;
+    */
+    std::streamoff size() const
+    { return _size; }
+
+    /** Set the (estimated) size of the input stream.
+     * You may set it to whatever vaule is appropriate. E.g.
+     * <tt>*=10</tt> to compensate gzip comression. or the
+     * number of items, lines, ... The value is not used here,
+     * just provided.
+    */
+    void setSize( std::streamoff val_r )
+    { _size = val_r; }
+
   private:
     Pathname                 _path;
     shared_ptr<std::istream> _stream;
     std::string              _name;
+    DefaultIntegral<std::streamoff,-1> _size;
   };
   ///////////////////////////////////////////////////////////////////
 

--
To unsubscribe, e-mail: zypp-commit+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: zypp-commit+help@xxxxxxxxxxxx

< Previous Next >
This Thread
  • No further messages