00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __JackServer__
00022 #define __JackServer__
00023
00024 #include "JackCompilerDeps.h"
00025 #include "driver_interface.h"
00026 #include "JackDriverLoader.h"
00027 #include "JackConnectionManager.h"
00028 #include "JackGlobals.h"
00029 #include "JackPlatformPlug.h"
00030 #include "jslist.h"
00031
00032 namespace Jack
00033 {
00034
00035 class JackGraphManager;
00036 class JackDriverClientInterface;
00037 struct JackEngineControl;
00038 class JackLockedEngine;
00039 class JackLoadableInternalClient;
00040
00045 class SERVER_EXPORT JackServer
00046 {
00047
00048 private:
00049
00050 JackDriverInfo fDriverInfo;
00051 JackDriverClientInterface* fAudioDriver;
00052 JackDriverClientInterface* fFreewheelDriver;
00053 JackDriverClientInterface* fLoopbackDriver;
00054 JackLockedEngine* fEngine;
00055 JackEngineControl* fEngineControl;
00056 JackGraphManager* fGraphManager;
00057 JackServerChannel fChannel;
00058 JackConnectionManager fConnectionState;
00059 JackSynchro fSynchroTable[CLIENT_NUM];
00060 bool fFreewheel;
00061 long fLoopback;
00062
00063 int InternalClientLoadAux(JackLoadableInternalClient* client, const char* so_name, const char* client_name, int options, int* int_ref, int* status);
00064
00065 public:
00066
00067 JackServer(bool sync, bool temporary, long timeout, bool rt, long priority, long loopback, bool verbose, const char* server_name);
00068 ~JackServer();
00069
00070 int Open(jack_driver_desc_t* driver_desc, JSList* driver_params);
00071 int Close();
00072
00073 int Start();
00074 int Stop();
00075
00076
00077 void Notify(int refnum, int notify, int value);
00078
00079
00080 int SetBufferSize(jack_nframes_t buffer_size);
00081 int SetFreewheel(bool onoff);
00082 int InternalClientLoad(const char* client_name, const char* so_name, const char* objet_data, int options, int* int_ref, int* status);
00083 int InternalClientLoad(const char* client_name, const char* so_name, const JSList * parameters, int options, int* int_ref, int* status);
00084 void ClientKill(int refnum);
00085
00086
00087 int ReleaseTimebase(int refnum);
00088 int SetTimebaseCallback(int refnum, int conditional);
00089
00090
00091 JackLockedEngine* GetEngine();
00092 JackEngineControl* GetEngineControl();
00093 JackSynchro* GetSynchroTable();
00094 JackGraphManager* GetGraphManager();
00095
00096 };
00097
00098 }
00099
00100
00101 #endif