JackInternalClient.h

00001 /*
00002 Copyright (C) 2001 Paul Davis 
00003 Copyright (C) 2004-2008 Grame
00004 
00005 This program is free software; you can redistribute it and/or modify
00006 it under the terms of the GNU General Public License as published by
00007 the Free Software Foundation; either version 2 of the License, or
00008 (at your option) any later version.
00009 
00010 This program is distributed in the hope that it will be useful,
00011 but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013 GNU General Public License for more details.
00014 
00015 You should have received a copy of the GNU General Public License
00016 along with this program; if not, write to the Free Software
00017 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00018 
00019 */
00020 
00021 #ifndef __JackInternalClient__
00022 #define __JackInternalClient__
00023 
00024 #include "JackClient.h"
00025 
00026 namespace Jack
00027 {
00028 
00029 struct JackEngineControl;
00030 class JackClientChannelInterface;
00031 
00036 class JackInternalClient : public JackClient
00037 {
00038 
00039     private:
00040 
00041         JackClientControl* fClientControl;     
00043     public:
00044 
00045         JackInternalClient(JackServer* server, JackSynchro** table);
00046         virtual ~JackInternalClient();
00047 
00048         int Open(const char* server_name, const char* name, jack_options_t options, jack_status_t* status);
00049 
00050         JackGraphManager* GetGraphManager() const;
00051         JackEngineControl* GetEngineControl() const;
00052         JackClientControl* GetClientControl() const;
00053 
00054         static JackGraphManager* fGraphManager;         
00055         static JackEngineControl* fEngineControl;       
00056 };
00057 
00062 #ifdef WIN32
00063 
00064 #include <windows.h>
00065 #define HANDLE HINSTANCE 
00066 #define LoadJackModule(name) LoadLibrary((name));
00067 #define UnloadJackModule(handle) FreeLibrary((handle));  
00068 #define GetJackProc(handle, name) GetProcAddress((handle), (name));
00069 
00070 #else
00071 
00072 #include <dlfcn.h>
00073 #define HANDLE void* 
00074 #define LoadJackModule(name) dlopen((name), RTLD_NOW | RTLD_LOCAL);
00075 #define UnloadJackModule(handle) dlclose((handle));
00076 #define GetJackProc(handle, name) dlsym((handle), (name));
00077 
00078 #endif
00079 
00080 typedef int (*InitializeCallback)(jack_client_t*, const char*);
00081 typedef void (*FinishCallback)(void *);
00082 
00083 class JackLoadableInternalClient : public JackInternalClient
00084 {
00085 
00086     private:
00087         
00088                 HANDLE fHandle;
00089                 InitializeCallback fInitialize;
00090                 FinishCallback fFinish;         
00091                 char fObjectData[JACK_LOAD_INIT_LIMIT];
00092 
00093     public:
00094 
00095         JackLoadableInternalClient(JackServer* server, JackSynchro** table, const char* so_name, const char* object_data);
00096             virtual ~JackLoadableInternalClient();
00097                 
00098                 int Open(const char* server_name, const char* name, jack_options_t options, jack_status_t* status);
00099 
00100 };
00101 
00102 
00103 } // end of namespace
00104 
00105 #endif

Generated on Thu Feb 14 11:16:01 2008 for Jackdmp by  doxygen 1.5.1