BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
bseserver.hh
Go to the documentation of this file.
00001  // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html
00002 #ifndef __BSE_SERVER_H__
00003 #define __BSE_SERVER_H__
00004 #include <bse/bsesuper.hh>
00005 #include <bse/bsepcmdevice.hh>
00006 #include <bse/bsemididevice.hh>
00007 #include <bse/testobject.hh>
00008 
00009 G_BEGIN_DECLS
00010 
00011 /* --- BSE type macros --- */
00012 #define BSE_TYPE_SERVER              (BSE_TYPE_ID (BseServer))
00013 #define BSE_SERVER(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_SERVER, BseServer))
00014 #define BSE_SERVER_CLASS(class)      (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_SERVER, BseServerClass))
00015 #define BSE_IS_SERVER(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_SERVER))
00016 #define BSE_IS_SERVER_CLASS(class)   (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_SERVER))
00017 #define BSE_SERVER_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_SERVER, BseServerClass))
00018 
00019 struct BseServer : BseContainer {
00020   GSource         *engine_source;
00021   GList           *projects;
00022   GSList          *children;
00023   gchar           *wave_file;
00024   double           wave_seconds;
00025   guint            dev_use_count;
00026   guint            log_messages : 1;
00027   guint            pcm_input_checked : 1;
00028   BsePcmDevice    *pcm_device;
00029   BseModule       *pcm_imodule;
00030   BseModule       *pcm_omodule;
00031   BsePcmWriter    *pcm_writer;
00032   BseMidiDevice   *midi_device;
00033   GSList          *watch_list;
00034 };
00035 struct BseServerClass : BseContainerClass
00036 {};
00037 
00038 BseServer*      bse_server_get                          (void);
00039 BseProject*     bse_server_create_project               (BseServer      *server,
00040                                                          const gchar    *name);
00041 BseProject*     bse_server_find_project                 (BseServer      *server,
00042                                                          const gchar    *name);
00043 void            bse_server_stop_recording               (BseServer      *server);
00044 void            bse_server_start_recording              (BseServer      *server,
00045                                                          const char     *wave_file,
00046                                                          double          n_seconds);
00047 BseErrorType    bse_server_open_devices                 (BseServer      *server);
00048 void            bse_server_close_devices                (BseServer      *server);
00049 BseModule*      bse_server_retrieve_pcm_output_module   (BseServer      *server,
00050                                                          BseSource      *source,
00051                                                          const gchar    *uplink_name);
00052 void            bse_server_discard_pcm_output_module    (BseServer      *server,
00053                                                          BseModule      *module);
00054 BseModule*      bse_server_retrieve_pcm_input_module    (BseServer      *server,
00055                                                          BseSource      *source,
00056                                                          const gchar    *uplink_name);
00057 void            bse_server_discard_pcm_input_module     (BseServer      *server,
00058                                                          BseModule      *module);
00059 void            bse_server_require_pcm_input            (BseServer      *server);
00060 BseModule*      bse_server_retrieve_midi_input_module   (BseServer      *server,
00061                                                          const gchar    *downlink_name,
00062                                                          guint           midi_channel_id,
00063                                                          guint           nth_note,
00064                                                          guint           signals[4]);
00065 void            bse_server_discard_midi_input_module    (BseServer      *server,
00066                                                          BseModule      *module);
00067 void            bse_server_add_io_watch                 (BseServer      *server,
00068                                                          gint            fd,
00069                                                          GIOCondition    events,
00070                                                          BseIOWatch      watch_func,
00071                                                          gpointer        data);
00072 void            bse_server_remove_io_watch              (BseServer      *server,
00073                                                          BseIOWatch      watch_func,
00074                                                          gpointer        data);
00075 
00076 /* --- internal --- */
00077 void            bse_server_registration                 (BseServer          *server,
00078                                                          BseRegistrationType rtype,
00079                                                          const gchar        *what,
00080                                                          const gchar        *error);
00081 void            bse_server_script_start                 (BseServer          *server,
00082                                                          BseJanitor         *janitor);
00083 void            bse_server_script_error                 (BseServer          *server,
00084                                                          const gchar        *script_name,
00085                                                          const gchar        *proc_name,
00086                                                          const gchar        *reason);
00087 BseErrorType    bse_server_run_remote                   (BseServer          *server,
00088                                                          const gchar        *process_name,
00089                                                          SfiRing            *params,
00090                                                          const gchar        *script_name,
00091                                                          const gchar        *proc_name,
00092                                                          BseJanitor        **janitor_p);
00093 void            bse_server_queue_kill_wire              (BseServer          *server,
00094                                                          SfiComWire         *wire);
00095 void            bse_server_notify_gconfig               (BseServer          *server);
00096 G_END_DECLS
00097 
00098 
00099 namespace Bse {
00100 
00101 class ServerImpl : public ServerIface {
00102   TestObjectImplP    test_object_;
00103 protected:
00104   explicit           ServerImpl ();
00105   virtual           ~ServerImpl ();
00106 public:
00107   virtual TestObjectIface* get_test_object ();
00108   static ServerImpl&       instance        ();
00109   void                     send_user_message (const UserMessage &umsg);
00110 };
00111 
00112 } // Bse
00113 
00114 #endif /* __BSE_SERVER_H__ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines