00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "JackSocketServerNotifyChannel.h"
00021 #include "JackError.h"
00022 #include "JackRequest.h"
00023 #include "JackConstants.h"
00024 #include "JackNotification.h"
00025 #include "JackServerGlobals.h"
00026
00027 namespace Jack
00028 {
00029
00030 int JackSocketServerNotifyChannel::Open(const char* server_name)
00031 {
00032 if (fRequestSocket.Connect(jack_server_dir, server_name, 0) < 0) {
00033 jack_error("Cannot connect to server socket");
00034 return -1;
00035 } else {
00036 fRequestSocket.SetNonBlocking(true);
00037 JackServerGlobals::fRTNotificationSocket = fRequestSocket.GetFd();
00038 return 0;
00039 }
00040 }
00041
00042 void JackSocketServerNotifyChannel::Close()
00043 {
00044 fRequestSocket.Close();
00045 }
00046
00047
00048
00049
00050
00051
00052
00053 void JackSocketServerNotifyChannel::Notify(int refnum, int notify, int value)
00054 {
00055 JackClientNotificationRequest req(refnum, notify, value);
00056 if (req.Write(&fRequestSocket) < 0) {
00057 jack_error("Could not write request ref = %d notify = %d", refnum, notify);
00058 }
00059 }
00060
00061 void JackSocketServerNotifyChannel::NotifyQuit()
00062 {
00063 JackClientNotificationRequest req(-1, kQUIT, 0);
00064 if (req.Write(&fRequestSocket) < 0) {
00065 jack_error("Could not write request ref = %d notify = %d", -1, kQUIT);
00066 }
00067 }
00068
00069
00070 }
00071
00072