author | zecke <zecke> | 2003-02-05 08:54:58 (UTC) |
---|---|---|
committer | zecke <zecke> | 2003-02-05 08:54:58 (UTC) |
commit | bbb3690f12191763a407e6a0edd521113b3c25ac (patch) (unidiff) | |
tree | 39f90d71c7f085f5722382db4a5577bbda2e1618 /x11/ipc/server/ocopserver.cpp | |
parent | 97b96e141fca844317e59ca5b99c1bf5fa52b1f0 (diff) | |
download | opie-bbb3690f12191763a407e6a0edd521113b3c25ac.zip opie-bbb3690f12191763a407e6a0edd521113b3c25ac.tar.gz opie-bbb3690f12191763a407e6a0edd521113b3c25ac.tar.bz2 |
Fix the IPC server and client
registering channel is done locally with refcounts
if the channel is already registered globally
Fix some sizes to allow proper communication..
Diffstat (limited to 'x11/ipc/server/ocopserver.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | x11/ipc/server/ocopserver.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/x11/ipc/server/ocopserver.cpp b/x11/ipc/server/ocopserver.cpp index 0f818b7..ee5ea18 100644 --- a/x11/ipc/server/ocopserver.cpp +++ b/x11/ipc/server/ocopserver.cpp | |||
@@ -164,13 +164,13 @@ void OCopServer::newOnClient( int fd ) { | |||
164 | * | 164 | * |
165 | */ | 165 | */ |
166 | if (head.magic == 47 ) { | 166 | if (head.magic == 47 ) { |
167 | // qWarning("magic match"); | 167 | // qWarning("magic match"); |
168 | QCString channel( head.chlen+1 ); | 168 | QCString channel( head.chlen+1 ); |
169 | QCString func( head.funclen+1 ); | 169 | QCString func( head.funclen+1 ); |
170 | QByteArray data ( head.datalen ); | 170 | QByteArray data ( head.datalen+1 ); |
171 | 171 | ||
172 | /* | 172 | /* |
173 | * we do not check for errors | 173 | * we do not check for errors |
174 | */ | 174 | */ |
175 | // qWarning("read "); | 175 | // qWarning("read "); |
176 | int s = read(fd, channel.data(), head.chlen ); | 176 | int s = read(fd, channel.data(), head.chlen ); |
@@ -297,13 +297,13 @@ void OCopServer::dispatch( const OCOPPacket& packet, int sourceFD ) { | |||
297 | case OCOPPacket::Return: | 297 | case OCOPPacket::Return: |
298 | break; | 298 | break; |
299 | /* not implemented :( */ | 299 | /* not implemented :( */ |
300 | case OCOPPacket::Signal: | 300 | case OCOPPacket::Signal: |
301 | break; | 301 | break; |
302 | case OCOPPacket::IsRegistered: | 302 | case OCOPPacket::IsRegistered: |
303 | qWarning("IsRegistered"); | 303 | qWarning("Server:IsRegistered %s", packet.channel().data() ); |
304 | isRegistered( packet.channel(), sourceFD ); | 304 | isRegistered( packet.channel(), sourceFD ); |
305 | break; | 305 | break; |
306 | }; | 306 | }; |
307 | } | 307 | } |
308 | void OCopServer::errorOnServer() { | 308 | void OCopServer::errorOnServer() { |
309 | /* | 309 | /* |
@@ -362,13 +362,13 @@ void OCopServer::delChannel( const QCString& channel, | |||
362 | m_channels.replace( str, ints ); | 362 | m_channels.replace( str, ints ); |
363 | } | 363 | } |
364 | qWarning(" channel count is now %d", ints.count() ); | 364 | qWarning(" channel count is now %d", ints.count() ); |
365 | } | 365 | } |
366 | } | 366 | } |
367 | void OCopServer::isRegistered( const QCString& channel, int fd) { | 367 | void OCopServer::isRegistered( const QCString& channel, int fd) { |
368 | // qWarning("isRegistered"); | 368 | qWarning("Server:isRegistered %s", channel.data() ); |
369 | OCOPHead head; | 369 | OCOPHead head; |
370 | QCString func(2); | 370 | QCString func(2); |
371 | 371 | ||
372 | memset(&head, 0, sizeof(head ) ); | 372 | memset(&head, 0, sizeof(head ) ); |
373 | head.magic = 47; | 373 | head.magic = 47; |
374 | head.type = OCOPPacket::IsRegistered; | 374 | head.type = OCOPPacket::IsRegistered; |
@@ -376,14 +376,16 @@ void OCopServer::isRegistered( const QCString& channel, int fd) { | |||
376 | head.funclen = func.size(); | 376 | head.funclen = func.size(); |
377 | head.datalen = 0; | 377 | head.datalen = 0; |
378 | 378 | ||
379 | if ( isChannelRegistered( channel ) ) { | 379 | if ( isChannelRegistered( channel ) ) { |
380 | //is registered | 380 | //is registered |
381 | func[0] = 1; | 381 | func[0] = 1; |
382 | qWarning("Server:Channel is Registered %d", head.chlen); | ||
382 | }else{ | 383 | }else{ |
383 | func[0] = 0; | 384 | func[0] = 0; |
385 | qWarning("Server:Channel is NotRegistered"); | ||
384 | } | 386 | } |
385 | 387 | ||
386 | /** | 388 | /** |
387 | * write the head | 389 | * write the head |
388 | * and then channel | 390 | * and then channel |
389 | * success/failure inside func | 391 | * success/failure inside func |
@@ -398,12 +400,13 @@ QValueList<int> OCopServer::clients( const QCString& channel ) { | |||
398 | void OCopServer::call( const OCOPPacket& p, int ) { | 400 | void OCopServer::call( const OCOPPacket& p, int ) { |
399 | QValueList<int> cli = clients( p.channel() ); | 401 | QValueList<int> cli = clients( p.channel() ); |
400 | QValueList<int>::Iterator it; | 402 | QValueList<int>::Iterator it; |
401 | 403 | ||
402 | OCOPHead head = p.head(); | 404 | OCOPHead head = p.head(); |
403 | for (it = cli.begin(); it != cli.end(); ++it ) { | 405 | for (it = cli.begin(); it != cli.end(); ++it ) { |
406 | qWarning("Server:calling %d %s %s", (*it), p.channel().data(), p.header().data() ); | ||
404 | write( (*it), &head, sizeof(head ) ); | 407 | write( (*it), &head, sizeof(head ) ); |
405 | /* expl. shared! */ | 408 | /* expl. shared! */ |
406 | write( (*it), p.channel().data(), p.channel().size() ); | 409 | write( (*it), p.channel().data(), p.channel().size() ); |
407 | write( (*it), p.header().data(), p.header().size() ); | 410 | write( (*it), p.header().data(), p.header().size() ); |
408 | write( (*it), p.content().data(), p.content().size() ); | 411 | write( (*it), p.content().data(), p.content().size() ); |
409 | }; | 412 | }; |