JackSocketClientChannel.h

00001 /*
00002 Copyright (C) 2004-2008 Grame  
00003   
00004   This program is free software; you can redistribute it and/or modify
00005   it under the terms of the GNU Lesser General Public License as published by
00006   the Free Software Foundation; either version 2.1 of the License, or
00007   (at your option) any later version.
00008   
00009   This program is distributed in the hope that it will be useful,
00010   but WITHOUT ANY WARRANTY; without even the implied warranty of
00011   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012   GNU Lesser General Public License for more details.
00013   
00014   You should have received a copy of the GNU Lesser General Public License
00015   along with this program; if not, write to the Free Software 
00016   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00017 
00018 */
00019 
00020 #ifndef __JackSocketClientChannel__
00021 #define __JackSocketClientChannel__
00022 
00023 #include "JackChannel.h"
00024 #include "JackSocket.h"
00025 #include "JackThread.h"
00026 #include "JackRequest.h"
00027 
00028 namespace Jack
00029 {
00030 
00035 class JackSocketClientChannel : public JackClientChannelInterface, public JackRunnableInterface
00036 {
00037 
00038     private:
00039 
00040         JackClientSocket fRequestSocket;                        // Socket to communicate with the server
00041         JackServerSocket fNotificationListenSocket;     // Socket listener for server notification
00042         JackClientSocket* fNotificationSocket;          // Socket for server notification
00043         JackThread*     fThread;                                                // Thread to execute the event loop
00044         JackClient*     fClient;
00045 
00046         void ServerSyncCall(JackRequest* req, JackResult* res, int* result);
00047         void ServerAsyncCall(JackRequest* req, JackResult* res, int* result);
00048 
00049     public:
00050 
00051         JackSocketClientChannel();
00052         virtual ~JackSocketClientChannel();
00053 
00054         int Open(const char* server_name, const char* name, char* name_res, JackClient* obj, jack_options_t options, jack_status_t* status);
00055         void Close();
00056 
00057         int Start();
00058         void Stop();
00059                 
00060                 int ServerCheck(const char* server_name);
00061 
00062                 void ClientCheck(const char* name, char* name_res, int protocol, int options, int* status, int* result);
00063         void ClientOpen(const char* name, int* shared_engine, int* shared_client, int* shared_graph, int* result);
00064         void ClientClose(int refnum, int* result);
00065 
00066         void ClientActivate(int refnum, int* result);
00067         void ClientDeactivate(int refnum, int* result);
00068 
00069         void PortRegister(int refnum, const char* name, const char* type, unsigned int flags, unsigned int buffer_size, unsigned int* port_index, int* result);
00070         void PortUnRegister(int refnum, jack_port_id_t port_index, int* result);
00071 
00072         void PortConnect(int refnum, const char* src, const char* dst, int* result);
00073         void PortDisconnect(int refnum, const char* src, const char* dst, int* result);
00074 
00075         void PortConnect(int refnum, jack_port_id_t src, jack_port_id_t dst, int* result);
00076         void PortDisconnect(int refnum, jack_port_id_t src, jack_port_id_t dst, int* result);
00077 
00078         void SetBufferSize(jack_nframes_t buffer_size, int* result);
00079         void SetFreewheel(int onoff, int* result);
00080 
00081         void ReleaseTimebase(int refnum, int* result);
00082         void SetTimebaseCallback(int refnum, int conditional, int* result);
00083                 
00084                 void GetInternalClientName(int refnum, int int_ref, char* name_res, int* result);
00085         void InternalClientHandle(int refnum, const char* client_name, int* status, int* int_ref, int* result);
00086         void InternalClientLoad(int refnum, const char* client_name, const char* so_name, const char* objet_data, int options, int* status, int* int_ref, int* result);
00087         void InternalClientUnload(int refnum, int int_ref, int* status, int* result);
00088   
00089         // JackRunnableInterface interface
00090         bool Init();
00091         bool Execute();
00092 };
00093 
00094 } // end of namespace
00095 
00096 #endif
00097 

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