Correct netjack2 components help.
[jack2.git] / common / JackClientControl.h
blob925f09ddb22f195fd0e3c7fa31b74b2196edf61d
1 /*
2 Copyright (C) 2003 Paul Davis
3 Copyright (C) 2004-2008 Grame
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.
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.
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.
21 #ifndef __JackClientControl__
22 #define __JackClientControl__
24 #include "JackShmMem.h"
25 #include "JackPort.h"
26 #include "JackSynchro.h"
27 #include "JackNotification.h"
28 #include "JackSession.h"
30 namespace Jack
33 /*!
34 \brief Client control possibly in shared memory.
37 PRE_PACKED_STRUCTURE
38 struct JackClientControl : public JackShmMemAble
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;
49 int fSessionID;
50 char fSessionCommand[JACK_SESSION_COMMAND_SIZE];
51 jack_session_flags_t fSessionFlags;
53 JackClientControl(const char* name, int pid, int refnum, int uuid)
55 Init(name, pid, refnum, uuid);
58 JackClientControl(const char* name)
60 Init(name, 0, -1, -1);
63 JackClientControl()
65 Init("", 0, -1, -1);
68 void Init(const char* name, int pid, int refnum, int uuid)
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;
88 fSessionID = uuid;
91 } POST_PACKED_STRUCTURE;
93 } // end of namespace
96 #endif