CatapultServer  v0.5.0.1 (Elephant)
LockInfoSerializer.h
Go to the documentation of this file.
1 
21 #pragma once
22 #include "catapult/io/PodIoUtils.h"
23 #include "catapult/io/Stream.h"
24 #include "catapult/utils/Casting.h"
25 
26 namespace catapult { namespace state {
27 
29  template<typename TLockInfo, typename TLockInfoSerializer>
31  public:
33  static void Save(const TLockInfo& lockInfo, io::OutputStream& output){
34  output.write(lockInfo.Account);
35  io::Write(output, lockInfo.MosaicId);
36  io::Write(output, lockInfo.Amount);
37  io::Write(output, lockInfo.Height);
38  io::Write8(output, utils::to_underlying_type(lockInfo.Status));
39  TLockInfoSerializer::Save(lockInfo, output);
40  }
41 
43  static TLockInfo Load(io::InputStream& input){
44  TLockInfo lockInfo;
45  input.read(lockInfo.Account);
46  io::Read(input, lockInfo.MosaicId);
47  io::Read(input, lockInfo.Amount);
48  io::Read(input, lockInfo.Height);
49  lockInfo.Status = static_cast<LockStatus>(io::Read8(input));
50  TLockInfoSerializer::Load(input, lockInfo);
51  return lockInfo;
52  }
53  };
54 }}
catapult::io::Read
void Read(TIo &input, utils::BasicBaseValue< TValue, TTag, TBaseValue > &value)
Reads base value from input.
Definition: PodIoUtils.h:60
catapult::io::Write8
void Write8(TIo &output, uint8_t value)
Writes value into output.
Definition: PodIoUtils.h:54
catapult::state::LockInfoSerializer
Policy for saving and loading lock info data.
Definition: LockInfoSerializer.h:30
catapult::utils::to_underlying_type
constexpr std::underlying_type_t< TEnum > to_underlying_type(TEnum value)
Converts a strongly typed enumeration value to its underlying integral value.
Definition: Casting.h:37
catapult::io::OutputStream::write
virtual void write(const RawBuffer &buffer)=0
catapult::io::InputStream
Reader interface.
Definition: Stream.h:27
catapult::io::Read8
auto Read8(TIo &input)
Reads value from input.
Definition: PodIoUtils.h:90
catapult::state::LockInfoSerializer::Save
static void Save(const TLockInfo &lockInfo, io::OutputStream &output)
Saves lockInfo to output.
Definition: LockInfoSerializer.h:33
catapult::io::Write
void Write(TIo &output, const utils::BasicBaseValue< TValue, TTag, TBaseValue > &value)
Writes base value into output.
Definition: PodIoUtils.h:30
catapult::state::LockInfoSerializer::Load
static TLockInfo Load(io::InputStream &input)
Loads a single value from input.
Definition: LockInfoSerializer.h:43
catapult::io::InputStream::read
virtual void read(const MutableRawBuffer &buffer)=0
Casting.h
catapult
Definition: AddressExtractionExtension.cpp:28
PodIoUtils.h
Stream.h
catapult::io::OutputStream
Writer interface.
Definition: Stream.h:41