Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members

MClient.h

00001 /*
00002 
00003     This file is part of la Marmite.
00004     Copyright (C) 2005 Nicolas Falquet.
00005 
00006     La Marmite is free software ; you can redistribute it and/or
00007     modify it under the terms of the GNU General Public License as
00008     published by the Free Software Foundation ; either version 2 of
00009     the License, or (at your option) any later version.
00010 
00011     La Marmite is distributed in the hope that it will be useful, but
00012     WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014     General Public License for more details.
00015 
00016     You should have received a copy of the GNU General Public License
00017     along with la Marmite ; if not, write to the Free Software
00018     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
00019     02111-1307  USA
00020 
00021 */
00022 
00023 #ifndef M_CLIENT_H
00024 #define M_CLIENT_H
00025 
00026 using namespace std;
00027 
00028 #include <string>
00029 #include <vector>
00030 #include <jack/jack.h>
00031 
00032 #include "MModule.h"
00033 
00034 class MProcess;
00035 class MClientPort;
00036 class MClientAudioInputPort;
00037 class MClientAudioOutputPort;
00038 class MClientControlInputPort;
00039 class MClientControlOutputPort;
00040 
00055 class MClient /*abstract*/ : public MModule
00056 {
00057 
00058   Q_OBJECT
00059 
00060 public :
00061 
00062   // destructor
00063 
00072   virtual ~ MClient ( );
00073 
00074   // functions
00075 
00080   virtual jack_client_t * JACKHandle ( ) const;
00081 
00085   virtual MProcess * Callback ( ) const;
00086 
00094   virtual MClientAudioInputPort * AudioInput ( const unsigned int n ) const;
00095 
00103   virtual MClientAudioOutputPort * AudioOutput ( const unsigned int n ) const;
00104 
00112   virtual MClientControlInputPort * ControlInput ( const unsigned int n ) const;
00113 
00121   virtual MClientControlOutputPort * ControlOutput ( const unsigned int n ) const;
00122 
00123   virtual MAudioInputPort * ModuleAudioInput ( const unsigned int n ) const;
00124   virtual MAudioOutputPort * ModuleAudioOutput ( const unsigned int n ) const;
00125   virtual MControlInputPort * ModuleControlInput ( const unsigned int n ) const;
00126   virtual MControlOutputPort * ModuleControlOutput ( const unsigned int n ) const;
00127 
00132   virtual unsigned int NumberOfAudioInputs ( ) const;
00133 
00138   virtual unsigned int NumberOfAudioOutputs ( ) const;
00139 
00144   virtual unsigned int NumberOfControlInputs ( ) const;
00145 
00150   virtual unsigned int NumberOfControlOutputs ( ) const;
00151 
00152   // methods
00153 
00162   virtual void ResetInputs ( );
00163 
00164 public slots :
00165 
00166   virtual void Activate ( );
00167 
00168   virtual void Deactivate ( );
00169 
00183   virtual void Run ( const unsigned int n );
00184 
00185 protected :
00186 
00187   // protected constructor
00188 
00196   MClient ( const string & name, jack_client_t * jackClient, QObject * parent = 0 );
00197 
00215   static jack_client_t * createJackClient ( const string & name );
00216 
00217   // protected methods
00218  
00219   // methods
00220 
00237   virtual MClientAudioInputPort * createAudioInput ( const string & portName );
00238 
00255   virtual MClientAudioOutputPort * createAudioOutput ( const string & portName );
00256 
00257   //  virtual void createControlInput ( const string & portName );
00258   //  virtual void createControlOutput ( const string & portName );
00259   
00272   virtual MClientAudioInputPort * addAudioInput ( jack_port_t * jackPort );
00273 
00286   virtual MClientAudioOutputPort * addAudioOutput ( jack_port_t * jackPort );
00287 
00297   virtual void removePort ( MPort * port );
00298 
00307   virtual void setCallbackProcess ( MProcess * callback );
00308 
00314   virtual void removeCallbackProcess ( );
00315 
00316   // attributes
00317 
00319   jack_client_t * _jack_client;
00320 
00322   MProcess * _callback;
00323 
00325   vector < MClientAudioInputPort * > _audioInput;
00326 
00328   vector < MClientAudioOutputPort * > _audioOutput;
00329 
00331   vector < MClientControlInputPort * > _controlInput;
00332 
00334   vector < MClientControlOutputPort * > _controlOutput;
00335 
00336 };
00337 
00338 #include "MClientAudioInputPort.h"
00339 #include "MClientAudioOutputPort.h"
00340 #include "MClientControlInputPort.h"
00341 #include "MClientControlOutputPort.h"
00342 
00343 #endif // M_CLIENT_H

Generated on Mon Jan 31 12:43:30 2005 for la Marmite by Doxygen 1.4.1