AWS SDK for C++

AWS SDK for C++ Version 1.11.887

Loading...
Searching...
No Matches
InterceptingSerializer.h
1#pragma once
2
3#include <smithy/Smithy_EXPORTS.h>
4#include <smithy/client/schema/ShapeSerializer.h>
5
6#include <functional>
7
8namespace smithy {
9namespace schema {
10
11// Routes each write through Before()/After(). Before() returns the serializer
12// that performs the write; After() runs once it returns.
13class SMITHY_API InterceptingSerializer : public ShapeSerializer {
14 public:
15 void WriteStruct(const Schema& schema, const SerializableStruct& value) override {
16 Before(schema).WriteStruct(schema, value);
17 After(schema);
18 }
19 void WriteList(const Schema& schema, size_t size, const std::function<void(ShapeSerializer&)>& consumer) override {
20 Before(schema).WriteList(schema, size, consumer);
21 After(schema);
22 }
23 void WriteMap(const Schema& schema, size_t size, const std::function<void(MapSerializer&)>& consumer) override {
24 Before(schema).WriteMap(schema, size, consumer);
25 After(schema);
26 }
27 void WriteBoolean(const Schema& schema, bool value) override {
28 Before(schema).WriteBoolean(schema, value);
29 After(schema);
30 }
31 void WriteInteger(const Schema& schema, int value) override {
32 Before(schema).WriteInteger(schema, value);
33 After(schema);
34 }
35 void WriteLong(const Schema& schema, int64_t value) override {
36 Before(schema).WriteLong(schema, value);
37 After(schema);
38 }
39 void WriteFloat(const Schema& schema, float value) override {
40 Before(schema).WriteFloat(schema, value);
41 After(schema);
42 }
43 void WriteDouble(const Schema& schema, double value) override {
44 Before(schema).WriteDouble(schema, value);
45 After(schema);
46 }
47 void WriteString(const Schema& schema, const Aws::String& value) override {
48 Before(schema).WriteString(schema, value);
49 After(schema);
50 }
51 void WriteTimestamp(const Schema& schema, const Aws::Utils::DateTime& value) override {
52 Before(schema).WriteTimestamp(schema, value);
53 After(schema);
54 }
55 void WriteBlob(const Schema& schema, const Aws::Utils::ByteBuffer& value) override {
56 Before(schema).WriteBlob(schema, value);
57 After(schema);
58 }
59 void WriteEnum(const Schema& schema, int value) override {
60 Before(schema).WriteEnum(schema, value);
61 After(schema);
62 }
63 void WriteNull(const Schema& schema) override {
64 Before(schema).WriteNull(schema);
65 After(schema);
66 }
67
68 protected:
69 virtual ShapeSerializer& Before(const Schema& schema) = 0;
70 virtual void After(const Schema& /*schema*/) {}
71};
72
73} // namespace schema
74} // namespace smithy
void WriteStruct(const Schema &schema, const SerializableStruct &value) override
void WriteNull(const Schema &schema) override
void WriteInteger(const Schema &schema, int value) override
void WriteBoolean(const Schema &schema, bool value) override
void WriteList(const Schema &schema, size_t size, const std::function< void(ShapeSerializer &)> &consumer) override
void WriteLong(const Schema &schema, int64_t value) override
void WriteTimestamp(const Schema &schema, const Aws::Utils::DateTime &value) override
void WriteDouble(const Schema &schema, double value) override
void WriteMap(const Schema &schema, size_t size, const std::function< void(MapSerializer &)> &consumer) override
void WriteString(const Schema &schema, const Aws::String &value) override
virtual ShapeSerializer & Before(const Schema &schema)=0
void WriteFloat(const Schema &schema, float value) override
void WriteEnum(const Schema &schema, int value) override
void WriteBlob(const Schema &schema, const Aws::Utils::ByteBuffer &value) override
std::basic_string< char, std::char_traits< char >, Aws::Allocator< char > > String
Definition AWSString.h:97