blob: c58b85e78661f4facb8eccddcb6e16b81d964f2d [file] [log] [blame]
Alexander Hansen40fb5492025-10-28 17:56:12 +01001// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright 2019 IBM Corporation
3
Matt Spinler14d671f2019-09-25 13:11:22 -05004#include "generic.hpp"
5
Arya K Padman5bc26532024-04-10 06:19:25 -05006#include <phosphor-logging/lg2.hpp>
Matt Spinler14d671f2019-09-25 13:11:22 -05007
8namespace openpower
9{
10namespace pels
11{
12
Matt Spinler14d671f2019-09-25 13:11:22 -050013void Generic::unflatten(Stream& stream)
14{
15 stream >> _header;
16
17 if (_header.size <= SectionHeader::flattenedSize())
18 {
19 throw std::out_of_range(
20 "Generic::unflatten: SectionHeader::size field too small");
21 }
22
23 size_t dataLength = _header.size - SectionHeader::flattenedSize();
24 _data.resize(dataLength);
25
26 stream >> _data;
27}
28
Matt Spinler06885452019-11-06 10:35:42 -060029void Generic::flatten(Stream& stream) const
Matt Spinler14d671f2019-09-25 13:11:22 -050030{
31 stream << _header << _data;
32}
33
34Generic::Generic(Stream& pel)
35{
36 try
37 {
38 unflatten(pel);
39 validate();
40 }
41 catch (const std::exception& e)
42 {
Arya K Padman5bc26532024-04-10 06:19:25 -050043 lg2::error("Cannot unflatten generic section: {EXCEPTION}", "EXCEPTION",
44 e);
Matt Spinler14d671f2019-09-25 13:11:22 -050045 _valid = false;
46 }
47}
48
49void Generic::validate()
50{
51 // Nothing to validate
52 _valid = true;
53}
54
55} // namespace pels
56} // namespace openpower