summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/control_protocol_manager.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2006-04-05 00:24:57 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2006-04-05 00:24:57 +0000
commitc412d819699995c84bfb55bc57e8ee26d471bc98 (patch)
tree026f14447a16ba2c35d27e0082e7bb2e5001da39 /libs/ardour/ardour/control_protocol_manager.h
parent9ae0f6cbeec4702b50bcd2360ea4d5dc1aeebd47 (diff)
add new control protocol related files
git-svn-id: svn://localhost/trunk/ardour2@443 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/control_protocol_manager.h')
-rw-r--r--libs/ardour/ardour/control_protocol_manager.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/libs/ardour/ardour/control_protocol_manager.h b/libs/ardour/ardour/control_protocol_manager.h
new file mode 100644
index 0000000000..f0b7846978
--- /dev/null
+++ b/libs/ardour/ardour/control_protocol_manager.h
@@ -0,0 +1,48 @@
+#ifndef ardour_control_protocol_manager_h
+#define ardour_control_protocol_manager_h
+
+#include <string>
+#include <list>
+
+#include <pbd/lockmonitor.h>
+
+namespace ARDOUR {
+
+class ControlProtocol;
+class ControlProtocolDescriptor;
+
+struct ControlProtocolInfo {
+ ControlProtocolDescriptor* descriptor;
+ ControlProtocol* protocol;
+ std::string name;
+ std::string path;
+};
+
+class ControlProtocolManager
+{
+ public:
+ ControlProtocolManager ();
+ ~ControlProtocolManager ();
+
+ static ControlProtocolManager& instance() { return *_instance; }
+
+ void discover_control_protocols (std::string search_path);
+ void startup (Session&);
+
+ ControlProtocol* instantiate (Session&, std::string protocol_name);
+ int teardown (std::string protocol_name);
+
+ private:
+ static ControlProtocolManager* _instance;
+
+ PBD::Lock protocols_lock;
+ std::list<ControlProtocolInfo*> control_protocol_info;
+ std::list<ControlProtocol*> control_protocols;
+
+ int control_protocol_discover (std::string path);
+ ControlProtocolDescriptor* get_descriptor (std::string path);
+};
+
+} // namespace
+
+#endif // ardour_control_protocol_manager_h