[root] / trunk / io / io / src / TMemFile.cxx Repository:
ViewVC logotype

Log of /trunk/io/io/src/TMemFile.cxx

Parent Directory Parent Directory


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

Revision 44749 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jun 26 20:10:54 2012 UTC (2 years, 6 months ago) by pcanal
File length: 20192 byte(s)
Diff to previous 42754
Since TMemFile::ResetAfterMerge keeps the live object around, it does not need to delete the map of caches

Revision 42754 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jan 20 20:13:07 2012 UTC (3 years ago) by pcanal
File length: 20239 byte(s)
Diff to previous 41898
From Peter van Gemmeren:

Allow multiple read caches per file by adding a fCacheReadMap member and owner arguments to GetCacheRead() and SetCacheRead()
to TFile.

Index: io/io/inc/TFileCacheRead.h
Index: io/io/src/TFileCacheRead.cxx
* Adding new argument for constructor to specify TTree owner
* whitespace indents

Index: tree/tree/inc/TBasket.h
Index: tree/tree/src/TBasket.cxx
* Add optional tree owner argument to LoadBasketBuffers() to retrieve cache.
* In LoadBasketBuffers() and ReadBuffers() check the cache first than call TFile::ReadBuffer only if needed.

Index: tree/tree/inc/TChain.h
Index: tree/tree/src/TChain.cxx
* Override SetCacheSize() function to update TTree owner on the current cache.
* whitespace indents

Index: tree/tree/src/TTree.cxx
* Get TTreeCache for current TTree, by specifying owner in GetCacheRead() calls
* Always delete owned cache

Index: tree/tree/src/TTreeCache.cxx
* Adding new argument for constructor for TFileCacheRead to specify TTree owner

Index: tree/treeplayer/src/TTreePlayer.cxx
* Get TTreeCache for current TTree, by specifying owner in GetCacheRead() calls

Index: tree/tree/src/TTreeCloner.cxx
* Call TBasket::LoadBasketBuffers() with current TTree as owner of cache

Index: proof/proofplayer/src/TEventIter.cxx
* Get TTreeCache for current TTree, by specifying owner in GetCacheRead() and SetCacheRead() calls

Revision 41898 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Nov 11 02:13:03 2011 UTC (3 years, 2 months ago) by pcanal
File length: 20192 byte(s)
Diff to previous 41896
Do not use 'this' in the base member initializer list

Revision 41896 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Nov 11 00:23:58 2011 UTC (3 years, 2 months ago) by pcanal
File length: 20198 byte(s)
Diff to previous 41408
Do not use 'this' in the base member initializer list

Revision 41408 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Oct 16 21:28:45 2011 UTC (3 years, 3 months ago) by pcanal
File length: 20204 byte(s)
Diff to previous 41389
Introduce the class TParallelMergingFile part of the net package.  This class connect ot a parallel merge server
and upload its content every time Write is called on the file object.   After the upload the object of classes
with a ResetAfterMerge function are reset.

A TParallelMergingFile is created whether a ?pmerge option is passed to TFile::Open as part of the file name.
For example:

    TFile::Open("mergedClient.root?pmerge","RECREATE"); // For now contact localhost:1095
    TFile::Open("mergedClient.root?pmerge=localhost:1095","RECREATE");
    TFile::Open("rootd://root.cern.ch/files/output.root?pmerger=pcanal:password@locahost:1095","NEW") 

tutorials/net/treeClient.C and fastMergeServer.C: update to follow the change in interfaces
Introduce the tutorials parallelMergerClient.C and the temporary tutorials parallelMergerServer.C
to demonstrate the parallel merging (with parallelMergerServer.C being the prototype of the upcoming
parallel merger server executable).

TKey:
Introduce a new constructor to copy a TKey from one file to another without unzipping nor unstreaming its content.

TFileMerger:
New method AddFile(TFile*) that appends the TFile to the list of file to be merged but does not delete it after
the merge operation.
Replace the method IncrementalMerge(Bool_t) with the method PartialMerge(Int_t) the argument defines the type
of merge as define by the bit values in EPartialMergeType:
   //   kRegular      : normal merge, overwritting the output file 
   //   kIncremental  : merge the input file with the content of the output file (if already exising) (default)
   //   kAll          : merge all type of objects (default)
   //   kResetable    : merge only the objects with a MergeAfterReset member function.
   //   kNonResetable : merge only the objects without a MergeAfterReset member function.
