AWS SDK for C++

AWS SDK for C++ Version 1.11.909

Loading...
Searching...
No Matches
Codec.h
1#pragma once
2
3#include <aws/core/client/AWSError.h>
4#include <aws/core/client/CoreErrors.h>
5#include <aws/core/utils/Outcome.h>
6#include <aws/core/utils/memory/AWSMemory.h>
7#include <aws/core/utils/memory/stl/AWSString.h>
8#include <aws/crt/Types.h>
9#include <smithy/Smithy_EXPORTS.h>
10#include <smithy/client/schema/SerializableStruct.h>
11#include <smithy/client/schema/ShapeDeserializer.h>
12
13namespace smithy {
14namespace schema {
15
16class Schema;
17
18class SMITHY_API Codec {
19 public:
21
22 virtual ~Codec() = default;
23
24 virtual SerializerOutcome Serialize(const Schema& schema, const SerializableStruct& shape) const = 0;
25
26 virtual Aws::UniquePtr<ShapeDeserializer> CreateDeserializer(Aws::Crt::ByteCursor data) const = 0;
27
28 void DeserializeShape(Aws::Crt::ByteCursor data, SerializableStruct& shape) const {
29 shape.Deserialize(*CreateDeserializer(data));
30 }
31};
32
33class SMITHY_API JsonCodec final : public Codec {
34 public:
35 SerializerOutcome Serialize(const Schema& schema, const SerializableStruct& shape) const override;
36 Aws::UniquePtr<ShapeDeserializer> CreateDeserializer(Aws::Crt::ByteCursor data) const override;
37};
38
39class SMITHY_API XmlCodec final : public Codec {
40 public:
41 SerializerOutcome Serialize(const Schema& schema, const SerializableStruct& shape) const override;
42 Aws::UniquePtr<ShapeDeserializer> CreateDeserializer(Aws::Crt::ByteCursor data) const override;
43};
44
45class SMITHY_API CborCodec final : public Codec {
46 public:
47 SerializerOutcome Serialize(const Schema& schema, const SerializableStruct& shape) const override;
48 Aws::UniquePtr<ShapeDeserializer> CreateDeserializer(Aws::Crt::ByteCursor data) const override;
49};
50
51} // namespace schema
52} // namespace smithy
SerializerOutcome Serialize(const Schema &schema, const SerializableStruct &shape) const override
Aws::UniquePtr< ShapeDeserializer > CreateDeserializer(Aws::Crt::ByteCursor data) const override
virtual ~Codec()=default
virtual SerializerOutcome Serialize(const Schema &schema, const SerializableStruct &shape) const =0
void DeserializeShape(Aws::Crt::ByteCursor data, SerializableStruct &shape) const
Definition Codec.h:28
virtual Aws::UniquePtr< ShapeDeserializer > CreateDeserializer(Aws::Crt::ByteCursor data) const =0
Aws::UniquePtr< ShapeDeserializer > CreateDeserializer(Aws::Crt::ByteCursor data) const override
SerializerOutcome Serialize(const Schema &schema, const SerializableStruct &shape) const override
void Deserialize(ShapeDeserializer &deserializer)
SerializerOutcome Serialize(const Schema &schema, const SerializableStruct &shape) const override
Aws::UniquePtr< ShapeDeserializer > CreateDeserializer(Aws::Crt::ByteCursor data) const override
std::unique_ptr< T, D > UniquePtr
Definition AWSMemory.h:255