@@ -51,7 +51,7 @@ namespace Aws
51
51
}
52
52
53
53
MessageAmendment::MessageAmendment (Crt::List<EventStreamHeader> &&headers, Crt::Allocator *allocator) noexcept
54
- : m_headers(headers), m_payload(), m_allocator(allocator)
54
+ : m_headers(std::move( headers) ), m_payload(), m_allocator(allocator)
55
55
{
56
56
}
57
57
@@ -79,14 +79,16 @@ namespace Aws
79
79
80
80
MessageAmendment &MessageAmendment::operator =(const MessageAmendment &lhs)
81
81
{
82
- m_headers = lhs.m_headers ;
83
- if (lhs.m_payload .has_value ())
82
+ if (this != &lhs)
84
83
{
85
- m_payload =
86
- Crt::ByteBufNewCopy (lhs.m_allocator , lhs.m_payload .value ().buffer , lhs.m_payload .value ().len );
84
+ m_headers = lhs.m_headers ;
85
+ if (lhs.m_payload .has_value ())
86
+ {
87
+ m_payload =
88
+ Crt::ByteBufNewCopy (lhs.m_allocator , lhs.m_payload .value ().buffer , lhs.m_payload .value ().len );
89
+ }
90
+ m_allocator = lhs.m_allocator ;
87
91
}
88
- m_allocator = lhs.m_allocator ;
89
-
90
92
return *this ;
91
93
}
92
94
@@ -97,9 +99,37 @@ namespace Aws
97
99
rhs.m_payload = Crt::Optional<Crt::ByteBuf>();
98
100
}
99
101
100
- const Crt::List<EventStreamHeader> &MessageAmendment::GetHeaders () const noexcept { return m_headers; }
102
+ MessageAmendment &MessageAmendment::operator =(MessageAmendment &&rhs)
103
+ {
104
+ if (this != &rhs)
105
+ {
106
+ m_headers = std::move (rhs.m_headers );
107
+ m_payload = rhs.m_payload ;
108
+ m_allocator = rhs.m_allocator ;
109
+
110
+ rhs.m_allocator = nullptr ;
111
+ rhs.m_payload = Crt::Optional<Crt::ByteBuf>();
112
+ }
113
+ return *this ;
114
+ }
115
+
116
+ const Crt::List<EventStreamHeader> &MessageAmendment::GetHeaders () const & noexcept { return m_headers; }
101
117
102
- const Crt::Optional<Crt::ByteBuf> &MessageAmendment::GetPayload () const noexcept { return m_payload; }
118
+ Crt::List<EventStreamHeader> &&MessageAmendment::GetHeaders() && { return std::move (m_headers); }
119
+
120
+ const Crt::Optional<Crt::ByteBuf> &MessageAmendment::GetPayload () const & noexcept { return m_payload; }
121
+
122
+ Crt::Optional<Crt::ByteBuf> &&MessageAmendment::GetPayload() && { return std::move (m_payload); }
123
+
124
+ void MessageAmendment::AddHeader (EventStreamHeader &&header) noexcept
125
+ {
126
+ m_headers.emplace_back (std::move (header));
127
+ }
128
+
129
+ void MessageAmendment::PrependHeaders (Crt::List<EventStreamHeader> &&headers)
130
+ {
131
+ m_headers.splice (m_headers.begin (), std::move (headers));
132
+ }
103
133
104
134
void MessageAmendment::SetPayload (const Crt::Optional<Crt::ByteBuf> &payload) noexcept
105
135
{
@@ -109,6 +139,11 @@ namespace Aws
109
139
}
110
140
}
111
141
142
+ void MessageAmendment::SetPayload (Crt::Optional<Crt::ByteBuf> &&payload) noexcept
143
+ {
144
+ m_payload = std::move (payload);
145
+ }
146
+
112
147
MessageAmendment::~MessageAmendment () noexcept
113
148
{
114
149
if (m_payload.has_value ())
@@ -663,23 +698,17 @@ namespace Aws
663
698
thisConnection->m_clientState = WAITING_FOR_CONNECT_ACK;
664
699
thisConnection->m_underlyingConnection = connection;
665
700
MessageAmendment messageAmendment;
666
- Crt::List<EventStreamHeader> messageAmendmentHeaders = messageAmendment.GetHeaders ();
667
701
668
702
if (thisConnection->m_connectMessageAmender )
669
703
{
670
704
MessageAmendment connectAmendment (thisConnection->m_connectMessageAmender ());
671
- Crt::List<EventStreamHeader> amenderHeaderList = connectAmendment.GetHeaders ();
672
705
/* The version header is necessary for establishing the connection. */
673
706
messageAmendment.AddHeader (EventStreamHeader (
674
707
Crt::String (EVENTSTREAM_VERSION_HEADER),
675
708
Crt::String (EVENTSTREAM_VERSION_STRING),
676
709
thisConnection->m_allocator ));
677
- /* Note that we are prepending headers from the user-provided amender. */
678
- if (amenderHeaderList.size () > 0 )
679
- {
680
- messageAmendmentHeaders.splice (messageAmendmentHeaders.end (), amenderHeaderList);
681
- }
682
- messageAmendment.SetPayload (connectAmendment.GetPayload ());
710
+ messageAmendment.PrependHeaders (std::move (connectAmendment).GetHeaders ());
711
+ messageAmendment.SetPayload (std::move (connectAmendment).GetPayload ());
683
712
}
684
713
685
714
/* Send a CONNECT packet to the server. */
@@ -695,8 +724,6 @@ namespace Aws
695
724
thisConnection->m_connectionSetupPromise .set_value ();
696
725
}
697
726
698
- void MessageAmendment::AddHeader (EventStreamHeader &&header) noexcept { m_headers.emplace_back (header); }
699
-
700
727
void ClientConnection::s_onConnectionShutdown (
701
728
struct aws_event_stream_rpc_client_connection *connection,
702
729
int errorCode,
0 commit comments