CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
StreamSerializer.h
Go to the documentation of this file.
1 #ifndef IOPool_Streamer_StreamSerializer_h
2 #define IOPool_Streamer_StreamSerializer_h
3 
11 #include "TBufferFile.h"
12 
13 #include <cstdint>
14 #include <vector>
15 
19 
20 const int init_size = 1024*1024;
21 
22 // Data structure to be shared by all output modules for event serialization
24 {
25  typedef std::vector<char> SBuffer;
26 
31  rootbuf_(TBuffer::kWrite,init_size),
32  ptr_((unsigned char*)rootbuf_.Buffer()),
33  header_buf_(),
34  bufs_(),
36  { }
37 
38  // This object caches the results of the last INIT or event
39  // serialization operation. You get access to the data using the
40  // following member functions.
41 
42  unsigned char* bufferPointer() const { return ptr_; }
43  unsigned int currentSpaceUsed() const { return curr_space_used_; }
44  unsigned int currentEventSize() const { return curr_event_size_; }
45  uint32_t adler32_chksum() const { return adler32_chksum_; }
46 
47  std::vector<unsigned char> comp_buf_; // space for compressed data
48  unsigned int curr_event_size_;
49  unsigned int curr_space_used_; // less than curr_event_size_ if compressed
50  TBufferFile rootbuf_;
51  unsigned char* ptr_; // set to the place where the last event stored
52  SBuffer header_buf_; // place for INIT message creation
53  SBuffer bufs_; // place for EVENT message creation
54  uint32_t adler32_chksum_; // adler32 check sum for the (compressed) data
55 };
56 
57 class EventMsgBuilder;
58 class InitMsgBuilder;
59 namespace edm
60 {
61 
62  class EventPrincipal;
63  class ModuleCallingContext;
64  class ThinnedAssociationsHelper;
65 
67  {
68 
69  public:
70 
71  StreamSerializer(SelectedProducts const* selections);
72 
73  int serializeRegistry(SerializeDataBuffer &data_buffer,
74  const BranchIDLists &branchIDLists,
75  ThinnedAssociationsHelper const& thinnedAssociationsHelper);
76 
77  int serializeEvent(EventPrincipal const& eventPrincipal,
78  ParameterSetID const& selectorConfig,
80  SerializeDataBuffer &data_buffer,
81  ModuleCallingContext const* mcc);
82 
88  static unsigned int compressBuffer(unsigned char *inputBuffer,
89  unsigned int inputSize,
90  std::vector<unsigned char> &outputBuffer,
91  int compressionLevel);
92 
93  private:
94 
96  TClass* tc_;
97  };
98 
99 }
100 
101 #endif
std::vector< BranchIDList > BranchIDLists
Definition: BranchIDList.h:19
std::vector< char > SBuffer
int serializeEvent(EventPrincipal const &eventPrincipal, ParameterSetID const &selectorConfig, bool use_compression, int compression_level, SerializeDataBuffer &data_buffer, ModuleCallingContext const *mcc)
static unsigned int compressBuffer(unsigned char *inputBuffer, unsigned int inputSize, std::vector< unsigned char > &outputBuffer, int compressionLevel)
unsigned int currentSpaceUsed() const
std::vector< unsigned char > comp_buf_
unsigned int curr_event_size_
int serializeRegistry(SerializeDataBuffer &data_buffer, const BranchIDLists &branchIDLists, ThinnedAssociationsHelper const &thinnedAssociationsHelper)
unsigned int curr_space_used_
unsigned char * bufferPointer() const
SelectedProducts const * selections_
uint32_t adler32_chksum() const
std::vector< BranchDescription const * > SelectedProducts
const int init_size
unsigned int currentEventSize() const
unsigned char * ptr_
StreamSerializer(SelectedProducts const *selections)