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 
20 
21 const int init_size = 1024*1024;
22 
23 // Data structure to be shared by all output modules for event serialization
25 {
26  typedef std::vector<char> SBuffer;
27 
32  rootbuf_(TBuffer::kWrite,init_size),
33  ptr_((unsigned char*)rootbuf_.Buffer()),
34  header_buf_(),
35  bufs_(),
37  { }
38 
39  // This object caches the results of the last INIT or event
40  // serialization operation. You get access to the data using the
41  // following member functions.
42 
43  unsigned char const* bufferPointer() const { return get_underlying_safe(ptr_); }
44  unsigned char*& bufferPointer() { return get_underlying_safe(ptr_); }
45  unsigned int currentSpaceUsed() const { return curr_space_used_; }
46  unsigned int currentEventSize() const { return curr_event_size_; }
47  uint32_t adler32_chksum() const { return adler32_chksum_; }
48 
49  std::vector<unsigned char> comp_buf_; // space for compressed data
50  unsigned int curr_event_size_;
51  unsigned int curr_space_used_; // less than curr_event_size_ if compressed
52  TBufferFile rootbuf_;
53  edm::propagate_const<unsigned char*> ptr_; // set to the place where the last event stored
54  SBuffer header_buf_; // place for INIT message creation
55  SBuffer bufs_; // place for EVENT message creation
56  uint32_t adler32_chksum_; // adler32 check sum for the (compressed) data
57 };
58 
59 class EventMsgBuilder;
60 class InitMsgBuilder;
61 namespace edm
62 {
63 
64  class EventPrincipal;
65  class ModuleCallingContext;
66  class ThinnedAssociationsHelper;
67 
69  {
70 
71  public:
72 
73  StreamSerializer(SelectedProducts const* selections);
74 
75  int serializeRegistry(SerializeDataBuffer &data_buffer,
76  const BranchIDLists &branchIDLists,
77  ThinnedAssociationsHelper const& thinnedAssociationsHelper);
78 
79  int serializeEvent(EventPrincipal const& eventPrincipal,
80  ParameterSetID const& selectorConfig,
82  SerializeDataBuffer &data_buffer,
83  ModuleCallingContext const* mcc);
84 
90  static unsigned int compressBuffer(unsigned char *inputBuffer,
91  unsigned int inputSize,
92  std::vector<unsigned char> &outputBuffer,
93  int compressionLevel);
94 
95  private:
96 
99  };
100 
101 }
102 
103 #endif
std::vector< BranchIDList > BranchIDLists
Definition: BranchIDList.h:19
edm::propagate_const< TClass * > tc_
std::vector< char > SBuffer
edm::propagate_const< unsigned char * > ptr_
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_
unsigned char const * bufferPointer() const
int serializeRegistry(SerializeDataBuffer &data_buffer, const BranchIDLists &branchIDLists, ThinnedAssociationsHelper const &thinnedAssociationsHelper)
std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
unsigned int curr_space_used_
unsigned char *& bufferPointer()
SelectedProducts const * selections_
uint32_t adler32_chksum() const
std::vector< BranchDescription const * > SelectedProducts
const int init_size
unsigned int currentEventSize() const
StreamSerializer(SelectedProducts const *selections)