00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "JackMachNotifyChannel.h"
00021 #include "JackRPCClient.h"
00022 #include "JackError.h"
00023 #include "JackConstants.h"
00024 #include <stdio.h>
00025
00026 namespace Jack
00027 {
00028
00029
00030
00031 int JackMachNotifyChannel::Open(const char* name)
00032 {
00033 jack_log("JackMachNotifyChannel::Open name = %s", name);
00034
00035 char buf[256];
00036 snprintf(buf, sizeof(buf) - 1, "%s:%s", jack_client_entry, name);
00037
00038
00039 if (!fClientPort.ConnectPort(buf)) {
00040 jack_error("Cannot connect client port");
00041 return -1;
00042 } else {
00043 return 0;
00044 }
00045 }
00046
00047 void JackMachNotifyChannel::Close()
00048 {
00049 fClientPort.DisconnectPort();
00050 }
00051
00052 void JackMachNotifyChannel::ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2, int* result)
00053 {
00054 kern_return_t res = (sync)
00055 ? rpc_jack_client_sync_notify(fClientPort.GetPort(), refnum, (char*)name, notify, (char*)message, value1, value2, result)
00056 : rpc_jack_client_async_notify(fClientPort.GetPort(), refnum, (char*)name, notify, (char*)message, value1, value2);
00057 if (res == KERN_SUCCESS) {
00058 *result = 0;
00059 } else {
00060 jack_error("JackMachNotifyChannel::ClientNotify: name = %s notify = %ld err = %s", name, notify, mach_error_string(res));
00061 *result = -1;
00062 }
00063 }
00064
00065 }
00066
00067