Pass buffers by r-value reference whenever possible
This commit is contained in:
parent
93ed4e9da0
commit
f0d3fd78f1
|
@ -43,7 +43,7 @@ namespace carla {
|
|||
|
||||
friend class Buffer;
|
||||
|
||||
void Push(Buffer buffer) {
|
||||
void Push(Buffer &&buffer) {
|
||||
_queue.enqueue(std::move(buffer));
|
||||
}
|
||||
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ namespace sensor {
|
|||
class Deserializer {
|
||||
public:
|
||||
|
||||
static SharedPtr<SensorData> Deserialize(Buffer buffer);
|
||||
static SharedPtr<SensorData> Deserialize(Buffer &&buffer);
|
||||
};
|
||||
|
||||
} // namespace sensor
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue