1 #include "Alignment/Geners/interface/IOException.hh"
3 #include "Alignment/Geners/interface/CPP11_auto_ptr.hh"
4 #include "Alignment/Geners/interface/CatalogEntry.hh"
5 #include "Alignment/Geners/interface/binaryIO.hh"
8 CatalogEntry::CatalogEntry()
9 : ItemDescriptor(), id_(0), len_(0), location_(ItemLocation(std::streampos(0), nullptr)) {}
11 CatalogEntry::CatalogEntry(
const ItemDescriptor &
r,
12 const unsigned long long id,
13 const unsigned compressionCod,
14 const unsigned long long itemLength,
15 const ItemLocation &location,
16 const unsigned long long offset)
21 compressionCode_(compressionCod),
24 throw gs::IOInvalidArgument(
"In CatalogEntry constructor: invalid item id");
27 bool CatalogEntry::isEqual(
const ItemDescriptor &other)
const {
28 if ((
void *)
this == (
void *)(&other))
30 if (!ItemDescriptor::isEqual(other))
32 const CatalogEntry &r =
static_cast<const CatalogEntry &
>(other);
33 return id_ == r.id_ && len_ == r.len_ && offset_ == r.offset_ && compressionCode_ == r.compressionCode_ &&
34 location_ == r.location_;
39 write_pod(of, ioPrototype());
40 write_pod(of,
name());
44 write_pod(of, compressionCode_);
47 unsigned char hasOffset = offset_ > 0ULL;
48 write_pod(of, hasOffset);
50 write_pod(of, offset_);
58 static const ClassId current(ClassId::makeId<CatalogEntry>());
59 current.ensureSameId(
id);
61 ClassId itemClass(in, 1);
64 read_pod(in, &ioPrototype);
66 read_pod(in, &category);
68 unsigned long long itemId = 0, itemLen = 0;
69 read_pod(in, &itemId);
70 read_pod(in, &itemLen);
73 read_pod(in, &coCode);
75 unsigned long long offset = 0;
76 unsigned char hasOffset = 0;
77 read_pod(in, &hasOffset);
79 read_pod(in, &offset);
81 CatalogEntry *rec =
nullptr;
85 rec =
new CatalogEntry(ItemDescriptor(itemClass, ioPrototype.c_str(), name.c_str(), category.c_str()),
95 bool CatalogEntry::humanReadable(std::ostream &os)
const {
96 os <<
"Id: " << id_ <<
'\n'
97 <<
"Class: " <<
type().id() <<
'\n'
98 <<
"Name: " <<
name() <<
'\n'
99 <<
"Category: " <<
category() <<
'\n'
100 <<
"I/O prototype: " << ioPrototype() <<
'\n'
101 <<
"URI: " << location().URI() <<
'\n'
102 <<
"Cached: " << location().cachedItemURI() <<
'\n'
103 <<
"Compression: " << compressionCode_ <<
'\n'
104 <<
"Length: " << len_ <<
'\n'
105 <<
"Streampos: " << location().streamPosition() <<
'\n'
106 <<
"Offset: " << offset_ << std::endl;
static const char category[]