21 #include "JackWinEvent.h"
22 #include "JackTools.h"
23 #include "JackError.h"
32 void JackWinEvent::BuildName(
const char* name,
const char* server_name,
char* res,
int size)
34 snprintf(res, size,
"jack_pipe.%s_%s", server_name, name);
37 bool JackWinEvent::Signal()
45 if (!(res = SetEvent(fEvent))) {
46 jack_error(
"JackWinEvent::Signal name = %s err = %ld", fName, GetLastError());
52 bool JackWinEvent::SignalAll()
60 if (!(res = SetEvent(fEvent))) {
61 jack_error(
"JackWinEvent::SignalAll name = %s err = %ld", fName, GetLastError());
67 bool JackWinEvent::Wait()
71 if ((res = WaitForSingleObject(fEvent, INFINITE)) == WAIT_TIMEOUT) {
72 jack_error(
"JackWinEvent::TimedWait name = %s time_out", fName);
75 return (res == WAIT_OBJECT_0);
78 bool JackWinEvent::TimedWait(
long usec)
82 if ((res = WaitForSingleObject(fEvent, usec / 1000)) == WAIT_TIMEOUT) {
83 jack_error(
"JackWinEvent::TimedWait name = %s time_out", fName);
86 return (res == WAIT_OBJECT_0);
90 bool JackWinEvent::ConnectInput(
const char* name,
const char* server_name)
92 BuildName(name, server_name, fName,
sizeof(fName));
93 jack_log(
"JackWinEvent::Connect %s", fName);
97 jack_log(
"Already connected name = %s", name);
101 if ((fEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, fName)) == NULL) {
102 jack_error(
"Connect: can't check in named event name = %s err = %ld", fName, GetLastError());
109 bool JackWinEvent::Connect(
const char* name,
const char* server_name)
111 return ConnectInput(name, server_name);
114 bool JackWinEvent::ConnectOutput(
const char* name,
const char* server_name)
116 return ConnectInput(name, server_name);
119 bool JackWinEvent::Disconnect()
122 jack_log(
"JackWinEvent::Disconnect %s", fName);
131 bool JackWinEvent::Allocate(
const char* name,
const char* server_name,
int value)
133 BuildName(name, server_name, fName,
sizeof(fName));
134 jack_log(
"JackWinEvent::Allocate name = %s val = %ld", fName, value);
137 if ((fEvent = CreateEvent(NULL, FALSE, FALSE, fName)) == NULL) {
138 jack_error(
"Allocate: can't check in named event name = %s err = %ld", fName, GetLastError());
140 }
else if (GetLastError() == ERROR_ALREADY_EXISTS) {
141 jack_error(
"Allocate: named event already exist name = %s", fName);
150 void JackWinEvent::Destroy()
152 if (fEvent != NULL) {
153 jack_log(
"JackWinEvent::Destroy %s", fName);
157 jack_error(
"JackWinEvent::Destroy synchro == NULL");
SERVER_EXPORT void jack_error(const char *fmt,...)
SERVER_EXPORT void jack_log(const char *fmt,...)