00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
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 }
00104
00105 #endif