diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-07-24 19:29:45 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-07-24 19:29:45 -0400 |
commit | 9ac6bb9befa047a6c349bed02d40da84600b67cc (patch) | |
tree | 5b88f453b8f43d2a43b31cb15b0b50acd6f9eb4a /libs/ardour/ardour/port_manager.h | |
parent | 3d95822716d2e52b54a5bdbe7be4478ab034f8db (diff) |
part-way through getting the audioengine changes to compile
Diffstat (limited to 'libs/ardour/ardour/port_manager.h')
-rw-r--r-- | libs/ardour/ardour/port_manager.h | 60 |
1 files changed, 31 insertions, 29 deletions
diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h index f6aedc02a1..399ab46b34 100644 --- a/libs/ardour/ardour/port_manager.h +++ b/libs/ardour/ardour/port_manager.h @@ -32,11 +32,11 @@ #include "pbd/rcu.h" #include "ardour/chan_count.h" +#include "ardour/port.h" +#include "ardour/port_engine.h" namespace ARDOUR { -class Port; - class PortManager { public: @@ -44,36 +44,44 @@ class PortManager PortManager(); virtual ~PortManager() {} + + PortEngine& port_engine() { return *_impl; } /* Port registration */ - virtual boost::shared_ptr<Port> register_input_port (DataType, const std::string& portname) = 0; - virtual boost::shared_ptr<Port> register_output_port (DataType, const std::string& portname) = 0; - virtual int unregister_port (boost::shared_ptr<Port>) = 0; + boost::shared_ptr<Port> register_input_port (DataType, const std::string& portname); + boost::shared_ptr<Port> register_output_port (DataType, const std::string& portname); + int unregister_port (boost::shared_ptr<Port>); /* Port connectivity */ - virtual int connect (const std::string& source, const std::string& destination) = 0; - virtual int disconnect (const std::string& source, const std::string& destination) = 0; - virtual int disconnect (boost::shared_ptr<Port>) = 0; - + int connect (const std::string& source, const std::string& destination); + int disconnect (const std::string& source, const std::string& destination); + int disconnect (boost::shared_ptr<Port>); + bool connected (const std::string&); + /* other Port management */ - virtual bool port_is_physical (const std::string&) const = 0; - virtual void get_physical_outputs (DataType type, std::vector<std::string>&) = 0; - virtual void get_physical_inputs (DataType type, std::vector<std::string>&) = 0; - virtual boost::shared_ptr<Port> get_port_by_name (const std::string &) = 0; - virtual void port_renamed (const std::string&, const std::string&) = 0; - virtual ChanCount n_physical_outputs () const = 0; - virtual ChanCount n_physical_inputs () const = 0; - virtual const char ** get_ports (const std::string& port_name_pattern, const std::string& type_name_pattern, uint32_t flags) = 0; + bool port_is_physical (const std::string&) const; + void get_physical_outputs (DataType type, std::vector<std::string>&); + void get_physical_inputs (DataType type, std::vector<std::string>&); + boost::shared_ptr<Port> get_port_by_name (const std::string &); + void port_renamed (const std::string&, const std::string&); + ChanCount n_physical_outputs () const; + ChanCount n_physical_inputs () const; + const char ** get_ports (const std::string& port_name_pattern, const std::string& type_name_pattern, uint32_t flags); void remove_all_ports (); /* per-Port monitoring */ - virtual bool can_request_input_monitoring () const = 0; - virtual void request_input_monitoring (const std::string&, bool) const = 0; + bool can_request_input_monitoring () const; + void request_input_monitoring (const std::string&, bool) const; + void ensure_input_monitoring (const std::string&, bool) const; + + std::string make_port_name_relative (const std::string&) const; + std::string make_port_name_non_relative (const std::string&) const; + bool port_is_mine (const std::string&) const; class PortRegistrationFailure : public std::exception { public: @@ -82,23 +90,17 @@ class PortManager ~PortRegistrationFailure () throw () {} - virtual const char *what() const throw () { return reason.c_str(); } + const char *what() const throw () { return reason.c_str(); } private: std::string reason; }; + protected: - typedef void* PortHandle; - PortHandle register (const std::string&, DataType type, Port::Flags); - void unregister (PortHandle); - bool connected (PortHandle); - int disconnect_all (PortHandle); - bool connected_to (PortHandle, const std::string); - int get_connections (PortHandle, std::vector<std::string>&); - - private: + PortEngine* _impl; SerializedRCUManager<Ports> ports; + boost::shared_ptr<Port> register_port (DataType type, const std::string& portname, bool input); void port_registration_failure (const std::string& portname); }; |