Fix thread races

This commit is contained in:
badaix 2021-09-21 08:16:33 +02:00
parent 2efd00d8ef
commit ee158b521d
4 changed files with 5 additions and 13 deletions

View file

@ -629,6 +629,7 @@ void Server::processRequest(const jsonrpcpp::request_ptr request, const OnRespon
void Server::onMessageReceived(std::shared_ptr<ControlSession> controlSession, const std::string& message, const ResponseHander& response_handler) void Server::onMessageReceived(std::shared_ptr<ControlSession> controlSession, const std::string& message, const ResponseHander& response_handler)
{ {
// LOG(DEBUG, LOG_TAG) << "onMessageReceived: " << message << "\n"; // LOG(DEBUG, LOG_TAG) << "onMessageReceived: " << message << "\n";
// std::lock_guard<std::recursive_mutex> lock(clientMutex_);
jsonrpcpp::entity_ptr entity(nullptr); jsonrpcpp::entity_ptr entity(nullptr);
try try
{ {
@ -703,6 +704,7 @@ void Server::onMessageReceived(std::shared_ptr<ControlSession> controlSession, c
void Server::onMessageReceived(StreamSession* streamSession, const msg::BaseMessage& baseMessage, char* buffer) void Server::onMessageReceived(StreamSession* streamSession, const msg::BaseMessage& baseMessage, char* buffer)
{ {
// std::lock_guard<std::recursive_mutex> lock(clientMutex_);
LOG(DEBUG, LOG_TAG) << "onMessageReceived: " << baseMessage.type << ", size: " << baseMessage.size << ", id: " << baseMessage.id LOG(DEBUG, LOG_TAG) << "onMessageReceived: " << baseMessage.type << ", size: " << baseMessage.size << ", id: " << baseMessage.id
<< ", refers: " << baseMessage.refersTo << ", sent: " << baseMessage.sent.sec << "," << baseMessage.sent.usec << ", refers: " << baseMessage.refersTo << ", sent: " << baseMessage.sent.sec << "," << baseMessage.sent.usec
<< ", recv: " << baseMessage.received.sec << "," << baseMessage.received.usec << "\n"; << ", recv: " << baseMessage.received.sec << "," << baseMessage.received.usec << "\n";

View file

@ -38,14 +38,14 @@ StreamSession::StreamSession(const net::any_io_executor& executor, StreamMessage
void StreamSession::setPcmStream(PcmStreamPtr pcmStream) void StreamSession::setPcmStream(PcmStreamPtr pcmStream)
{ {
// std::lock_guard<std::mutex> lock(mutex_); std::lock_guard<std::mutex> lock(mutex_);
pcmStream_ = pcmStream; pcmStream_ = pcmStream;
} }
const PcmStreamPtr StreamSession::pcmStream() const const PcmStreamPtr StreamSession::pcmStream() const
{ {
// std::lock_guard<std::mutex> lock(mutex_); std::lock_guard<std::mutex> lock(mutex_);
return pcmStream_; return pcmStream_;
} }

View file

@ -295,7 +295,6 @@ json PcmStream::toJson() const
{"status", to_string(state_)}, {"status", to_string(state_)},
}; };
j["metadata"] = metadata_.toJson();
j["properties"] = properties_.toJson(); j["properties"] = properties_.toJson();
return j; return j;
@ -308,13 +307,6 @@ void PcmStream::addListener(PcmListener* pcmListener)
} }
const Metatags& PcmStream::getMetadata() const
{
std::lock_guard<std::recursive_mutex> lock(mutex_);
return metadata_;
}
const Properties& PcmStream::getProperties() const const Properties& PcmStream::getProperties() const
{ {
// std::lock_guard<std::recursive_mutex> lock(mutex_); // std::lock_guard<std::recursive_mutex> lock(mutex_);
@ -448,7 +440,7 @@ void PcmStream::play(ResultHandler handler)
void PcmStream::setProperties(const Properties& properties) void PcmStream::setProperties(const Properties& properties)
{ {
// std::lock_guard<std::recursive_mutex> lock(mutex_); std::lock_guard<std::recursive_mutex> lock(mutex_);
Properties props = properties; Properties props = properties;
// Missing metadata means the data didn't change, so // Missing metadata means the data didn't change, so
// enrich the new properites with old metadata // enrich the new properites with old metadata

View file

@ -134,7 +134,6 @@ public:
virtual const SampleFormat& getSampleFormat() const; virtual const SampleFormat& getSampleFormat() const;
virtual std::string getCodec() const; virtual std::string getCodec() const;
const Metatags& getMetadata() const;
const Properties& getProperties() const; const Properties& getProperties() const;
// Setter for properties // Setter for properties
@ -189,7 +188,6 @@ protected:
std::unique_ptr<encoder::Encoder> encoder_; std::unique_ptr<encoder::Encoder> encoder_;
std::string name_; std::string name_;
std::atomic<ReaderState> state_; std::atomic<ReaderState> state_;
Metatags metadata_;
Properties properties_; Properties properties_;
boost::asio::io_context& ioc_; boost::asio::io_context& ioc_;
ServerSettings server_settings_; ServerSettings server_settings_;