[root] / trunk / net / net / src / TMessage.cxx Repository:
ViewVC logotype

Log of /trunk/net/net/src/TMessage.cxx

Parent Directory Parent Directory


Links to HEAD: (view) (download) (as text) (annotate)
Sticky Revision:

Revision 39696 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Jun 13 21:35:34 2011 UTC (3 years, 7 months ago) by pcanal
File length: 14005 byte(s)
Diff to previous 37985
From David Dagenhart:

Implement an option to allow ROOT to use the LZMA compression
algorithm to compress data instead of the ZLIB compression algorithm.
LZMA compression typically results in smaller files, but takes more
CPU time to compress data. To use the new feature, the external XZ
package must be installed when ROOT is configured and built:

Download 5.0.3 from here http://tukaani.org/xz/
and make sure to configure with fPIC:
   ./configure CFLAGS='-fPIC'

Then the client C++ code must call routines to explicitly request LZMA
compression.

ZLIB compression is still the default.

Setting the Compression Level and Algorithm:

There are three equivalent ways to set the compression level and 
algorithm. For example, to set the compression to the LZMA algorithm
and compression level 5.

1. TFile f(filename, option, title);
   f.SetCompressionSettings(ROOT::CompressionSettings(ROOT::kLZMA, 5));

OR

2. TFile f(filename, option, title, ROOT::CompressionSettings(ROOT::kLZMA, 5));

OR

3. TFile f(filename, option, title);
   f.SetCompressionAlgorithm(ROOT::kLZMA);
   f.SetCompressionLevel(5);

These methods work for TFile, TBranch, TMessage, TSocket, and TBufferXML. 
The compression algorithm and level settings only affect compression of
data after they have been set. TFile passes its settings to its branches 
only at the time the branches are created. This can be overidden by 
explicitly setting the level and algorithm for the branch. These classes 
also have the following methods to access the algorithm and level for 
compression.

   Int_t GetCompressionAlgorithm() const;
   Int_t GetCompressionLevel() const;
   Int_t GetCompressionSettings() const;

If the compression level is set to 0, then no compression will be
done. All of the currently supported algorithms allow the level to be
set to any value from 1 to 9. The higher the level, the larger the
compression factors will be (smaller compressed data size). The
tradeoff is that for higher levels more CPU time is used for
compression and possibly more memory. The ZLIB algorithm takes less
CPU time during compression than the LZMA algorithm, but the LZMA
algorithm usually delivers higher compression factors.

The header file core/zip/inc/Compression.h declares the function
"CompressionSettings" and the enumeration for the algorithms.
Currently the following selections can be made for the algorithm:
kZLIB (1), kLZMA (2), kOldCompressionAlgo (3), and kUseGlobalSetting
(0). The last option refers to an older interface used to control the
algorithm that is maintained for backward compatibility. The following
function is defined in core/zip/inc/Bits.h and it set the global
variable.

   R__SetZipMode(int algorithm)

If the algorithm is set to kUseGlobalSetting (0), the global variable
controls the algorithm for compression operations.  This is the
default and the default value for the global variable is kZLIB.

Note that the LZMA algorithm will only be available if the LZMA
libraries from the XZ package were available when the ROOT executable
being used was configured and built. If you are building ROOT and want
LZMA then you must do something similar to the following if XZ is not
already installed on your system.

  Download XZ version 5.0.3 from http://tukaani.org/xz/
  unwind the tarball
  cd xz-5.0.3
  ./configure CFLAGS='-fPIC'
  make

ROOT was tested with version 5.0.3 of XZ.  It might work with earlier
versions and will probably work with later versions of XZ.

