1 /* 2 Copyright (C) 2004-2008 Grame 3 4 This program is free software; you can redistribute it and/or modify 5 it under the terms of the GNU Lesser General Public License as published by 6 the Free Software Foundation; either version 2.1 of the License, or 7 (at your option) any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public License 15 along with this program; if not, write to the Free Software 16 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 18 */ 19 20 #ifndef __JackFifo__ 21 #define __JackFifo__ 22 23 #include "JackSynchro.h" 24 #include "JackCompilerDeps.h" 25 #include <assert.h> 26 #include <poll.h> 27 28 namespace Jack 29 { 30 31 /*! 32 \brief Inter process synchronization using Fifo. 33 */ 34 35 class SERVER_EXPORT JackFifo : public detail::JackSynchro 36 { 37 38 private: 39 40 int fFifo; 41 pollfd fPoll; 42 43 bool ConnectAux(const char* name, const char* server_name, int access); 44 45 protected: 46 47 void BuildName(const char* name, const char* server_name, char* res, int size); 48 49 public: 50 JackFifo()51 JackFifo():JackSynchro(), fFifo(-1) 52 {} 53 54 bool Signal(); 55 bool SignalAll(); 56 bool Wait(); 57 bool TimedWait(long usec); 58 59 bool Allocate(const char* name, const char* server_name, int value); 60 bool Connect(const char* name, const char* server_name); 61 bool ConnectInput(const char* name, const char* server_name); 62 bool ConnectOutput(const char* name, const char* server_name); 63 bool Disconnect(); 64 void Destroy(); 65 }; 66 67 } // end of namespace 68 69 70 #endif 71 72