blob: 31641c5d0da2f9f3e9e94be458be44107804dce7 [file] [log] [blame]
// Copyright 2018 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef MEDIA_PERCEPTION_SERIALIZED_PROTO_H_
#define MEDIA_PERCEPTION_SERIALIZED_PROTO_H_
#include <stdint.h>
#include <utility>
#include <vector>
#include <google/protobuf/message_lite.h>
template <typename Proto>
class Serialized {
public:
explicit Serialized(std::vector<uint8_t> bytes) { bytes_ = std::move(bytes); }
explicit Serialized(const Proto& p) : bytes_(p.ByteSizeLong(), 0) {
CHECK(p.SerializeToArray(bytes_.data(), bytes_.size()))
<< "Failed to serialize proto: " << p.DebugString();
}
std::vector<uint8_t> GetBytes() const { return bytes_; }
Proto Deserialize() const {
Proto p;
CHECK(p.ParseFromArray(bytes_.data(), bytes_.size()))
<< "Failed to deserialize proto: " << p.DebugString();
return p;
}
private:
std::vector<uint8_t> bytes_;
};
#endif // MEDIA_PERCEPTION_SERIALIZED_PROTO_H_