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;
|
friend class Buffer;
|
||||||
|
|
||||||
void Push(Buffer buffer) {
|
void Push(Buffer &&buffer) {
|
||||||
_queue.enqueue(std::move(buffer));
|
_queue.enqueue(std::move(buffer));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ namespace sensor {
|
||||||
|
|
||||||
/// Deserializes a Buffer by calling the "Deserialize" function of the
|
/// Deserializes a Buffer by calling the "Deserialize" function of the
|
||||||
/// serializer that generated the Buffer.
|
/// serializer that generated the Buffer.
|
||||||
static interpreted_type Deserialize(Buffer data);
|
static interpreted_type Deserialize(Buffer &&data);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ namespace sensor {
|
||||||
|
|
||||||
template <typename... Items>
|
template <typename... Items>
|
||||||
inline typename CompositeSerializer<Items...>::interpreted_type
|
inline typename CompositeSerializer<Items...>::interpreted_type
|
||||||
CompositeSerializer<Items...>::Deserialize(Buffer data) {
|
CompositeSerializer<Items...>::Deserialize(Buffer &&data) {
|
||||||
RawData message{std::move(data)};
|
RawData message{std::move(data)};
|
||||||
size_t index = message.GetSensorTypeId();
|
size_t index = message.GetSensorTypeId();
|
||||||
return Deserialize(index, std::move(message));
|
return Deserialize(index, std::move(message));
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
namespace carla {
|
namespace carla {
|
||||||
namespace sensor {
|
namespace sensor {
|
||||||
|
|
||||||
SharedPtr<SensorData> Deserializer::Deserialize(Buffer buffer) {
|
SharedPtr<SensorData> Deserializer::Deserialize(Buffer &&buffer) {
|
||||||
return SensorRegistry::Deserialize(std::move(buffer));
|
return SensorRegistry::Deserialize(std::move(buffer));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ namespace sensor {
|
||||||
class Deserializer {
|
class Deserializer {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static SharedPtr<SensorData> Deserialize(Buffer buffer);
|
static SharedPtr<SensorData> Deserialize(Buffer &&buffer);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace sensor
|
} // namespace sensor
|
||||||
|
|
|
@ -88,7 +88,7 @@ namespace sensor {
|
||||||
template <typename... Items>
|
template <typename... Items>
|
||||||
friend class CompositeSerializer;
|
friend class CompositeSerializer;
|
||||||
|
|
||||||
RawData(Buffer buffer) : _buffer(std::move(buffer)) {}
|
RawData(Buffer &&buffer) : _buffer(std::move(buffer)) {}
|
||||||
|
|
||||||
Buffer _buffer;
|
Buffer _buffer;
|
||||||
};
|
};
|
||||||
|
|
|
@ -43,8 +43,8 @@ namespace s11n {
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename SensorT>
|
template <typename SensorT>
|
||||||
static Buffer Serialize(const SensorT &, Buffer buffer) {
|
static Buffer Serialize(const SensorT &, Buffer &&buffer) {
|
||||||
return buffer;
|
return std::move(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
static SharedPtr<SensorData> Deserialize(RawData data);
|
static SharedPtr<SensorData> Deserialize(RawData data);
|
||||||
|
|
|
@ -38,13 +38,13 @@ namespace s11n {
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Sensor>
|
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);
|
static SharedPtr<SensorData> Deserialize(RawData data);
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename Sensor>
|
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));
|
DEBUG_ASSERT(bitmap.size() > sizeof(ImageHeader));
|
||||||
ImageHeader header = {
|
ImageHeader header = {
|
||||||
sensor.GetImageWidth(),
|
sensor.GetImageWidth(),
|
||||||
|
@ -52,7 +52,7 @@ namespace s11n {
|
||||||
sensor.GetFOVAngle()
|
sensor.GetFOVAngle()
|
||||||
};
|
};
|
||||||
std::memcpy(bitmap.data(), reinterpret_cast<const void *>(&header), sizeof(header));
|
std::memcpy(bitmap.data(), reinterpret_cast<const void *>(&header), sizeof(header));
|
||||||
return bitmap;
|
return std::move(bitmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace s11n
|
} // namespace s11n
|
||||||
|
|
|
@ -72,7 +72,7 @@ namespace s11n {
|
||||||
static Buffer Serialize(
|
static Buffer Serialize(
|
||||||
const Sensor &sensor,
|
const Sensor &sensor,
|
||||||
const LidarMeasurement &measurement,
|
const LidarMeasurement &measurement,
|
||||||
Buffer bitmap);
|
Buffer &&bitmap);
|
||||||
|
|
||||||
static SharedPtr<SensorData> Deserialize(RawData data);
|
static SharedPtr<SensorData> Deserialize(RawData data);
|
||||||
};
|
};
|
||||||
|
@ -85,12 +85,12 @@ namespace s11n {
|
||||||
inline Buffer LidarSerializer::Serialize(
|
inline Buffer LidarSerializer::Serialize(
|
||||||
const Sensor &,
|
const Sensor &,
|
||||||
const LidarMeasurement &measurement,
|
const LidarMeasurement &measurement,
|
||||||
Buffer output) {
|
Buffer &&output) {
|
||||||
std::array<boost::asio::const_buffer, 2u> seq = {
|
std::array<boost::asio::const_buffer, 2u> seq = {
|
||||||
boost::asio::buffer(measurement._header),
|
boost::asio::buffer(measurement._header),
|
||||||
boost::asio::buffer(measurement._points)};
|
boost::asio::buffer(measurement._points)};
|
||||||
output.copy_from(seq);
|
output.copy_from(seq);
|
||||||
return output;
|
return std::move(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace s11n
|
} // namespace s11n
|
||||||
|
|
|
@ -28,7 +28,11 @@ namespace s11n {
|
||||||
|
|
||||||
constexpr static auto header_offset = sizeof(Header);
|
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) {
|
static const Header &Deserialize(const Buffer &message) {
|
||||||
return *reinterpret_cast<const Header *>(message.data());
|
return *reinterpret_cast<const Header *>(message.data());
|
||||||
|
|
|
@ -32,7 +32,7 @@ namespace tcp {
|
||||||
class IncomingMessage {
|
class IncomingMessage {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
explicit IncomingMessage(Buffer buffer) : _message(std::move(buffer)) {}
|
explicit IncomingMessage(Buffer &&buffer) : _message(std::move(buffer)) {}
|
||||||
|
|
||||||
boost::asio::mutable_buffer size_as_buffer() {
|
boost::asio::mutable_buffer size_as_buffer() {
|
||||||
return boost::asio::buffer(&_size, sizeof(_size));
|
return boost::asio::buffer(&_size, sizeof(_size));
|
||||||
|
|
|
@ -100,7 +100,7 @@ static carla::geom::Vector3D FWorldObserver_GetAcceleration(
|
||||||
}
|
}
|
||||||
|
|
||||||
static carla::Buffer FWorldObserver_Serialize(
|
static carla::Buffer FWorldObserver_Serialize(
|
||||||
carla::Buffer buffer,
|
carla::Buffer &&buffer,
|
||||||
const UCarlaEpisode &Episode,
|
const UCarlaEpisode &Episode,
|
||||||
float DeltaSeconds)
|
float DeltaSeconds)
|
||||||
{
|
{
|
||||||
|
@ -145,7 +145,7 @@ static carla::Buffer FWorldObserver_Serialize(
|
||||||
}
|
}
|
||||||
|
|
||||||
check(begin == buffer.end());
|
check(begin == buffer.end());
|
||||||
return buffer;
|
return std::move(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FWorldObserver::BroadcastTick(const UCarlaEpisode &Episode, float DeltaSeconds)
|
void FWorldObserver::BroadcastTick(const UCarlaEpisode &Episode, float DeltaSeconds)
|
||||||
|
|
Loading…
Reference in New Issue