Remove RecursiveMerge from the public interface.

rootcint.cxx:

Distinguish objects of classes that can explicitly be reset after a Merge operation and those that should not.
Only the object of classes with a method ResetAfterMerge will be Reset by TMemFile::ResetAfterMerge (previous
both object of classes with a ResetAfterMerge and those with a simple Reset method where reset).

Revision 41389 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Oct 13 22:16:23 2011 UTC (3 years, 3 months ago) by pcanal
File length: 20200 byte(s)
Diff to previous 41321
Reduce to 2Mb (down from 32Mb) the default size of a TMemFile

Revision 41321 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Oct 11 09:01:54 2011 UTC (3 years, 3 months ago) by pcanal
File length: 20201 byte(s)
Diff to previous 41013
Remove size limitation to TMemFile which can now be composed on a series of memory block
and can handle arbitrary size.
To copy the content of the TMemFile use TMemFile::CopyTo towards either a memory area
or another TBuffer.

Revision 41013 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Sep 26 23:25:57 2011 UTC (3 years, 3 months ago) by pcanal
File length: 11161 byte(s)
Diff to previous 41006
Fix memory leak

Revision 41006 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Sep 26 17:25:59 2011 UTC (3 years, 3 months ago) by pcanal
File length: 11151 byte(s)
Diff to previous 39795
avoid double registration of the TMemFile after a reset

Revision 39795 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jun 17 13:48:51 2011 UTC (3 years, 7 months ago) by pcanal
File length: 11032 byte(s)
Diff to previous 39614
Fix cov 29598,29603 (unnecessary test), 29599,29600 (redudant assignment),
29601, 29602 (uninitalized data member)

Revision 39614 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Jun 8 23:42:55 2011 UTC (3 years, 7 months ago) by rdm
File length: 11042 byte(s)
Diff to previous 39611
fix some typos.

Revision 39611 - (view) (download) (as text) (annotate) - [select for diffs]
Added Wed Jun 8 19:35:17 2011 UTC (3 years, 7 months ago) by pcanal
File length: 11119 byte(s)
Introduce TMemFile and update TFileMerger to support incremental merges.

Add new tutorials ( net/treeClient.C + net/fastMergeServer.C )
demonstrating how a TMemFile can be used to do parallel merge
from many client. ( TMemFile still needs to be better integrated
with TMessage and TSocket).

The new TMemFile class support the TFile interface but only store
the information in memory.   This version is limited to 32MB.

   TMessage mess;
   ... 
   mess->ReadFastArray(scratch,length);
   transient = new TMemFile("hsimple.memroot",scratch,length);

will copy the content of 'scratch' into the in-memory buffer
created by/for the TMemFile.

   TMemFile *file = new TMemFile("hsimple.memroot","RECREATE");

Will create an empty in-memory of (currently fixed) size 32MB.

   file->ResetAfterMerge(0);

Will reset the objects in the TDirectory list of objects
so that they are ready for more data accumulations (i.e.
returns the data to 0 but keep the customizations).

Introduce the new function TFileMerger::IncrementalMerge will
will Merge the list of file _with_ the content of the output
file (if any).   This allows make several successive Merge
into the same TFile object.

Introduce non-static version of TFile::Cp allows the copy of
an existing TFile object.

Introduce new explicit interface for providing reseting 
capability after a merge.  If a class has a method with 
the name and signature:

   void ResetAfterMerge(TFileMergeInfo*);

it will be used by a TMemFile to reset its objects after
a merge operation has been done.

If this method does not exist, the TClass will use
a method with the name and signature:
  
   void Reset(Optiont_t *);

TClass now provides a quick access to these merging 
function via TClass::GetResetAfterMerge.   The wrapper function
is automatically created by rootcint and can be installed
via TClass::SetResetAfterMerge.   The wrapper function should have
the signature/type ROOT::ResetAfterMergeFunc_t:

   void (*)(void *thisobj, TFileMergeInfo*);

ResetAfterMerge functions were added to the following classes:
TDirectoryFile, TMemFile, TTree, TChain, TBranch, TBranhcElement, 
TBranchClones, TBranchObject and TBranchRef.

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