Better isolation of server and clients system resources to allow starting the server...
[jack2.git] / common / JackRequest.h
blob03cfea4fdb10558113d3e190133f013ea19a8b78
1 /*
2 Copyright (C) 2001 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 __JackRequest__
22 #define __JackRequest__
24 #include "JackConstants.h"
25 #include "JackPlatformPlug.h"
26 #include "types.h"
27 #include <string.h>
28 #include <stdio.h>
30 namespace Jack
33 #define CheckRes(exp) { if ((exp) < 0) return -1;}
35 /*!
36 \brief Request from client to server.
39 struct JackRequest
42 enum RequestType {
43 kRegisterPort = 1,
44 kUnRegisterPort = 2,
45 kConnectPorts = 3,
46 kDisconnectPorts = 4,
47 kSetTimeBaseClient = 5,
48 kActivateClient = 6,
49 kDeactivateClient = 7,
50 kDisconnectPort = 8,
51 kSetClientCapabilities = 9,
52 kGetPortConnections = 10,
53 kGetPortNConnections = 11,
54 kReleaseTimebase = 12,
55 kSetTimebaseCallback = 13,
56 kSetBufferSize = 20,
57 kSetFreeWheel = 21,
58 kClientCheck = 22,
59 kClientOpen = 23,
60 kClientClose = 24,
61 kConnectNamePorts = 25,
62 kDisconnectNamePorts = 26,
63 kGetInternalClientName = 27,
64 kInternalClientHandle = 28,
65 kInternalClientLoad = 29,
66 kInternalClientUnload = 30,
67 kPortRename = 31,
68 kNotification = 32
71 RequestType fType;
73 JackRequest()
76 JackRequest(RequestType type): fType(type)
79 virtual ~JackRequest()
82 virtual int Read(JackChannelTransaction* trans)
84 return trans->Read(&fType, sizeof(RequestType));
87 virtual int Write(JackChannelTransaction* trans)
89 return trans->Write(&fType, sizeof(RequestType));
94 /*!
95 \brief Result from the server.
98 struct JackResult
101 int fResult;
103 JackResult(): fResult( -1)
105 JackResult(int result): fResult(result)
107 virtual ~JackResult()
110 virtual int Read(JackChannelTransaction* trans)
112 return trans->Read(&fResult, sizeof(int));
115 virtual int Write(JackChannelTransaction* trans)
117 return trans->Write(&fResult, sizeof(int));
122 \brief CheckClient request.
125 struct JackClientCheckRequest : public JackRequest
128 char fName[JACK_CLIENT_NAME_SIZE + 1];
129 int fProtocol;
130 int fOptions;
132 JackClientCheckRequest()
134 JackClientCheckRequest(const char* name, int protocol, int options)
135 : JackRequest(JackRequest::kClientCheck), fProtocol(protocol), fOptions(options)
137 snprintf(fName, sizeof(fName), "%s", name);
140 int Read(JackChannelTransaction* trans)
142 CheckRes(trans->Read(&fName, JACK_CLIENT_NAME_SIZE + 1));
143 CheckRes(trans->Read(&fProtocol, sizeof(int)));
144 return trans->Read(&fOptions, sizeof(int));
147 int Write(JackChannelTransaction* trans)
149 CheckRes(JackRequest::Write(trans));
150 CheckRes(trans->Write(&fName, JACK_CLIENT_NAME_SIZE + 1));
151 CheckRes(trans->Write(&fProtocol, sizeof(int)));
152 return trans->Write(&fOptions, sizeof(int));
157 \brief CheckClient result.
160 struct JackClientCheckResult : public JackResult
163 char fName[JACK_CLIENT_NAME_SIZE + 1];
164 int fStatus;
166 JackClientCheckResult(): JackResult(), fStatus(0)
168 JackClientCheckResult(int32_t result, const char* name, int status)
169 : JackResult(result), fStatus(status)
171 snprintf(fName, sizeof(fName), "%s", name);
174 int Read(JackChannelTransaction* trans)
176 CheckRes(JackResult::Read(trans));
177 CheckRes(trans->Read(&fName, JACK_CLIENT_NAME_SIZE + 1));
178 CheckRes(trans->Read(&fStatus, sizeof(int)));
179 return 0;
182 int Write(JackChannelTransaction* trans)
184 CheckRes(JackResult::Write(trans));
185 CheckRes(trans->Write(&fName, JACK_CLIENT_NAME_SIZE + 1));
186 CheckRes(trans->Write(&fStatus, sizeof(int)));
187 return 0;
192 \brief NewClient request.
195 struct JackClientOpenRequest : public JackRequest
198 int fPID;
199 char fName[JACK_CLIENT_NAME_SIZE + 1];
201 JackClientOpenRequest()
203 JackClientOpenRequest(const char* name, int pid): JackRequest(JackRequest::kClientOpen)
205 snprintf(fName, sizeof(fName), "%s", name);
206 fPID = pid;
209 int Read(JackChannelTransaction* trans)
211 CheckRes(trans->Read(&fPID, sizeof(int)));
212 return trans->Read(&fName, JACK_CLIENT_NAME_SIZE + 1);
215 int Write(JackChannelTransaction* trans)
217 CheckRes(JackRequest::Write(trans));
218 CheckRes(trans->Write(&fPID, sizeof(int)));
219 return trans->Write(&fName, JACK_CLIENT_NAME_SIZE + 1);
224 \brief NewClient result.
227 struct JackClientOpenResult : public JackResult
230 int fSharedEngine;
231 int fSharedClient;
232 int fSharedGraph;
234 JackClientOpenResult()
235 : JackResult(), fSharedEngine(-1), fSharedClient(-1), fSharedGraph(-1)
237 JackClientOpenResult(int32_t result, int index1, int index2, int index3)
238 : JackResult(result), fSharedEngine(index1), fSharedClient(index2), fSharedGraph(index3)
241 int Read(JackChannelTransaction* trans)
243 CheckRes(JackResult::Read(trans));
244 CheckRes(trans->Read(&fSharedEngine, sizeof(int)));
245 CheckRes(trans->Read(&fSharedClient, sizeof(int)));
246 CheckRes(trans->Read(&fSharedGraph, sizeof(int)));
247 return 0;
250 int Write(JackChannelTransaction* trans)
252 CheckRes(JackResult::Write(trans));
253 CheckRes(trans->Write(&fSharedEngine, sizeof(int)));
254 CheckRes(trans->Write(&fSharedClient, sizeof(int)));
255 CheckRes(trans->Write(&fSharedGraph, sizeof(int)));
256 return 0;
261 \brief CloseClient request.
264 struct JackClientCloseRequest : public JackRequest
267 int fRefNum;
269 JackClientCloseRequest()
271 JackClientCloseRequest(int refnum): JackRequest(JackRequest::kClientClose), fRefNum(refnum)
274 int Read(JackChannelTransaction* trans)
276 return trans->Read(&fRefNum, sizeof(int));
279 int Write(JackChannelTransaction* trans)
281 CheckRes(JackRequest::Write(trans));
282 return trans->Write(&fRefNum, sizeof(int));
287 \brief Activate request.
290 struct JackActivateRequest : public JackRequest
293 int fRefNum;
294 int fState;
296 JackActivateRequest()
298 JackActivateRequest(int refnum, int state)
299 : JackRequest(JackRequest::kActivateClient), fRefNum(refnum), fState(state)
302 int Read(JackChannelTransaction* trans)
304 CheckRes(trans->Read(&fRefNum, sizeof(int)));
305 return trans->Read(&fState, sizeof(int));
308 int Write(JackChannelTransaction* trans)
310 CheckRes(JackRequest::Write(trans));
311 CheckRes(trans->Write(&fRefNum, sizeof(int)));
312 return trans->Write(&fState, sizeof(int));
318 \brief Deactivate request.
321 struct JackDeactivateRequest : public JackRequest
324 int fRefNum;
326 JackDeactivateRequest()
328 JackDeactivateRequest(int refnum): JackRequest(JackRequest::kDeactivateClient), fRefNum(refnum)
331 int Read(JackChannelTransaction* trans)
333 return trans->Read(&fRefNum, sizeof(int));
336 int Write(JackChannelTransaction* trans)
338 CheckRes(JackRequest::Write(trans));
339 return trans->Write(&fRefNum, sizeof(int));
345 \brief PortRegister request.
348 struct JackPortRegisterRequest : public JackRequest
351 int fRefNum;
352 char fName[JACK_PORT_NAME_SIZE + 1];
353 char fPortType[JACK_PORT_TYPE_SIZE + 1];
354 unsigned int fFlags;
355 unsigned int fBufferSize;
357 JackPortRegisterRequest()
359 JackPortRegisterRequest(int refnum, const char* name, const char* port_type, unsigned int flags, unsigned int buffer_size)
360 : JackRequest(JackRequest::kRegisterPort), fRefNum(refnum), fFlags(flags), fBufferSize(buffer_size)
362 strcpy(fName, name);
363 strcpy(fPortType, port_type);
366 int Read(JackChannelTransaction* trans)
368 CheckRes(trans->Read(&fRefNum, sizeof(int)));
369 CheckRes(trans->Read(&fName, JACK_PORT_NAME_SIZE + 1));
370 CheckRes(trans->Read(&fPortType, JACK_PORT_TYPE_SIZE + 1));
371 CheckRes(trans->Read(&fFlags, sizeof(unsigned int)));
372 CheckRes(trans->Read(&fBufferSize, sizeof(unsigned int)));
373 return 0;
376 int Write(JackChannelTransaction* trans)
378 CheckRes(JackRequest::Write(trans));
379 CheckRes(trans->Write(&fRefNum, sizeof(int)));
380 CheckRes(trans->Write(&fName, JACK_PORT_NAME_SIZE + 1));
381 CheckRes(trans->Write(&fPortType, JACK_PORT_TYPE_SIZE + 1));
382 CheckRes(trans->Write(&fFlags, sizeof(unsigned int)));
383 CheckRes(trans->Write(&fBufferSize, sizeof(unsigned int)));
384 return 0;
389 \brief PortRegister result.
392 struct JackPortRegisterResult : public JackResult
395 jack_port_id_t fPortIndex;
397 JackPortRegisterResult(): JackResult(), fPortIndex(NO_PORT)
400 int Read(JackChannelTransaction* trans)
402 CheckRes(JackResult::Read(trans));
403 return trans->Read(&fPortIndex, sizeof(jack_port_id_t));
406 int Write(JackChannelTransaction* trans)
408 CheckRes(JackResult::Write(trans));
409 return trans->Write(&fPortIndex, sizeof(jack_port_id_t));
414 \brief PortUnregister request.
417 struct JackPortUnRegisterRequest : public JackRequest
420 int fRefNum;
421 jack_port_id_t fPortIndex;
423 JackPortUnRegisterRequest()
425 JackPortUnRegisterRequest(int refnum, jack_port_id_t index)
426 : JackRequest(JackRequest::kUnRegisterPort), fRefNum(refnum), fPortIndex(index)
429 int Read(JackChannelTransaction* trans)
431 CheckRes(trans->Read(&fRefNum, sizeof(int)));
432 CheckRes(trans->Read(&fPortIndex, sizeof(jack_port_id_t)));
433 return 0;
436 int Write(JackChannelTransaction* trans)
438 CheckRes(JackRequest::Write(trans));
439 CheckRes(trans->Write(&fRefNum, sizeof(int)));
440 CheckRes(trans->Write(&fPortIndex, sizeof(jack_port_id_t)));
441 return 0;
446 \brief PortConnectName request.
449 struct JackPortConnectNameRequest : public JackRequest
452 int fRefNum;
453 char fSrc[JACK_PORT_NAME_SIZE + 1];
454 char fDst[JACK_PORT_NAME_SIZE + 1];
456 JackPortConnectNameRequest()
458 JackPortConnectNameRequest(int refnum, const char* src_name, const char* dst_name)
459 : JackRequest(JackRequest::kConnectNamePorts), fRefNum(refnum)
461 strcpy(fSrc, src_name);
462 strcpy(fDst, dst_name);
465 int Read(JackChannelTransaction* trans)
467 CheckRes(trans->Read(&fRefNum, sizeof(int)));
468 CheckRes(trans->Read(&fSrc, JACK_PORT_NAME_SIZE + 1));
469 CheckRes(trans->Read(&fDst, JACK_PORT_NAME_SIZE + 1));
470 return 0;
474 int Write(JackChannelTransaction* trans)
476 CheckRes(JackRequest::Write(trans));
477 CheckRes(trans->Write(&fRefNum, sizeof(int)));
478 CheckRes(trans->Write(&fSrc, JACK_PORT_NAME_SIZE + 1));
479 CheckRes(trans->Write(&fDst, JACK_PORT_NAME_SIZE + 1));
480 return 0;
485 \brief PortDisconnectName request.
488 struct JackPortDisconnectNameRequest : public JackRequest
491 int fRefNum;
492 char fSrc[JACK_PORT_NAME_SIZE + 1];
493 char fDst[JACK_PORT_NAME_SIZE + 1];
495 JackPortDisconnectNameRequest()
497 JackPortDisconnectNameRequest(int refnum, const char* src_name, const char* dst_name)
498 : JackRequest(JackRequest::kDisconnectNamePorts), fRefNum(refnum)
500 strcpy(fSrc, src_name);
501 strcpy(fDst, dst_name);
504 int Read(JackChannelTransaction* trans)
506 CheckRes(trans->Read(&fRefNum, sizeof(int)));
507 CheckRes(trans->Read(&fSrc, JACK_PORT_NAME_SIZE + 1));
508 CheckRes(trans->Read(&fDst, JACK_PORT_NAME_SIZE + 1));
509 return 0;
512 int Write(JackChannelTransaction* trans)
514 CheckRes(JackRequest::Write(trans));
515 CheckRes(trans->Write(&fRefNum, sizeof(int)));
516 CheckRes(trans->Write(&fSrc, JACK_PORT_NAME_SIZE + 1));
517 CheckRes(trans->Write(&fDst, JACK_PORT_NAME_SIZE + 1));
518 return 0;
523 \brief PortConnect request.
526 struct JackPortConnectRequest : public JackRequest
529 int fRefNum;
530 jack_port_id_t fSrc;
531 jack_port_id_t fDst;
533 JackPortConnectRequest()
535 JackPortConnectRequest(int refnum, jack_port_id_t src, jack_port_id_t dst)
536 : JackRequest(JackRequest::kConnectPorts), fRefNum(refnum), fSrc(src), fDst(dst)
539 int Read(JackChannelTransaction* trans)
541 CheckRes(trans->Read(&fRefNum, sizeof(int)));
542 CheckRes(trans->Read(&fSrc, sizeof(jack_port_id_t)));
543 CheckRes(trans->Read(&fDst, sizeof(jack_port_id_t)));
544 return 0;
547 int Write(JackChannelTransaction* trans)
549 CheckRes(JackRequest::Write(trans));
550 CheckRes(trans->Write(&fRefNum, sizeof(int)));
551 CheckRes(trans->Write(&fSrc, sizeof(jack_port_id_t)));
552 CheckRes(trans->Write(&fDst, sizeof(jack_port_id_t)));
553 return 0;
559 \brief PortDisconnect request.
562 struct JackPortDisconnectRequest : public JackRequest
565 int fRefNum;
566 jack_port_id_t fSrc;
567 jack_port_id_t fDst;
569 JackPortDisconnectRequest()
571 JackPortDisconnectRequest(int refnum, jack_port_id_t src, jack_port_id_t dst)
572 : JackRequest(JackRequest::kDisconnectPorts), fRefNum(refnum), fSrc(src), fDst(dst)
575 int Read(JackChannelTransaction* trans)
577 CheckRes(trans->Read(&fRefNum, sizeof(int)));
578 CheckRes(trans->Read(&fSrc, sizeof(jack_port_id_t)));
579 CheckRes(trans->Read(&fDst, sizeof(jack_port_id_t)));
580 return 0;
583 int Write(JackChannelTransaction* trans)
585 CheckRes(JackRequest::Write(trans));
586 CheckRes(trans->Write(&fRefNum, sizeof(int)));
587 CheckRes(trans->Write(&fSrc, sizeof(jack_port_id_t)));
588 CheckRes(trans->Write(&fDst, sizeof(jack_port_id_t)));
589 return 0;
595 \brief PortRename request.
598 struct JackPortRenameRequest : public JackRequest
601 int fRefNum;
602 jack_port_id_t fPort;
603 char fName[JACK_PORT_NAME_SIZE + 1];
605 JackPortRenameRequest()
607 JackPortRenameRequest(int refnum, jack_port_id_t port, const char* name)
608 : JackRequest(JackRequest::kPortRename), fRefNum(refnum), fPort(port)
610 strcpy(fName, name);
613 int Read(JackChannelTransaction* trans)
615 CheckRes(trans->Read(&fRefNum, sizeof(int)));
616 CheckRes(trans->Read(&fPort, sizeof(jack_port_id_t)));
617 CheckRes(trans->Read(&fName, JACK_PORT_NAME_SIZE + 1));
618 return 0;
621 int Write(JackChannelTransaction* trans)
623 CheckRes(JackRequest::Write(trans));
624 CheckRes(trans->Write(&fRefNum, sizeof(int)));
625 CheckRes(trans->Write(&fPort, sizeof(jack_port_id_t)));
626 CheckRes(trans->Write(&fName, JACK_PORT_NAME_SIZE + 1));
627 return 0;
633 \brief SetBufferSize request.
636 struct JackSetBufferSizeRequest : public JackRequest
639 jack_nframes_t fBufferSize;
641 JackSetBufferSizeRequest()
643 JackSetBufferSizeRequest(jack_nframes_t buffer_size)
644 : JackRequest(JackRequest::kSetBufferSize), fBufferSize(buffer_size)
647 int Read(JackChannelTransaction* trans)
649 return trans->Read(&fBufferSize, sizeof(jack_nframes_t));
652 int Write(JackChannelTransaction* trans)
654 CheckRes(JackRequest::Write(trans));
655 return trans->Write(&fBufferSize, sizeof(jack_nframes_t));
660 \brief SetFreeWheel request.
663 struct JackSetFreeWheelRequest : public JackRequest
666 int fOnOff;
668 JackSetFreeWheelRequest()
670 JackSetFreeWheelRequest(int onoff)
671 : JackRequest(JackRequest::kSetFreeWheel), fOnOff(onoff)
674 int Read(JackChannelTransaction* trans)
676 return trans->Read(&fOnOff, sizeof(int));
679 int Write(JackChannelTransaction* trans)
681 CheckRes(JackRequest::Write(trans));
682 return trans->Write(&fOnOff, sizeof(int));
687 \brief ReleaseTimebase request.
690 struct JackReleaseTimebaseRequest : public JackRequest
693 int fRefNum;
695 JackReleaseTimebaseRequest()
697 JackReleaseTimebaseRequest(int refnum)
698 : JackRequest(JackRequest::kReleaseTimebase), fRefNum(refnum)
701 int Read(JackChannelTransaction* trans)
703 return trans->Read(&fRefNum, sizeof(int));
706 int Write(JackChannelTransaction* trans)
708 CheckRes(JackRequest::Write(trans));
709 return trans->Write(&fRefNum, sizeof(int));
714 \brief SetTimebaseCallback request.
717 struct JackSetTimebaseCallbackRequest : public JackRequest
720 int fRefNum;
721 int fConditionnal;
723 JackSetTimebaseCallbackRequest()
725 JackSetTimebaseCallbackRequest(int refnum, int conditional)
726 : JackRequest(JackRequest::kSetTimebaseCallback), fRefNum(refnum), fConditionnal(conditional)
729 int Read(JackChannelTransaction* trans)
731 CheckRes(trans->Read(&fRefNum, sizeof(int)));
732 return trans->Read(&fConditionnal, sizeof(int));
735 int Write(JackChannelTransaction* trans)
737 CheckRes(JackRequest::Write(trans));
738 CheckRes(trans->Write(&fRefNum, sizeof(int)));
739 return trans->Write(&fConditionnal, sizeof(int));
744 \brief GetInternalClientName request.
747 struct JackGetInternalClientNameRequest : public JackRequest
750 int fRefNum;
751 int fIntRefNum;
753 JackGetInternalClientNameRequest()
755 JackGetInternalClientNameRequest(int refnum, int int_ref)
756 : JackRequest(JackRequest::kGetInternalClientName), fRefNum(refnum), fIntRefNum(int_ref)
759 int Read(JackChannelTransaction* trans)
761 CheckRes(trans->Read(&fRefNum, sizeof(int)));
762 return trans->Read(&fIntRefNum, sizeof(int));
765 int Write(JackChannelTransaction* trans)
767 CheckRes(JackRequest::Write(trans));
768 CheckRes(trans->Write(&fRefNum, sizeof(int)));
769 return trans->Write(&fIntRefNum, sizeof(int));
774 \brief GetInternalClient result.
777 struct JackGetInternalClientNameResult : public JackResult
780 char fName[JACK_CLIENT_NAME_SIZE + 1];
782 JackGetInternalClientNameResult(): JackResult()
784 JackGetInternalClientNameResult(int32_t result, const char* name)
785 : JackResult(result)
787 snprintf(fName, sizeof(fName), "%s", name);
790 int Read(JackChannelTransaction* trans)
792 CheckRes(JackResult::Read(trans));
793 CheckRes(trans->Read(&fName, JACK_CLIENT_NAME_SIZE + 1));
794 return 0;
797 int Write(JackChannelTransaction* trans)
799 CheckRes(JackResult::Write(trans));
800 CheckRes(trans->Write(&fName, JACK_CLIENT_NAME_SIZE + 1));
801 return 0;
806 \brief InternalClientHandle request.
809 struct JackInternalClientHandleRequest : public JackRequest
812 int fRefNum;
813 char fName[JACK_CLIENT_NAME_SIZE + 1];
815 JackInternalClientHandleRequest()
817 JackInternalClientHandleRequest(int refnum, const char* client_name)
818 : JackRequest(JackRequest::kInternalClientHandle), fRefNum(refnum)
820 snprintf(fName, sizeof(fName), "%s", client_name);
823 int Read(JackChannelTransaction* trans)
825 CheckRes(trans->Read(&fRefNum, sizeof(int)));
826 return trans->Read(&fName, JACK_CLIENT_NAME_SIZE + 1);
829 int Write(JackChannelTransaction* trans)
831 CheckRes(JackRequest::Write(trans));
832 CheckRes(trans->Write(&fRefNum, sizeof(int)));
833 return trans->Write(&fName, JACK_CLIENT_NAME_SIZE + 1);
838 \brief InternalClientHandle result.
841 struct JackInternalClientHandleResult : public JackResult
844 int fStatus;
845 int fIntRefNum;
847 JackInternalClientHandleResult(): JackResult()
849 JackInternalClientHandleResult(int32_t result, int status, int int_ref)
850 : JackResult(result), fStatus(status), fIntRefNum(int_ref)
853 int Read(JackChannelTransaction* trans)
855 CheckRes(JackResult::Read(trans));
856 CheckRes(trans->Read(&fStatus, sizeof(int)));
857 CheckRes(trans->Read(&fIntRefNum, sizeof(int)));
858 return 0;
861 int Write(JackChannelTransaction* trans)
863 CheckRes(JackResult::Write(trans));
864 CheckRes(trans->Write(&fStatus, sizeof(int)));
865 CheckRes(trans->Write(&fIntRefNum, sizeof(int)));
866 return 0;
871 \brief InternalClientLoad request.
874 struct JackInternalClientLoadRequest : public JackRequest
877 #ifndef MAX_PATH
878 #define MAX_PATH 256
879 #endif
881 int fRefNum;
882 char fName[JACK_CLIENT_NAME_SIZE + 1];
883 char fDllName[MAX_PATH + 1];
884 char fLoadInitName[JACK_LOAD_INIT_LIMIT + 1];
885 int fOptions;
887 JackInternalClientLoadRequest()
889 JackInternalClientLoadRequest(int refnum, const char* client_name, const char* so_name, const char* objet_data, int options)
890 : JackRequest(JackRequest::kInternalClientLoad), fRefNum(refnum), fOptions(options)
892 snprintf(fName, sizeof(fName), "%s", client_name);
893 snprintf(fDllName, sizeof(fDllName), "%s", so_name);
894 snprintf(fLoadInitName, sizeof(fLoadInitName), "%s", objet_data);
897 int Read(JackChannelTransaction* trans)
899 CheckRes(trans->Read(&fRefNum, sizeof(int)));
900 CheckRes(trans->Read(&fName, JACK_CLIENT_NAME_SIZE + 1));
901 CheckRes(trans->Read(&fDllName, MAX_PATH + 1));
902 CheckRes(trans->Read(&fLoadInitName, JACK_LOAD_INIT_LIMIT + 1));
903 return trans->Read(&fOptions, sizeof(int));
906 int Write(JackChannelTransaction* trans)
908 CheckRes(JackRequest::Write(trans));
909 CheckRes(trans->Write(&fRefNum, sizeof(int)));
910 CheckRes(trans->Write(&fName, JACK_CLIENT_NAME_SIZE + 1));
911 CheckRes(trans->Write(&fDllName, MAX_PATH + 1));
912 CheckRes(trans->Write(&fLoadInitName, JACK_LOAD_INIT_LIMIT + 1));
913 return trans->Write(&fOptions, sizeof(int));
918 \brief InternalClientLoad result.
921 struct JackInternalClientLoadResult : public JackResult
924 int fStatus;
925 int fIntRefNum;
927 JackInternalClientLoadResult(): JackResult()
929 JackInternalClientLoadResult(int32_t result, int status, int int_ref)
930 : JackResult(result), fStatus(status), fIntRefNum(int_ref)
933 int Read(JackChannelTransaction* trans)
935 CheckRes(JackResult::Read(trans));
936 CheckRes(trans->Read(&fStatus, sizeof(int)));
937 CheckRes(trans->Read(&fIntRefNum, sizeof(int)));
938 return 0;
941 int Write(JackChannelTransaction* trans)
943 CheckRes(JackResult::Write(trans));
944 CheckRes(trans->Write(&fStatus, sizeof(int)));
945 CheckRes(trans->Write(&fIntRefNum, sizeof(int)));
946 return 0;
951 \brief InternalClientUnload request.
954 struct JackInternalClientUnloadRequest : public JackRequest
957 int fRefNum;
958 int fIntRefNum;
960 JackInternalClientUnloadRequest()
962 JackInternalClientUnloadRequest(int refnum, int int_ref)
963 : JackRequest(JackRequest::kInternalClientUnload), fRefNum(refnum), fIntRefNum(int_ref)
966 int Read(JackChannelTransaction* trans)
968 CheckRes(trans->Read(&fRefNum, sizeof(int)));
969 return trans->Read(&fIntRefNum, sizeof(int));
972 int Write(JackChannelTransaction* trans)
974 CheckRes(JackRequest::Write(trans));
975 CheckRes(trans->Write(&fRefNum, sizeof(int)));
976 return trans->Write(&fIntRefNum, sizeof(int));
982 \brief InternalClientLoad result.
985 struct JackInternalClientUnloadResult : public JackResult
988 int fStatus;
990 JackInternalClientUnloadResult(): JackResult()
992 JackInternalClientUnloadResult(int32_t result, int status)
993 : JackResult(result), fStatus(status)
996 int Read(JackChannelTransaction* trans)
998 CheckRes(JackResult::Read(trans));
999 CheckRes(trans->Read(&fStatus, sizeof(int)));
1000 return 0;
1003 int Write(JackChannelTransaction* trans)
1005 CheckRes(JackResult::Write(trans));
1006 CheckRes(trans->Write(&fStatus, sizeof(int)));
1007 return 0;
1012 \brief ClientNotification request.
1015 struct JackClientNotificationRequest : public JackRequest
1018 int fRefNum;
1019 int fNotify;
1020 int fValue;
1022 JackClientNotificationRequest()
1024 JackClientNotificationRequest(int refnum, int notify, int value)
1025 : JackRequest(JackRequest::kNotification), fRefNum(refnum), fNotify(notify), fValue(value)
1028 int Read(JackChannelTransaction* trans)
1030 CheckRes(trans->Read(&fRefNum, sizeof(int)));
1031 CheckRes(trans->Read(&fNotify, sizeof(int)));
1032 CheckRes(trans->Read(&fValue, sizeof(int)));
1033 return 0;
1036 int Write(JackChannelTransaction* trans)
1038 CheckRes(JackRequest::Write(trans));
1039 CheckRes(trans->Write(&fRefNum, sizeof(int)));
1040 CheckRes(trans->Write(&fNotify, sizeof(int)));
1041 CheckRes(trans->Write(&fValue, sizeof(int)));
1042 return 0;
1048 \brief ClientNotification.
1051 struct JackClientNotification
1053 char fName[JACK_CLIENT_NAME_SIZE + 1];
1054 int fRefNum;
1055 int fNotify;
1056 int fValue1;
1057 int fValue2;
1058 int fSync;
1060 JackClientNotification(): fNotify(-1), fValue1(-1), fValue2(-1)
1062 JackClientNotification(const char* name, int refnum, int notify, int sync, int value1, int value2)
1063 : fRefNum(refnum), fNotify(notify), fValue1(value1), fValue2(value2), fSync(sync)
1065 snprintf(fName, sizeof(fName), "%s", name);
1068 int Read(JackChannelTransaction* trans)
1070 CheckRes(trans->Read(&fName, JACK_CLIENT_NAME_SIZE + 1));
1071 CheckRes(trans->Read(&fRefNum, sizeof(int)));
1072 CheckRes(trans->Read(&fNotify, sizeof(int)));
1073 CheckRes(trans->Read(&fValue1, sizeof(int)));
1074 CheckRes(trans->Read(&fValue2, sizeof(int)));
1075 CheckRes(trans->Read(&fSync, sizeof(int)));
1076 return 0;
1079 int Write(JackChannelTransaction* trans)
1081 CheckRes(trans->Write(&fName, JACK_CLIENT_NAME_SIZE + 1));
1082 CheckRes(trans->Write(&fRefNum, sizeof(int)));
1083 CheckRes(trans->Write(&fNotify, sizeof(int)));
1084 CheckRes(trans->Write(&fValue1, sizeof(int)));
1085 CheckRes(trans->Write(&fValue2, sizeof(int)));
1086 CheckRes(trans->Write(&fSync, sizeof(int)));
1087 return 0;
1092 } // end of namespace
1094 #endif