Jack2  1.9.9
JackClientControl.h
1 /*
2 Copyright (C) 2003 Paul Davis
3 Copyright (C) 2004-2008 Grame
4 
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as published by
7 the Free Software Foundation; either version 2.1 of the License, or
8 (at your option) any later version.
9 
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU Lesser General Public License for more details.
14 
15 You should have received a copy of the GNU Lesser General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 
19 */
20 
21 #ifndef __JackClientControl__
22 #define __JackClientControl__
23 
24 #include "JackShmMem.h"
25 #include "JackPort.h"
26 #include "JackSynchro.h"
27 #include "JackNotification.h"
28 #include "JackSession.h"
29 
30 namespace Jack
31 {
32 
37 PRE_PACKED_STRUCTURE
39 {
40  char fName[JACK_CLIENT_NAME_SIZE + 1];
41  bool fCallback[kMaxNotification];
42  volatile jack_transport_state_t fTransportState;
43  volatile bool fTransportSync; /* Will be true when slow-sync cb has to be called */
44  volatile bool fTransportTimebase; /* Will be true when timebase cb is called with new_pos on */
45  int fRefNum;
46  int fPID;
47  bool fActive;
48 
49  int fSessionID;
50  char fSessionCommand[JACK_SESSION_COMMAND_SIZE];
51  jack_session_flags_t fSessionFlags;
52 
53  JackClientControl(const char* name, int pid, int refnum, int uuid)
54  {
55  Init(name, pid, refnum, uuid);
56  }
57 
58  JackClientControl(const char* name)
59  {
60  Init(name, 0, -1, -1);
61  }
62 
64  {
65  Init("", 0, -1, -1);
66  }
67 
68  void Init(const char* name, int pid, int refnum, int uuid)
69  {
70  strcpy(fName, name);
71  for (int i = 0; i < kMaxNotification; i++)
72  fCallback[i] = false;
73  // Always activated
74  fCallback[kAddClient] = true;
75  fCallback[kRemoveClient] = true;
76  fCallback[kActivateClient] = true;
77  fCallback[kLatencyCallback] = true;
78  // So that driver synchro are correctly setup in "flush" or "normal" mode
79  fCallback[kStartFreewheelCallback] = true;
80  fCallback[kStopFreewheelCallback] = true;
81  fRefNum = refnum;
82  fPID = pid;
83  fTransportState = JackTransportStopped;
84  fTransportSync = false;
85  fTransportTimebase = false;
86  fActive = false;
87 
88  fSessionID = uuid;
89  }
90 
91 } POST_PACKED_STRUCTURE;
92 
93 } // end of namespace
94 
95 
96 #endif
A class which objects possibly want to be allocated in shared memory derives from this class...
Definition: JackShmMem.h:87
Client control possibly in shared memory.