[DEV] add mitex of low level interface

This commit is contained in:
Edouard DUPIN 2015-03-03 21:40:37 +01:00
parent d431f9d790
commit 39424279ef
4 changed files with 11 additions and 2 deletions

View File

@ -86,6 +86,7 @@ std11::shared_ptr<river::io::Manager> river::io::Manager::getInstance() {
}
std11::shared_ptr<river::io::Node> river::io::Manager::getNode(const std::string& _name) {
std11::unique_lock<std11::recursive_mutex> lock(m_mutex);
RIVER_WARNING("Get node : " << _name);
// search in the standalone list :
for (size_t iii=0; iii<m_list.size(); ++iii) {
@ -162,6 +163,7 @@ std11::shared_ptr<river::io::Node> river::io::Manager::getNode(const std::string
}
std11::shared_ptr<drain::VolumeElement> river::io::Manager::getVolumeGroup(const std::string& _name) {
std11::unique_lock<std11::recursive_mutex> lock(m_mutex);
if (_name == "") {
RIVER_ERROR("Try to create an audio group with no name ...");
return std11::shared_ptr<drain::VolumeElement>();
@ -181,6 +183,7 @@ std11::shared_ptr<drain::VolumeElement> river::io::Manager::getVolumeGroup(const
}
bool river::io::Manager::setVolume(const std::string& _volumeName, float _valuedB) {
std11::unique_lock<std11::recursive_mutex> lock(m_mutex);
std11::shared_ptr<drain::VolumeElement> volume = getVolumeGroup(_volumeName);
if (volume == nullptr) {
RIVER_ERROR("Can not set volume ... : '" << _volumeName << "'");
@ -202,6 +205,7 @@ bool river::io::Manager::setVolume(const std::string& _volumeName, float _valued
}
float river::io::Manager::getVolume(const std::string& _volumeName) {
std11::unique_lock<std11::recursive_mutex> lock(m_mutex);
std11::shared_ptr<drain::VolumeElement> volume = getVolumeGroup(_volumeName);
if (volume == nullptr) {
RIVER_ERROR("Can not get volume ... : '" << _volumeName << "'");
@ -215,6 +219,7 @@ std::pair<float,float> river::io::Manager::getVolumeRange(const std::string& _vo
}
void river::io::Manager::generateDot(const std::string& _filename) {
std11::unique_lock<std11::recursive_mutex> lock(m_mutex);
etk::FSNode node(_filename);
RIVER_INFO("Generate the DOT files: " << node);
if (node.fileOpenWrite() == false) {
@ -235,6 +240,7 @@ void river::io::Manager::generateDot(const std::string& _filename) {
}
std11::shared_ptr<river::io::Group> river::io::Manager::getGroup(const std::string& _name) {
std11::unique_lock<std11::recursive_mutex> lock(m_mutex);
std11::shared_ptr<river::io::Group> out;
std::map<std::string, std11::shared_ptr<river::io::Group> >::iterator it = m_listGroup.find(_name);
if (it == m_listGroup.end()) {

View File

@ -12,6 +12,7 @@
#include <map>
#include <list>
#include <stdint.h>
#include <etk/mutex.h>
#include <etk/chrono.h>
#include <etk/functional.h>
#include <etk/memory.h>
@ -25,6 +26,8 @@ namespace river {
namespace io {
class Node;
class Manager {
private:
mutable std11::recursive_mutex m_mutex;
private:
/**
* @brief Constructor

View File

@ -28,7 +28,7 @@ namespace river {
class Manager;
class Group;
class Node : public std11::enable_shared_from_this<Node> {
friend river::io::Group;
friend class river::io::Group;
protected:
uint32_t m_uid; // uniqueNodeID
protected:

View File

@ -16,7 +16,7 @@ namespace river {
class Manager;
class Group;
class NodeAirTAudio : public Node {
friend river::io::Group;
friend class river::io::Group;
protected:
/**
* @brief Constructor