git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@4689 0c269be4-1314-0410-8aa9-9f06e86f4224tags/1.9.9.5
| @@ -25,7 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
| namespace Jack | |||
| { | |||
| JackGenericClientChannel::JackGenericClientChannel():fClient(NULL) | |||
| JackGenericClientChannel::JackGenericClientChannel() | |||
| {} | |||
| JackGenericClientChannel::~JackGenericClientChannel() | |||
| @@ -39,7 +39,6 @@ class JackGenericClientChannel : public detail::JackClientChannelInterface | |||
| protected: | |||
| detail::JackClientRequestInterface* fRequest; | |||
| JackClient* fClient; | |||
| void ServerSyncCall(JackRequest* req, JackResult* res, int* result); | |||
| void ServerAsyncCall(JackRequest* req, JackResult* res, int* result); | |||
| @@ -27,7 +27,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
| #include "JackServer.h" | |||
| #include "JackEngineControl.h" | |||
| #include "JackClientControl.h" | |||
| #include "JackInternalClientChannel.h" | |||
| #include "JackGenericClientChannel.h" | |||
| #include "JackTools.h" | |||
| #include <assert.h> | |||
| @@ -56,6 +59,7 @@ SERVER_EXPORT JackSynchro* GetSynchroTable() | |||
| JackInternalClient::JackInternalClient(JackServer* server, JackSynchro* table): JackClient(table) | |||
| { | |||
| fChannel = new JackInternalClientChannel(server); | |||
| //fChannel = new JackGenericClientChannel(); | |||
| } | |||
| JackInternalClient::~JackInternalClient() | |||
| @@ -98,7 +102,6 @@ int JackInternalClient::Open(const char* server_name, const char* name, int uuid | |||
| return 0; | |||
| error: | |||
| fChannel->Stop(); | |||
| fChannel->Close(); | |||
| return -1; | |||
| } | |||
| @@ -44,12 +44,6 @@ class JackInternalClientChannel : public detail::JackClientChannelInterface | |||
| virtual ~JackInternalClientChannel() | |||
| {} | |||
| // Open the Server/Client connection | |||
| virtual int Open(const char* name, char* name_res, JackClient* obj, jack_options_t options, jack_status_t* status) | |||
| { | |||
| return 0; | |||
| } | |||
| void ClientCheck(const char* name, int uuid, char* name_res, int protocol, int options, int* status, int* result, int open) | |||
| { | |||
| *result = fEngine->ClientCheck(name, uuid, name_res, protocol, options, status); | |||
| @@ -28,6 +28,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
| namespace Jack | |||
| { | |||
| class JackClient; | |||
| /*! | |||
| \brief JackClientChannel using sockets. | |||
| */ | |||
| @@ -40,6 +42,7 @@ class JackSocketClientChannel : public JackGenericClientChannel, public JackRunn | |||
| JackServerSocket fNotificationListenSocket; // Socket listener for server notification | |||
| JackClientSocket* fNotificationSocket; // Socket for server notification | |||
| JackThread fThread; // Thread to execute the event loop | |||
| JackClient* fClient; | |||
| public: | |||
| @@ -28,7 +28,7 @@ | |||
| namespace Jack | |||
| { | |||
| int JackWinNamedPipe::Read(void* data, int len) | |||
| int JackWinNamedPipeAux::ReadAux(void* data, int len) | |||
| { | |||
| DWORD read; | |||
| BOOL res = ReadFile(fNamedPipe, data, len, &read, NULL); | |||
| @@ -40,31 +40,7 @@ int JackWinNamedPipe::Read(void* data, int len) | |||
| } | |||
| } | |||
| int JackWinNamedPipe::Write(void* data, int len) | |||
| { | |||
| DWORD written; | |||
| BOOL res = WriteFile(fNamedPipe, data, len, &written, NULL); | |||
| if (res && written == (DWORD)len) { | |||
| return 0; | |||
| } else { | |||
| jack_error("Cannot write named pipe name = %s err = %ld", fName, GetLastError()); | |||
| return -1; | |||
| } | |||
| } | |||
| int JackWinNamedPipeClient::Read(void* data, int len) | |||
| { | |||
| DWORD read; | |||
| BOOL res = ReadFile(fNamedPipe, data, len, &read, NULL); | |||
| if (res && read == (DWORD)len) { | |||
| return 0; | |||
| } else { | |||
| jack_error("Cannot read named pipe name = %s err = %ld", fName, GetLastError()); | |||
| return -1; | |||
| } | |||
| } | |||
| int JackWinNamedPipeClient::Write(void* data, int len) | |||
| int JackWinNamedPipeAux::WriteAux(void* data, int len) | |||
| { | |||
| DWORD written; | |||
| BOOL res = WriteFile(fNamedPipe, data, len, &written, NULL); | |||
| @@ -28,7 +28,7 @@ | |||
| namespace Jack | |||
| { | |||
| class JackWinNamedPipe : public detail::JackChannelTransactionInterface | |||
| class JackWinNamedPipeAux | |||
| { | |||
| protected: | |||
| @@ -36,41 +36,61 @@ class JackWinNamedPipe : public detail::JackChannelTransactionInterface | |||
| HANDLE fNamedPipe; | |||
| char fName[256]; | |||
| int ReadAux(void* data, int len); | |||
| int WriteAux(void* data, int len); | |||
| public: | |||
| JackWinNamedPipe(): fNamedPipe(INVALID_HANDLE_VALUE) | |||
| JackWinNamedPipeAux(): fNamedPipe(INVALID_HANDLE_VALUE) | |||
| {} | |||
| JackWinNamedPipeAux(HANDLE pipe): fNamedPipe(pipe) | |||
| {} | |||
| JackWinNamedPipe(HANDLE pipe): fNamedPipe(pipe) | |||
| virtual ~JackWinNamedPipeAux() | |||
| {} | |||
| }; | |||
| class JackWinNamedPipe : public JackWinNamedPipeAux, public detail::JackChannelTransactionInterface | |||
| { | |||
| public: | |||
| JackWinNamedPipe():JackWinNamedPipeAux() | |||
| {} | |||
| JackWinNamedPipe(HANDLE pipe):JackWinNamedPipeAux(pipe) | |||
| {} | |||
| virtual ~JackWinNamedPipe() | |||
| {} | |||
| virtual int Read(void* data, int len); | |||
| virtual int Write(void* data, int len); | |||
| virtual int Read(void* data, int len) | |||
| { | |||
| return ReadAux(data, len); | |||
| } | |||
| virtual int Write(void* data, int len) | |||
| { | |||
| return WriteAux(data, len); | |||
| } | |||
| }; | |||
| /*! | |||
| \brief Client named pipe. | |||
| */ | |||
| class JackWinNamedPipeClient : public detail::JackClientRequestInterface | |||
| class JackWinNamedPipeClient : public JackWinNamedPipeAux, public detail::JackClientRequestInterface | |||
| { | |||
| protected: | |||
| int ConnectAux(); | |||
| HANDLE fNamedPipe; | |||
| char fName[256]; | |||
| public: | |||
| JackWinNamedPipeClient() | |||
| JackWinNamedPipeClient():JackWinNamedPipeAux() | |||
| {} | |||
| JackWinNamedPipeClient(HANDLE pipe, const char* name) | |||
| JackWinNamedPipeClient(HANDLE pipe, const char* name):JackWinNamedPipeAux(pipe) | |||
| { | |||
| strcpy(fName, name); | |||
| fNamedPipe = pipe; | |||
| } | |||
| virtual ~JackWinNamedPipeClient() | |||
| @@ -80,8 +100,14 @@ class JackWinNamedPipeClient : public detail::JackClientRequestInterface | |||
| virtual int Connect(const char* dir, const char* name, int which); | |||
| virtual int Close(); | |||
| int Read(void* data, int len); | |||
| int Write(void* data, int len); | |||
| virtual int Read(void* data, int len) | |||
| { | |||
| return ReadAux(data, len); | |||
| } | |||
| virtual int Write(void* data, int len) | |||
| { | |||
| return WriteAux(data, len); | |||
| } | |||
| virtual void SetReadTimeOut(long sec); | |||
| virtual void SetWriteTimeOut(long sec); | |||
| @@ -29,6 +29,8 @@ | |||
| namespace Jack | |||
| { | |||
| class JackClient; | |||
| /*! | |||
| \brief JackClientChannel using pipes. | |||
| */ | |||
| @@ -40,6 +42,7 @@ class JackWinNamedPipeClientChannel : public JackGenericClientChannel, public Ja | |||
| JackWinNamedPipeServer fNotificationListenPipe; // Pipe listener for server notification | |||
| JackThread fThread; // Thread to execute the event loop | |||
| JackClient* fClient; | |||
| public: | |||