Pass buffers by r-value reference whenever possible

This commit is contained in:
nsubiron 2019-03-15 12:55:57 +01:00
parent 93ed4e9da0
commit f0d3fd78f1
11 changed files with 22 additions and 18 deletions

View File

@ -43,7 +43,7 @@ namespace carla {
friend class Buffer;
void Push(Buffer buffer) {
void Push(Buffer &&buffer) {
_queue.enqueue(std::move(buffer));
}

View File

@ -40,7 +40,7 @@ namespace sensor {
/// Deserializes a Buffer by calling the "Deserialize" function of the
/// serializer that generated the Buffer.
static interpreted_type Deserialize(Buffer data);
static interpreted_type Deserialize(Buffer &&data);
private:
@ -85,7 +85,7 @@ namespace sensor {
template <typename... Items>
inline typename CompositeSerializer<Items...>::interpreted_type
CompositeSerializer<Items...>::Deserialize(Buffer data) {
CompositeSerializer<Items...>::Deserialize(Buffer &&data) {
RawData message{std::move(data)};
size_t index = message.GetSensorTypeId();
return Deserialize(index, std::move(message));

View File

@ -11,7 +11,7 @@
namespace carla {
namespace sensor {
SharedPtr<SensorData> Deserializer::Deserialize(Buffer buffer) {
SharedPtr<SensorData> Deserializer::Deserialize(Buffer &&buffer) {
return SensorRegistry::Deserialize(std::move(buffer));
}

View File

@ -22,7 +22,7 @@ namespace sensor {
class Deserializer {
public:
static SharedPtr<SensorData> Deserialize(Buffer buffer);
static SharedPtr<SensorData> Deserialize(Buffer &&buffer);
};
} // namespace sensor

View File

@ -88,7 +88,7 @@ namespace sensor {
template <typename... Items>
friend class CompositeSerializer;
RawData(Buffer buffer) : _buffer(std::move(buffer)) {}
RawData(Buffer &&buffer) : _buffer(std::move(buffer)) {}
Buffer _buffer;
};

View File

@ -43,8 +43,8 @@ namespace s11n {
}
template <typename SensorT>
static Buffer Serialize(const SensorT &, Buffer buffer) {
return buffer;
static Buffer Serialize(const SensorT &, Buffer &&buffer) {
return std::move(buffer);
}
static SharedPtr<SensorData> Deserialize(RawData data);

View File

@ -38,13 +38,13 @@ namespace s11n {
}
template <typename Sensor>
static Buffer Serialize(const Sensor &sensor, Buffer bitmap);
static Buffer Serialize(const Sensor &sensor, Buffer &&bitmap);
static SharedPtr<SensorData> Deserialize(RawData data);
};
template <typename Sensor>
inline Buffer ImageSerializer::Serialize(const Sensor &sensor, Buffer bitmap) {
inline Buffer ImageSerializer::Serialize(const Sensor &sensor, Buffer &&bitmap) {
DEBUG_ASSERT(bitmap.size() > sizeof(ImageHeader));
ImageHeader header = {
sensor.GetImageWidth(),
@ -52,7 +52,7 @@ namespace s11n {
sensor.GetFOVAngle()
};
std::memcpy(bitmap.data(), reinterpret_cast<const void *>(&header), sizeof(header));
return bitmap;
return std::move(bitmap);
}
} // namespace s11n

View File

@ -72,7 +72,7 @@ namespace s11n {
static Buffer Serialize(
const Sensor &sensor,
const LidarMeasurement &measurement,
Buffer bitmap);
Buffer &&bitmap);
static SharedPtr<SensorData> Deserialize(RawData data);
};
@ -85,12 +85,12 @@ namespace s11n {
inline Buffer LidarSerializer::Serialize(
const Sensor &,
const LidarMeasurement &measurement,
Buffer output) {
Buffer &&output) {
std::array<boost::asio::const_buffer, 2u> seq = {
boost::asio::buffer(measurement._header),
boost::asio::buffer(measurement._points)};
output.copy_from(seq);
return output;
return std::move(output);
}
} // namespace s11n

View File

@ -28,7 +28,11 @@ namespace s11n {
constexpr static auto header_offset = sizeof(Header);
static Buffer Serialize(uint64_t index, uint64_t frame, double timestamp, rpc::Transform transform);
static Buffer Serialize(
uint64_t index,
uint64_t frame,
double timestamp,
rpc::Transform transform);
static const Header &Deserialize(const Buffer &message) {
return *reinterpret_cast<const Header *>(message.data());

View File

@ -32,7 +32,7 @@ namespace tcp {
class IncomingMessage {
public:
explicit IncomingMessage(Buffer buffer) : _message(std::move(buffer)) {}
explicit IncomingMessage(Buffer &&buffer) : _message(std::move(buffer)) {}
boost::asio::mutable_buffer size_as_buffer() {
return boost::asio::buffer(&_size, sizeof(_size));

View File

@ -100,7 +100,7 @@ static carla::geom::Vector3D FWorldObserver_GetAcceleration(
}
static carla::Buffer FWorldObserver_Serialize(
carla::Buffer buffer,
carla::Buffer &&buffer,
const UCarlaEpisode &Episode,
float DeltaSeconds)
{
@ -145,7 +145,7 @@ static carla::Buffer FWorldObserver_Serialize(
}
check(begin == buffer.end());
return buffer;
return std::move(buffer);
}
void FWorldObserver::BroadcastTick(const UCarlaEpisode &Episode, float DeltaSeconds)