blob: 486419a285dd3ccb635cea629f29b30837a94e68 [file] [log] [blame]
Matt Spinler711d51d2019-11-06 09:36:51 -06001/**
2 * Copyright © 2019 IBM Corporation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Matt Spinler14d671f2019-09-25 13:11:22 -050016#include "generic.hpp"
17
Arya K Padman5bc26532024-04-10 06:19:25 -050018#include <phosphor-logging/lg2.hpp>
Matt Spinler14d671f2019-09-25 13:11:22 -050019
Jayanth Othayoth1aa90d42023-09-13 04:25:45 -050020#include <format>
21
Matt Spinler14d671f2019-09-25 13:11:22 -050022namespace openpower
23{
24namespace pels
25{
26
Matt Spinler14d671f2019-09-25 13:11:22 -050027void Generic::unflatten(Stream& stream)
28{
29 stream >> _header;
30
31 if (_header.size <= SectionHeader::flattenedSize())
32 {
33 throw std::out_of_range(
34 "Generic::unflatten: SectionHeader::size field too small");
35 }
36
37 size_t dataLength = _header.size - SectionHeader::flattenedSize();
38 _data.resize(dataLength);
39
40 stream >> _data;
41}
42
Matt Spinler06885452019-11-06 10:35:42 -060043void Generic::flatten(Stream& stream) const
Matt Spinler14d671f2019-09-25 13:11:22 -050044{
45 stream << _header << _data;
46}
47
48Generic::Generic(Stream& pel)
49{
50 try
51 {
52 unflatten(pel);
53 validate();
54 }
55 catch (const std::exception& e)
56 {
Arya K Padman5bc26532024-04-10 06:19:25 -050057 lg2::error("Cannot unflatten generic section: {EXCEPTION}", "EXCEPTION",
58 e);
Matt Spinler14d671f2019-09-25 13:11:22 -050059 _valid = false;
60 }
61}
62
63void Generic::validate()
64{
65 // Nothing to validate
66 _valid = true;
67}
68
69} // namespace pels
70} // namespace openpower