@@ -165,7 +165,10 @@ void TransportSession::sendData(TransportData data)
165
165
void TransportSession::prepareSend (TransportData data)
166
166
{
167
167
// Only access m_sendQueue in IO service thread.
168
- m_sendQueue.push (data);
168
+ TransportMessage toSend (data.buffer .get (), data.length );
169
+ TransportData wrappedData{toSend.messageData (),
170
+ toSend.messageLength ()};
171
+ m_sendQueue.push (wrappedData);
169
172
if (m_sendQueue.size () == 1 ) {
170
173
sendHandler ();
171
174
}
@@ -184,24 +187,21 @@ void TransportSession::sendHandler()
184
187
return ;
185
188
}
186
189
187
- TransportData data = m_sendQueue.front ();
188
- TransportMessage toSend (data.buffer .get (), data.length );
189
- TransportData wrappedData{toSend.messageData (),
190
- toSend.messageLength ()};
190
+ TransportData& data = m_sendQueue.front ();
191
191
192
- ELOG_DEBUG (" SendHandler- %p %zu" , this , (size_t )wrappedData .length );
192
+ ELOG_DEBUG (" SendHandler- %p %zu" , this , (size_t )data .length );
193
193
auto self (shared_from_this ());
194
194
if (m_sslSocket) {
195
195
boost::asio::async_write (
196
196
*m_sslSocket,
197
- boost::asio::buffer (wrappedData .buffer .get (), wrappedData .length ),
197
+ boost::asio::buffer (data .buffer .get (), data .length ),
198
198
boost::bind (&TransportSession::writeHandler, self,
199
199
boost::asio::placeholders::error,
200
200
boost::asio::placeholders::bytes_transferred));
201
201
} else {
202
202
boost::asio::async_write (
203
203
m_socket,
204
- boost::asio::buffer (wrappedData .buffer .get (), wrappedData .length ),
204
+ boost::asio::buffer (data .buffer .get (), data .length ),
205
205
boost::bind (&TransportSession::writeHandler, self,
206
206
boost::asio::placeholders::error,
207
207
boost::asio::placeholders::bytes_transferred));
0 commit comments