Then either use "make install" to put the library and headers into
/usr/local/* so the scripts building ROOT can find them or use
arguments to the ROOT configure script to point to the proper
directories containing the XZ library and headers. These are the
library and the included header (lzma.h includes other headers in the
lzma subdirectory).

  src/liblzma/.libs/liblzma.a
  src/liblzma/api/lzma.h

WARNING: Data compressed with the LZMA algorithm cannot be read by
ROOT executables that were not built with LZMA support.

Revision 37985 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Feb 4 21:37:55 2011 UTC (3 years, 11 months ago) by pcanal
File length: 12906 byte(s)
Diff to previous 35752
From Constantin Loizides:
Explicitly check the validity of the zipped buffer before calling
R__unzip, this allow for better error recovery.
Introduce R__unzip_header which does the check and calculate the length values

Revision 35752 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Sep 26 22:07:36 2010 UTC (4 years, 3 months ago) by rdm
File length: 12724 byte(s)
Diff to previous 35314
From Matevz:
attached a patch that allows buffer size to be specified as an
optional argument to TMessage constructor. The minimal size will still be
enforced to 128 bytes in TBuffer constructor, while the default remains 1024.

Revision 35314 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Sep 16 03:22:09 2010 UTC (4 years, 4 months ago) by pcanal
File length: 12680 byte(s)
Diff to previous 27915
Migrate the functionality of TStreamerInfo::TagFile to a new interface TBuffer::TagStreamerInfo
so that TMessage can customize the behavior.  TMessage now relies on this new interface
instead of TBuffer::IncrementLevel which had the disadvantage of being called not only
during writing but also during reading (where there is no need to keep track of the StreamerInfo used).
[This change will also allow us to keep the calls to IncrementLevel/DecrementLevel only in the
case the buffer is a TBufferXML]
 
Fix the implementation of TSocket::RecvStreamerInfos to properly handle the case where there are
abstract classes (when GetStreamerInfo() can not be called on an abstract class until it has
been called for one of the concrete derived classes) and the case of STL containers.

Revision 27915 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Mar 23 16:49:31 2009 UTC (5 years, 10 months ago) by rdm
File length: 12678 byte(s)
Diff to previous 27865
From Gerri:
add some protections on fInfo being 0.

Revision 27865 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Mar 18 09:40:44 2009 UTC (5 years, 10 months ago) by rdm
File length: 12570 byte(s)
Diff to previous 26959
add protection against TProcessID pid being 0 in WriteProcessID(). Should fix
ALICE CAF issue.

Revision 26959 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Dec 16 15:53:31 2008 UTC (6 years, 1 month ago) by rdm
File length: 12497 byte(s)
Diff to previous 24432
TMessage must set SetBit(kCannotHandleMemberWiseStreaming) to be able to
automatically handle the correct streaming of TClonesArrays. This fixes
issue #43211.

Revision 24432 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jun 20 15:43:30 2008 UTC (6 years, 7 months ago) by rdm
File length: 12347 byte(s)
Diff to previous 24218
add local fEvolution flag in TMessage. It will be initialized by the value
of fgEvolution at the time of message creation. This to:
1) allow some message to have schema evolution while others not
2) to avoid that the changing of the global fgEvolution during the life-time
   of a message to cause problems

Revision 24218 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Jun 11 15:39:32 2008 UTC (6 years, 7 months ago) by brun
File length: 12077 byte(s)
Diff to previous 24164
-implement the new function TMessage::ForceWriteInfo. The function adds the TStreamerInfo
objects to the list of streamed TStreamerInfos.

Revision 24164 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jun 6 12:20:34 2008 UTC (6 years, 7 months ago) by brun
File length: 11817 byte(s)
Diff to previous 23961
Protect TF1::ExecuteEvent in case fHistogram is null. This case may happen
in a multi-threaded application when one thread repaints the histogram while the mouse is over a pad containing a TF1.

Revision 23961 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu May 22 07:44:09 2008 UTC (6 years, 8 months ago) by brun
File length: 11250 byte(s)
Diff to previous 23956
Make the automatic schema evolution optional.
Add a new static function
  TMessage::EnableSchemaEvolution(Bool_t enable=kFALSE)

Revision 23956 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed May 21 17:05:21 2008 UTC (6 years, 8 months ago) by brun
File length: 10382 byte(s)
Diff to previous 23942
In view of the coming TSocket schema evolution support, we extend TMessage with
a new TList* fInfos member that keeps track of all TStreamerInfo objects used when writing the object in the message.
Implement TMessage::WriteObject overloading TBufferFile::WriteObject.

Revision 23942 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue May 20 22:05:07 2008 UTC (6 years, 8 months ago) by rdm
File length: 9716 byte(s)
Diff to previous 23939
fix type-punned warning.

Revision 23939 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue May 20 17:37:16 2008 UTC (6 years, 8 months ago) by rdm
File length: 9697 byte(s)
Diff to previous 23091
compressed buffer should be of UChar_t type to be able to correctly
extract in and output buffer lenghts.

Revision 23091 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Apr 9 15:04:27 2008 UTC (6 years, 9 months ago) by rdm
File length: 9684 byte(s)
Copied from: trunk/net/src/TMessage.cxx revision 23090
Diff to previous 21676
moving the follwing directories to "net":

alien, auth, glite, globusauth, krb5auth, ldap, monalisa, net, netx,
rootd, rpdutils, srputils, xrootd

Revision 21676 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Jan 14 09:35:17 2008 UTC (7 years ago) by rdm
Original Path: trunk/net/src/TMessage.cxx
File length: 9684 byte(s)
Diff to previous 20882
fix type-punned warning.

Revision 20882 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Nov 19 11:31:26 2007 UTC (7 years, 2 months ago) by rdm
Original Path: trunk/net/src/TMessage.cxx
File length: 9696 byte(s)
Diff to previous 19826
Set property svn:eol-style LF on all source and Makefiles. This should avoid
problems with Win32 line endings ending up in the repository. All MS tools
support LF eols fine.

Revision 19826 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Sep 19 19:56:11 2007 UTC (7 years, 4 months ago) by rdm
Original Path: trunk/net/src/TMessage.cxx
File length: 9696 byte(s)
Diff to previous 19825
imported svn:keywords Id property

Revision 19825 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Sep 19 19:49:10 2007 UTC (7 years, 4 months ago) by rdm
Original Path: trunk/net/src/TMessage.cxx
File length: 9746 byte(s)
Diff to previous 17402
remove :$ from tag line

Revision 17402 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jan 19 16:48:00 2007 UTC (8 years ago) by brun
Original Path: trunk/net/src/TMessage.cxx
File length: 9756 byte(s)
Diff to previous 8816
CVs been changed into a pure abstract interface.
The concrete implementation is in the new class TBufferFile.
All classes previously deriving from TBuffer derive now from TBufferFile, ie

  TBuffer  <- TBufferFile  <- TMessage
                           <- TBufferXML
                           <- TBufferSQL
                           <- TBufferSQL2

Because there are several problems with C++ operators overloading,
The I/O operators are defined in TBuffer. These are inline functions
calling C++ virtual functions defined in TBuffer and overloaded
by TBufferFile and all other derived classes when necessary.

The previous implementation of TBuffer.h included <vector> and Bytes.h.
The two include statements have been moved to TBufferFile.h. As a result the
compilation of the ROOT system is now slightly faster and a big bonus
is that changes in TBufferFile or Bytes.h will affect only TBufferFile
and will not force the recompilation of the entire system.
This change has some side-effects. If you assumed that include <vector>
was done by TBuffer.h, you may have to specify this include directly
in your class. This was the case for a few ROOT classes.


 : ----------------------------------------------------------------------

Revision 8816 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri May 7 09:51:58 2004 UTC (10 years, 8 months ago) by brun
Original Path: trunk/net/src/TMessage.cxx
File length: 9730 byte(s)
Diff to previous 8795
Remove a compliation warning (comparing integer with unsigned integer)

Revision 8795 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed May 5 14:43:34 2004 UTC (10 years, 8 months ago) by rdm
Original Path: trunk/net/src/TMessage.cxx
File length: 9722 byte(s)
Diff to previous 4197
allow TMessages to be compressed before sending them. To have a specific
message compressed use TMessage::SetCompressionLevel(n) where 0 < n <= 9,
like for TFile::SetCompressionLevel(). To have all messages send over
a specific TSocket compressed, use TSocket::SetCompressionLevel().
When a compressed message is received it is automatically uncompressed.
See modified tutorials/hclient.C on how this feature is used.

Revision 4197 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Mar 19 10:57:25 2002 UTC (12 years, 10 months ago) by brun
Original Path: trunk/net/src/TMessage.cxx
File length: 4006 byte(s)
Diff to previous 1193
Do not overload TBuffer::WriteObject in TMessage.
This is not necessary since TBuffer knows its parent.

Revision 1193 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Dec 12 18:20:02 2000 UTC (14 years, 1 month ago) by rdm
Original Path: trunk/net/src/TMessage.cxx
File length: 4357 byte(s)
Diff to previous 516
override TBuffer::WriteObject() and make sure gFile=0 so no streamer info
object will be attached to the currently open file. Also provide definition
of copy and assignment operators, but no implementation, so CINT does not
generate an automatic copy ctor that would call the not implemented TBuffer
copy ctor.

Revision 516 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Aug 21 10:37:30 2000 UTC (14 years, 5 months ago) by rdm
Original Path: trunk/net/src/TMessage.cxx
File length: 3990 byte(s)
Diff to previous 3
added new method TMessage::Forward() which allows a just received message
to be send out (forwarded). It switches the TMessage from read mode to write
mode and resets some internal pointers. Change also required change in way
private TMessage ctor is called by friend TSocket::Recv() method.

Revision 3 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue May 16 17:00:58 2000 UTC (14 years, 8 months ago) by rdm
Original Path: trunk/net/src/TMessage.cxx
File length: 3926 byte(s)
Copied from: branches/rdm/net/src/TMessage.cxx revision 2
Diff to previous 2
This commit was generated by cvs2svn to compensate for changes in r2,
which included commits to RCS files with non-trunk default branches.

Revision 2 - (view) (download) (as text) (annotate) - [select for diffs]
Added Tue May 16 17:00:58 2000 UTC (14 years, 8 months ago) by rdm
Original Path: branches/rdm/net/src/TMessage.cxx
File length: 3926 byte(s)
Initial import of ROOT into CVS

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.

  Diffs between and
  Type of Diff should be a

Sort log by:

Subversion Admin
ViewVC Help
Powered by ViewVC 1.0.9