blob: 0aed07b2b5a4b9712b7acaa316c73392f04a3cbe [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
Matt Spinler8ac20502023-01-04 11:03:58 -060018#include <fmt/format.h>
19
Matt Spinler14d671f2019-09-25 13:11:22 -050020#include <phosphor-logging/log.hpp>
21
22namespace openpower
23{
24namespace pels
25{
26
27using namespace phosphor::logging;
28
29void Generic::unflatten(Stream& stream)
30{
31 stream >> _header;
32
33 if (_header.size <= SectionHeader::flattenedSize())
34 {
35 throw std::out_of_range(
36 "Generic::unflatten: SectionHeader::size field too small");
37 }
38
39 size_t dataLength = _header.size - SectionHeader::flattenedSize();
40 _data.resize(dataLength);
41
42 stream >> _data;
43}
44
Matt Spinler06885452019-11-06 10:35:42 -060045void Generic::flatten(Stream& stream) const
Matt Spinler14d671f2019-09-25 13:11:22 -050046{
47 stream << _header << _data;
48}
49
50Generic::Generic(Stream& pel)
51{
52 try
53 {
54 unflatten(pel);
55 validate();
56 }
57 catch (const std::exception& e)
58 {
Matt Spinler8ac20502023-01-04 11:03:58 -060059 log<level::ERR>(
60 fmt::format("Cannot unflatten generic section: {}", e.what())
61 .c_str());
Matt Spinler14d671f2019-09-25 13:11:22 -050062 _valid = false;
63 }
64}
65
66void Generic::validate()
67{
68 // Nothing to validate
69 _valid = true;
70}
71
72} // namespace pels
73} // namespace openpower