CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Member Functions
Storage Class Referenceabstract

#include <Storage.h>

Inheritance diagram for Storage:
IOInput IOOutput DavixFile DCacheFile File LocalCacheFile LStoreFile StorageAccountProxy XrdFile RemoteFile

Public Types

enum  Relative { SET, CURRENT, END }
 

Public Member Functions

virtual void close (void)
 
virtual bool eof (void) const
 
virtual void flush (void)
 
virtual IOOffset position (void) const
 
virtual IOOffset position (IOOffset offset, Relative whence=SET)=0
 
virtual bool prefetch (const IOPosBuffer *what, IOSize n)
 
virtual IOSize read (void *into, IOSize n, IOOffset pos)
 
IOSize read (IOBuffer into, IOOffset pos)
 
virtual IOSize readv (IOPosBuffer *into, IOSize buffers)
 
virtual void resize (IOOffset size)=0
 
virtual void rewind (void)
 
virtual IOOffset size (void) const
 
 Storage (void)
 
virtual IOSize write (const void *from, IOSize n, IOOffset pos)
 
IOSize write (IOBuffer from, IOOffset pos)
 
virtual IOSize writev (const IOPosBuffer *from, IOSize buffers)
 
 ~Storage (void) override
 
- Public Member Functions inherited from IOInput
int read (void)
 
IOSize read (IOBuffer into)
 
virtual IOSize read (void *into, IOSize n)=0
 
virtual IOSize readv (IOBuffer *into, IOSize buffers)
 
IOSize xread (IOBuffer into)
 
IOSize xread (void *into, IOSize n)
 
IOSize xreadv (IOBuffer *into, IOSize buffers)
 
virtual ~IOInput (void)
 Destruct the stream. A no-op. More...
 
- Public Member Functions inherited from IOOutput
IOSize write (unsigned char byte)
 
IOSize write (IOBuffer from)
 
virtual IOSize write (const void *from, IOSize n)=0
 
virtual IOSize writev (const IOBuffer *from, IOSize buffers)
 
IOSize xwrite (const void *from, IOSize n)
 
IOSize xwrite (IOBuffer from)
 
IOSize xwritev (const IOBuffer *from, IOSize buffers)
 
virtual ~IOOutput (void)
 Destruct the stream. A no-op. More...
 

Private Member Functions

Storageoperator= (const Storage &)=delete
 
 Storage (const Storage &)=delete
 

Detailed Description

Definition at line 20 of file Storage.h.

Member Enumeration Documentation

Enumerator
SET 
CURRENT 
END 

Definition at line 22 of file Storage.h.

Constructor & Destructor Documentation

Storage::Storage ( void  )

Definition at line 5 of file Storage.cc.

5 {}
Storage::~Storage ( void  )
override

Definition at line 7 of file Storage.cc.

7 {}
Storage::Storage ( const Storage )
privatedelete

Member Function Documentation

void Storage::close ( void  )
virtual
bool Storage::eof ( void  ) const
virtual

Definition at line 98 of file Storage.cc.

References position(), and size().

98 { return position() == size(); }
virtual IOOffset position(void) const
Definition: Storage.cc:72
virtual IOOffset size(void) const
Definition: Storage.cc:77
void Storage::flush ( void  )
virtual

Reimplemented in File, StorageAccountProxy, and LocalCacheFile.

Definition at line 93 of file Storage.cc.

93 {}
Storage& Storage::operator= ( const Storage )
privatedelete
IOOffset Storage::position ( void  ) const
virtual

Definition at line 72 of file Storage.cc.

References CURRENT, and position().

Referenced by eof(), position(), read(), lhef::StorageInputStream::readBytes(), readv(), rewind(), size(), lhef::StorageInputStream::StorageInputStream(), and write().

72  {
73  Storage *self = const_cast<Storage *>(this);
74  return self->position(0, CURRENT);
75 }
virtual IOOffset position(void) const
Definition: Storage.cc:72
virtual IOOffset Storage::position ( IOOffset  offset,
Relative  whence = SET 
)
pure virtual
bool Storage::prefetch ( const IOPosBuffer what,
IOSize  n 
)
virtual

Reimplemented in XrdFile, File, StorageAccountProxy, and LocalCacheFile.

Definition at line 90 of file Storage.cc.

90 { return false; }
IOSize Storage::read ( void *  into,
IOSize  n,
IOOffset  pos 
)
virtual

Reimplemented in XrdFile, File, StorageAccountProxy, and LocalCacheFile.

Definition at line 12 of file Storage.cc.

References dqmiodumpmetadata::n, position(), and IOInput::read().

Referenced by PixelSLinkDataInputSource::PixelSLinkDataInputSource(), lhef::StorageInputStream::readBytes(), PixelSLinkDataInputSource::setRunAndEventInfo(), and lhef::StorageInputStream::StorageInputStream().

12  {
13  // FIXME: this is not thread safe! split into separate interface
14  // that a particular storage can choose to support or not? make
15  // sure that throw semantics are correct here!
16  // FIXME: use saveposition object in case exceptions are thrown?
17  IOOffset here = position();
18  position(pos);
19  n = read(into, n);
20  position(here);
21  return n;
22 }
virtual IOOffset position(void) const
Definition: Storage.cc:72
int read(void)
Definition: IOInput.cc:52
int64_t IOOffset
Definition: IOTypes.h:19
IOSize Storage::read ( IOBuffer  into,
IOOffset  pos 
)

