summaryrefslogtreecommitdiff
path: root/x11/ipc/client/ocopclient.cpp
Unidiff
Diffstat (limited to 'x11/ipc/client/ocopclient.cpp') (more/less context) (show whitespace changes)
-rw-r--r--x11/ipc/client/ocopclient.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/x11/ipc/client/ocopclient.cpp b/x11/ipc/client/ocopclient.cpp
index 6085481..91827e7 100644
--- a/x11/ipc/client/ocopclient.cpp
+++ b/x11/ipc/client/ocopclient.cpp
@@ -78,79 +78,87 @@ void OCOPClient::newData() {
78 case OCOPPacket::Register: 78 case OCOPPacket::Register:
79 case OCOPPacket::Unregister: 79 case OCOPPacket::Unregister:
80 case OCOPPacket::Method: 80 case OCOPPacket::Method:
81 case OCOPPacket::RegisterChannel: 81 case OCOPPacket::RegisterChannel:
82 case OCOPPacket::UnregisterChannel: 82 case OCOPPacket::UnregisterChannel:
83 case OCOPPacket::Return: 83 case OCOPPacket::Return:
84 case OCOPPacket::Signal: 84 case OCOPPacket::Signal:
85 /* is Registered should be handled sync */ 85 /* is Registered should be handled sync */
86 case OCOPPacket::IsRegistered: 86 case OCOPPacket::IsRegistered:
87 break; 87 break;
88 /* emit the signal */ 88 /* emit the signal */
89 case OCOPPacket::Call: 89 case OCOPPacket::Call:
90 emit called( pack.channel(), pack.header(), pack.content() ); 90 emit called( pack.channel(), pack.header(), pack.content() );
91 break; 91 break;
92 } 92 }
93} 93}
94OCOPPacket OCOPClient::packet() const{ 94OCOPPacket OCOPClient::packet() const{
95 QCString chan; 95 QCString chan;
96 QCString func; 96 QCString func;
97 QByteArray ar; 97 QByteArray ar;
98 OCOPHead head; 98 OCOPHead head;
99 memset(&head, 0, sizeof(head) ); 99 memset(&head, 0, sizeof(head) );
100 read(m_socket, &head, sizeof(head) ); 100 read(m_socket, &head, sizeof(head) );
101 if ( head.magic == 47 ) { 101 if ( head.magic == 47 ) {
102 qWarning("Client:Magic Match");
103 chan = QCString( head.chlen+1);
104 func = QCString( head.funclen+1 );
105 ar = QByteArray( head.datalen);
102 read(m_socket, chan.data(), head.chlen ); 106 read(m_socket, chan.data(), head.chlen );
103 read(m_socket, func.data(), head.funclen ); 107 read(m_socket, func.data(), head.funclen );
104 read(m_socket, ar.data(), head.datalen ); 108 read(m_socket, ar.data(), head.datalen );
109 qWarning("Client:%d %s",head.chlen,chan.data() );
105 } 110 }
106 OCOPPacket pack(head.type, chan, func, ar ); 111 OCOPPacket pack(head.type, chan, func, ar );
107 return pack; 112 return pack;
108} 113}
109/* 114/*
110 * we've blocking IO here on these sockets 115 * we've blocking IO here on these sockets
111 * so we send and go on read 116 * so we send and go on read
112 * this will be blocked 117 * this will be blocked
113 */ 118 */
114bool OCOPClient::isRegistered( const QCString& chan ) const{ 119bool OCOPClient::isRegistered( const QCString& chan ) const{
120 qWarning("OCopClient::isRegistered %s", chan.data() );
115 /* should I disconnect the socket notfier? */ 121 /* should I disconnect the socket notfier? */
116 OCOPPacket packe(OCOPPacket::IsRegistered, chan ); 122 OCOPPacket packe(OCOPPacket::IsRegistered, chan );
117 OCOPHead head = packe.head(); 123 OCOPHead head = packe.head();
118 write(m_socket, &head, sizeof(head) ); 124 write(m_socket, &head, sizeof(head) );
119 write(m_socket, chan.data(), chan.size() ); 125 write(m_socket, chan.data(), chan.size() );
120 /* block */ 126 /* block */
121 OCOPPacket pack = packet(); 127 OCOPPacket pack = packet();
128 qWarning("unblock %s %s", pack.channel().data(), chan.data() );
122 129
123 /* connect here again */ 130 /* connect here again */
124 if ( pack.channel() == chan ) { 131 if ( pack.channel() == chan ) {
125 QCString func = pack.header(); 132 QCString func = pack.header();
126 if (func[0] == 1 ) 133 if (func[0] == 1 )
127 return true; 134 return true;
128 } 135 }
129 136
130 return false; 137 return false;
131}; 138};
132void OCOPClient::send( const QCString& chan, const QCString& fu, const QByteArray& arr ) { 139void OCOPClient::send( const QCString& chan, const QCString& fu, const QByteArray& arr ) {
140 qWarning("ClientSending %s %s", chan.data(), fu.data() );
133 OCOPPacket pack(OCOPPacket::Call, chan, fu, arr ); 141 OCOPPacket pack(OCOPPacket::Call, chan, fu, arr );
134 call( pack ); 142 call( pack );
135} 143}
136void OCOPClient::addChannel(const QCString& channel) { 144void OCOPClient::addChannel(const QCString& channel) {
137 OCOPPacket pack(OCOPPacket::RegisterChannel, channel ); 145 OCOPPacket pack(OCOPPacket::RegisterChannel, channel );
138 call( pack ); 146 call( pack );
139} 147}
140void OCOPClient::delChannel(const QCString& chan ) { 148void OCOPClient::delChannel(const QCString& chan ) {
141 OCOPPacket pack(OCOPPacket::UnregisterChannel, chan ); 149 OCOPPacket pack(OCOPPacket::UnregisterChannel, chan );
142 call( pack ); 150 call( pack );
143} 151}
144void OCOPClient::call( const OCOPPacket& pack ) { 152void OCOPClient::call( const OCOPPacket& pack ) {
145 OCOPHead head = pack.head(); 153 OCOPHead head = pack.head();
146 write(m_socket, &head, sizeof(head) ); 154 write(m_socket, &head, sizeof(head) );
147 write(m_socket, pack.channel().data(), pack.channel().size() ); 155 write(m_socket, pack.channel().data(), pack.channel().size() );
148 write(m_socket, pack.header().data(), pack.header().size() ); 156 write(m_socket, pack.header().data(), pack.header().size() );
149 write(m_socket, pack.content().data(), pack.content().size() ); 157 write(m_socket, pack.content().data(), pack.content().size() );
150} 158}
151void OCOPClient::startUP() { 159void OCOPClient::startUP() {
152 qWarning("Start me up"); 160 qWarning("Start me up");
153 pid_t pi = fork(); 161 pid_t pi = fork();
154 if ( pi == 0 ) { 162 if ( pi == 0 ) {
155 setsid(); 163 setsid();
156 execlp("ocopserver", "ocopserver", NULL ); 164 execlp("ocopserver", "ocopserver", NULL );