summaryrefslogtreecommitdiff
path: root/x11/ipc/server/ocopserver.cpp
Unidiff
Diffstat (limited to 'x11/ipc/server/ocopserver.cpp') (more/less context) (show whitespace changes)
-rw-r--r--x11/ipc/server/ocopserver.cpp51
1 files changed, 31 insertions, 20 deletions
diff --git a/x11/ipc/server/ocopserver.cpp b/x11/ipc/server/ocopserver.cpp
index 4940cb8..0f818b7 100644
--- a/x11/ipc/server/ocopserver.cpp
+++ b/x11/ipc/server/ocopserver.cpp
@@ -165,5 +165,5 @@ void OCopServer::newOnClient( int fd ) {
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 );
@@ -173,13 +173,13 @@ void OCopServer::newOnClient( int fd ) {
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 );
177 s = read(fd, func.data(), head.funclen ); 177 s = read(fd, func.data(), head.funclen );
178 s = read(fd, data.data(), head.datalen ); 178 s = read(fd, data.data(), head.datalen );
179 qWarning("read"); 179// qWarning("read");
180 180
181 /* debug output */ 181 /* debug output */
182 qWarning("channel %s %d", channel.data(), head.chlen ); 182// qWarning("channel %s %d", channel.data(), head.chlen );
183 qWarning("func %s %d", func.data(), head.funclen ); 183// qWarning("func %s %d", func.data(), head.funclen );
184 /* debug end */ 184 /* debug end */
185 185
@@ -215,8 +215,4 @@ void OCopServer::deregisterClient(int fd ) {
215 QMap<int, OCOPClient>::Iterator it = m_clients.find( fd ); 215 QMap<int, OCOPClient>::Iterator it = m_clients.find( fd );
216 if (it != m_clients.end() ) { 216 if (it != m_clients.end() ) {
217 OCOPClient client = it.data();
218 delete client.notify;
219 m_clients.remove(fd );
220 close(fd );
221 /* 217 /*
222 * TIME_ME 218 * TIME_ME
@@ -234,5 +230,5 @@ void OCopServer::deregisterClient(int fd ) {
234 * The channel contains this fd 230 * The channel contains this fd
235 */ 231 */
236 qWarning("Channel %s", it2.key().data() ); 232 qWarning("Channel %s %d", it2.key().data(), it2.data().count() );
237 if ( it2.data().contains( fd ) ) { 233 if ( it2.data().contains( fd ) ) {
238 qWarning("contains"); 234 qWarning("contains");
@@ -242,5 +238,5 @@ void OCopServer::deregisterClient(int fd ) {
242 * remove channel or just replace 238 * remove channel or just replace
243 */ 239 */
244 if ( array.count() == 1 ) { 240 if ( array.count() == 1 || array.count() == 0) {
245 qWarning("Invalidate!"); 241 qWarning("Invalidate!");
246 /* is the list now invalidatet? */ 242 /* is the list now invalidatet? */
@@ -255,10 +251,16 @@ void OCopServer::deregisterClient(int fd ) {
255 goto repeatIt; 251 goto repeatIt;
256 }else{ 252 }else{
257 qWarning("removing"); 253 qWarning("removing count %d %d",fd, array.count() );
258 array.remove( fd ); 254 QValueList<int>::Iterator it3 = array.find( fd );
259 it2 = m_channels.replace( it2.key(), array ); 255 it3 = array.remove( it3 );
256 QCString key = it2.key().copy();
257 it2 = m_channels.replace( key, array );
260 } 258 }
261 } 259 }
262 } // off all channels 260 } // off all channels
261 OCOPClient client = it.data();
262 delete client.notify;
263 m_clients.remove(fd );
264 close(fd );
263 } 265 }
264 qWarning("clients are now at %d", m_clients.count() ); 266 qWarning("clients are now at %d", m_clients.count() );
@@ -328,12 +330,19 @@ void OCopServer::addChannel( const QCString& channel,
328 QMap<QCString, QValueList<int> >::Iterator it; 330 QMap<QCString, QValueList<int> >::Iterator it;
329 it = m_channels.find( channel ); 331 it = m_channels.find( channel );
330 332 if ( it != m_channels.end() ) {
331 /* could be empty */ 333 /* could be empty */
332 QValueList<int> list = it.data(); 334 QValueList<int> list = it.data();
333 list.append( fd ); 335 list.append( fd );
336 qWarning("count is now in addChannel %d %s", list.count(), channel.data() );
334 it = m_channels.replace( channel, list ); 337 it = m_channels.replace( channel, list );
338 }else {
339 QValueList<int> ints;
340 ints.append( fd );
341 m_channels.insert( channel, ints );
342 }
335}; 343};
336void OCopServer::delChannel( const QCString& channel, 344void OCopServer::delChannel( const QCString& channel,
337 int fd ) { 345 int fd ) {
346 qWarning("remove %s, %d", channel.data(), fd );
338 if (!m_channels.contains( channel ) ) 347 if (!m_channels.contains( channel ) )
339 return; 348 return;
@@ -343,17 +352,19 @@ void OCopServer::delChannel( const QCString& channel,
343 352
344 if ( it.data().contains(fd) ) { 353 if ( it.data().contains(fd) ) {
345
346 QValueList<int> ints = it.data(); 354 QValueList<int> ints = it.data();
347 if ( ints.count() == 1 ) 355 if ( ints.count() == 1 )
348 m_channels.remove( it ); 356 m_channels.remove( channel );
349 else{ 357 else{
350 QValueList<int> ints = it.data(); 358 QValueList<int> ints = it.data();
351 ints.remove( fd ); 359 QValueList<int>::Iterator rem = ints.find( fd );
352 m_channels.replace( it.key(), ints ); 360 rem = ints.remove( rem );
361 QCString str = it.key().copy();
362 m_channels.replace( str, ints );
353 } 363 }
364 qWarning(" channel count is now %d", ints.count() );
354 } 365 }
355} 366}
356void OCopServer::isRegistered( const QCString& channel, int fd) { 367void OCopServer::isRegistered( const QCString& channel, int fd) {
357 qWarning("isRegistered"); 368// qWarning("isRegistered");
358 OCOPHead head; 369 OCOPHead head;
359 QCString func(2); 370 QCString func(2);