Definition at line 10 of file Storage.cc.

References IOBuffer::data(), IOInput::read(), and IOBuffer::size().

10 { return read(into.data(), into.size(), pos); }
void * data(void) const
Definition: IOBuffer.h:31
int read(void)
Definition: IOInput.cc:52
IOSize size(void) const
Definition: IOBuffer.h:34
IOSize Storage::readv ( IOPosBuffer into,
IOSize  buffers 
)
virtual

Reimplemented in XrdFile, StorageAccountProxy, DavixFile, DCacheFile, and LocalCacheFile.

Definition at line 24 of file Storage.cc.

References data, mps_fire::i, dqmiodumpmetadata::n, hltrates_dqm_sourceclient-live_cfg::offset, position(), IOInput::read(), size(), and dqmMemoryStats::total.

24  {
25  IOOffset here = position();
26  IOSize total = 0;
27  for (IOSize i = 0; i < n; ++i) {
28  try {
29  position(into[i].offset());
30  total += read(into[i].data(), into[i].size());
31  } catch (cms::Exception &) {
32  if (!total)
33  throw;
34  break;
35  }
36  }
37  position(here);
38  return total;
39 }
virtual IOOffset position(void) const
Definition: Storage.cc:72
int read(void)
Definition: IOInput.cc:52
virtual IOOffset size(void) const
Definition: Storage.cc:77
int64_t IOOffset
Definition: IOTypes.h:19
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
size_t IOSize
Definition: IOTypes.h:14
virtual void Storage::resize ( IOOffset  size)
pure virtual
void Storage::rewind ( void  )
virtual

Definition at line 87 of file Storage.cc.

References position().

Referenced by MatacqProducer::loadOrbitOffset().

87 { position(0); }
virtual IOOffset position(void) const
Definition: Storage.cc:72
IOOffset Storage::size ( void  ) const
virtual

Reimplemented in File.

Definition at line 77 of file Storage.cc.

References END, and position().

Referenced by ntupleDataFormat._Collection::__iter__(), ntupleDataFormat._Collection::__len__(), eof(), StorageAccountProxy::prefetch(), LocalCacheFile::readv(), readv(), XrdFile::readv(), and writev().

77  {
78  // FIXME: use saveposition object in case exceptions are thrown?
79  Storage *self = const_cast<Storage *>(this);
80  IOOffset here = position();
81  self->position(0, END);
83  self->position(here); // FIXME: VERIFY()?
84  return size;
85 }
virtual IOOffset position(void) const
Definition: Storage.cc:72
virtual IOOffset size(void) const
Definition: Storage.cc:77
int64_t IOOffset
Definition: IOTypes.h:19
IOSize Storage::write ( const void *  from,
IOSize  n,
IOOffset  pos 
)
virtual

Reimplemented in XrdFile, File, StorageAccountProxy, and LocalCacheFile.

Definition at line 44 of file Storage.cc.

References dqmiodumpmetadata::n, and position().

Referenced by write(), and writev().

44  {
45  // FIXME: this is not thread safe! split into separate interface
46  // that a particular storage can choose to support or not? make
47  // sure that throw semantics are correct here!
48 
49  // FIXME: use saveposition object in case exceptions are thrown?
50  IOOffset here = position();
51  position(pos);
52  n = write(from, n);
53  position(here);
54  return n;
55 }
virtual IOSize write(const void *from, IOSize n, IOOffset pos)
Definition: Storage.cc:44
virtual IOOffset position(void) const
Definition: Storage.cc:72
int64_t IOOffset
Definition: IOTypes.h:19
IOSize Storage::write ( IOBuffer  from,
IOOffset  pos 
)

Definition at line 42 of file Storage.cc.

References IOBuffer::data(), IOBuffer::size(), and write().

42 { return write(from.data(), from.size(), pos); }
void * data(void) const
Definition: IOBuffer.h:31
virtual IOSize write(const void *from, IOSize n, IOOffset pos)
Definition: Storage.cc:44
IOSize size(void) const
Definition: IOBuffer.h:34
IOSize Storage::writev ( const IOPosBuffer from,
IOSize  buffers 
)
virtual

Reimplemented in StorageAccountProxy, and LocalCacheFile.

Definition at line 57 of file Storage.cc.

References data, mps_fire::i, dqmiodumpmetadata::n, hltrates_dqm_sourceclient-live_cfg::offset, size(), dqmMemoryStats::total, and write().

57  {
58  IOSize total = 0;
59  for (IOSize i = 0; i < n; ++i) {
60  try {
61  total += write(from[i].data(), from[i].size(), from[i].offset());
62  } catch (cms::Exception &) {
63  if (!total)
64  throw;
65  break;
66  }
67  }
68  return total;
69 }
virtual IOSize write(const void *from, IOSize n, IOOffset pos)
Definition: Storage.cc:44
virtual IOOffset size(void) const
Definition: Storage.cc:77
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
size_t IOSize
Definition: IOTypes.h:14