• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdecore
 

tdecore

  • tdecore
  • network
kclientsocketbase.cpp
1 /*
2  * Copyright (C) 2003,2005 Thiago Macieira <thiago.macieira@kdemail.net>
3  *
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining
6  * a copy of this software and associated documentation files (the
7  * "Software"), to deal in the Software without restriction, including
8  * without limitation the rights to use, copy, modify, merge, publish,
9  * distribute, sublicense, and/or sell copies of the Software, and to
10  * permit persons to whom the Software is furnished to do so, subject to
11  * the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included
14  * in all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23  */
24 
25 #include <config.h>
26 
27 #include <tqsocketnotifier.h>
28 #include <tqtimer.h>
29 #include <tqmutex.h>
30 
31 #include "tdesocketaddress.h"
32 #include "kresolver.h"
33 #include "tdesocketbase.h"
34 #include "tdesocketdevice.h"
35 #include "kclientsocketbase.h"
36 
37 using namespace KNetwork;
38 
39 class KNetwork::KClientSocketBasePrivate
40 {
41 public:
42  int state;
43 
44  KResolver localResolver, peerResolver;
45  KResolverResults localResults, peerResults;
46 
47  bool enableRead : 1, enableWrite : 1;
48 };
49 
50 KClientSocketBase::KClientSocketBase(TQObject *parent, const char *name) :
51  TQObject(parent, name), d(new KClientSocketBasePrivate)
52 {
53  d->state = Idle;
54  d->enableRead = true;
55  d->enableWrite = false;
56 }
57 
58 KClientSocketBase::~KClientSocketBase()
59 {
60  close();
61  delete d;
62 }
63 
64 KClientSocketBase::SocketState KClientSocketBase::state() const
65 {
66  return static_cast<SocketState>(d->state);
67 }
68 
69 void KClientSocketBase::setState(SocketState state)
70 {
71  d->state = state;
72  stateChanging(state);
73 }
74 
75 bool KClientSocketBase::setSocketOptions(int opts)
76 {
77  TQMutexLocker locker(mutex());
78  TDESocketBase::setSocketOptions(opts); // call parent
79 
80  // don't create the device unnecessarily
81  if (hasDevice())
82  {
83  bool result = socketDevice()->setSocketOptions(opts); // and set the implementation
84  copyError();
85  return result;
86  }
87 
88  return true;
89 }
90 
91 KResolver& KClientSocketBase::peerResolver() const
92 {
93  return d->peerResolver;
94 }
95 
96 const KResolverResults& KClientSocketBase::peerResults() const
97 {
98  return d->peerResults;
99 }
100 
101 KResolver& KClientSocketBase::localResolver() const
102 {
103  return d->localResolver;
104 }
105 
106 const KResolverResults& KClientSocketBase::localResults() const
107 {
108  return d->localResults;
109 }
110 
111 void KClientSocketBase::setResolutionEnabled(bool enable)
112 {
113  if (enable)
114  {
115  d->localResolver.setFlags(d->localResolver.flags() & ~KResolver::NoResolve);
116  d->peerResolver.setFlags(d->peerResolver.flags() & ~KResolver::NoResolve);
117  }
118  else
119  {
120  d->localResolver.setFlags(d->localResolver.flags() | KResolver::NoResolve);
121  d->peerResolver.setFlags(d->peerResolver.flags() | KResolver::NoResolve);
122  }
123 }
124 
125 void KClientSocketBase::setFamily(int families)
126 {
127  d->localResolver.setFamily(families);
128  d->peerResolver.setFamily(families);
129 }
130 
131 bool KClientSocketBase::lookup()
132 {
133  if (state() == HostLookup && !blocking())
134  return true; // already doing lookup
135 
136  if (state() > HostLookup)
137  return true; // results are already available
138 
139  if (state() < HostLookup)
140  {
141  if (d->localResolver.serviceName().isNull() &&
142  !d->localResolver.nodeName().isNull())
143  d->localResolver.setServiceName(TQString::fromLatin1(""));
144 
145  // don't restart the lookups if they had succeeded and
146  // the input values weren't changed
147  TQObject::connect(&d->peerResolver, TQ_SIGNAL(finished(KResolverResults)),
148  this, TQ_SLOT(lookupFinishedSlot()));
149  TQObject::connect(&d->localResolver, TQ_SIGNAL(finished(KResolverResults)),
150  this, TQ_SLOT(lookupFinishedSlot()));
151 
152  if (d->localResolver.status() <= 0)
153  d->localResolver.start();
154  if (d->peerResolver.status() <= 0)
155  d->peerResolver.start();
156 
157  setState(HostLookup);
158  emit stateChanged(HostLookup);
159 
160  if (!d->localResolver.isRunning() && !d->peerResolver.isRunning())
161  {
162  // if nothing is running, then the lookup results are still valid
163  // pretend we had done lookup
164  if (blocking())
165  lookupFinishedSlot();
166  else
167  TQTimer::singleShot(0, this, TQ_SLOT(lookupFinishedSlot()));
168  }
169  else
170  {
171  d->localResults = d->peerResults = KResolverResults();
172  }
173  }
174 
175  if (blocking())
176  {
177  // we're in blocking mode operation
178  // wait for the results
179 
180  localResolver().wait();
181  peerResolver().wait();
182 
183  // lookupFinishedSlot has been called
184  }
185 
186  return true;
187 }
188 
189 bool KClientSocketBase::bind(const KResolverEntry& address)
190 {
191  if (state() == HostLookup || state() > Connecting)
192  return false;
193 
194  if (socketDevice()->bind(address))
195  {
196  resetError();
197 
198  // don't set the state or emit signals if we are in a higher state
199  if (state() < Bound)
200  {
201  setState(Bound);
202  emit stateChanged(Bound);
203  emit bound(address);
204  }
205  return true;
206  }
207  return false;
208 }
209 
210 bool KClientSocketBase::connect(const KResolverEntry& address)
211 {
212  if (state() == Connected)
213  return true; // to be compliant with the other classes
214  if (state() == HostLookup || state() > Connecting)
215  return false;
216 
217  bool ok = socketDevice()->connect(address);
218  copyError();
219 
220  if (ok)
221  {
222  SocketState newstate;
223  if (error() == InProgress)
224  newstate = Connecting;
225  else
226  newstate = Connected;
227 
228  if (state() < newstate)
229  {
230  setState(newstate);
231  emit stateChanged(newstate);
232  if (error() == NoError)
233  {
234  setFlags(IO_Sequential | IO_Raw | IO_ReadWrite | IO_Open | IO_Async);
235  emit connected(address);
236  }
237  }
238 
239  return true;
240  }
241  return false;
242 }
243 
244 bool KClientSocketBase::disconnect()
245 {
246  if (state() != Connected)
247  return false;
248 
249  bool ok = socketDevice()->disconnect();
250  copyError();
251 
252  if (ok)
253  {
254  setState(Unconnected);
255  emit stateChanged(Unconnected);
256  return true;
257  }
258  return false;
259 }
260 
261 void KClientSocketBase::close()
262 {
263  if (state() == Idle)
264  return; // nothing to do
265 
266  if (state() == HostLookup)
267  {
268  d->peerResolver.cancel(false);
269  d->localResolver.cancel(false);
270  }
271 
272  d->localResults = d->peerResults = KResolverResults();
273 
274  socketDevice()->close();
275  setState(Idle);
276  emit stateChanged(Idle);
277  emit closed();
278 }
279 
280 // This function is unlike all the others because it is const
281 TQ_LONG KClientSocketBase::bytesAvailable() const
282 {
283  return socketDevice()->bytesAvailable();
284 }
285 
286 // All the functions below look really alike
287 // Should I use a macro to define them?
288 
289 TQ_LONG KClientSocketBase::waitForMore(int msecs, bool *timeout)
290 {
291  resetError();
292  TQ_LONG retval = socketDevice()->waitForMore(msecs, timeout);
293  if (retval == -1)
294  {
295  copyError();
296  emit gotError(error());
297  }
298  return retval;
299 }
300 
301 TQ_LONG KClientSocketBase::readBlock(char *data, TQ_ULONG maxlen)
302 {
303  resetError();
304  TQ_LONG retval = socketDevice()->readBlock(data, maxlen);
305  if (retval == -1)
306  {
307  copyError();
308  emit gotError(error());
309  }
310  return retval;
311 }
312 
313 TQ_LONG KClientSocketBase::readBlock(char *data, TQ_ULONG maxlen, TDESocketAddress& from)
314 {
315  resetError();
316  TQ_LONG retval = socketDevice()->readBlock(data, maxlen, from);
317  if (retval == -1)
318  {
319  copyError();
320  emit gotError(error());
321  }
322  return retval;
323 }
324 
325 TQ_LONG KClientSocketBase::peekBlock(char *data, TQ_ULONG maxlen)
326 {
327  resetError();
328  TQ_LONG retval = socketDevice()->peekBlock(data, maxlen);
329  if (retval == -1)
330  {
331  copyError();
332  emit gotError(error());
333  }
334  return retval;
335 }
336 
337 TQ_LONG KClientSocketBase::peekBlock(char *data, TQ_ULONG maxlen, TDESocketAddress& from)
338 {
339  resetError();
340  TQ_LONG retval = socketDevice()->peekBlock(data, maxlen, from);
341  if (retval == -1)
342  {
343  copyError();
344  emit gotError(error());
345  }
346  return retval;
347 }
348 
349 TQ_LONG KClientSocketBase::writeBlock(const char *data, TQ_ULONG len)
350 {
351  resetError();
352  TQ_LONG retval = socketDevice()->writeBlock(data, len);
353  if (retval == -1)
354  {
355  copyError();
356  emit gotError(error());
357  }
358  return retval;
359 }
360 
361 TQ_LONG KClientSocketBase::writeBlock(const char *data, TQ_ULONG len, const TDESocketAddress& to)
362 {
363  resetError();
364  TQ_LONG retval = socketDevice()->writeBlock(data, len, to);
365  if (retval == -1)
366  {
367  copyError();
368  emit gotError(error());
369  }
370  return retval;
371 }
372 
373 TDESocketAddress KClientSocketBase::localAddress() const
374 {
375  return socketDevice()->localAddress();
376 }
377 
378 TDESocketAddress KClientSocketBase::peerAddress() const
379 {
380  return socketDevice()->peerAddress();
381 }
382 
383 bool KClientSocketBase::emitsReadyRead() const
384 {
385  return d->enableRead;
386 }
387 
388 void KClientSocketBase::enableRead(bool enable)
389 {
390  TQMutexLocker locker(mutex());
391 
392  d->enableRead = enable;
393  TQSocketNotifier *n = socketDevice()->readNotifier();
394  if (n)
395  n->setEnabled(enable);
396 }
397 
398 bool KClientSocketBase::emitsReadyWrite() const
399 {
400  return d->enableWrite;
401 }
402 
403 void KClientSocketBase::enableWrite(bool enable)
404 {
405  TQMutexLocker locker(mutex());
406 
407  d->enableWrite = enable;
408  TQSocketNotifier *n = socketDevice()->writeNotifier();
409  if (n)
410  n->setEnabled(enable);
411 }
412 
413 void KClientSocketBase::slotReadActivity()
414 {
415  if (d->enableRead)
416  emit readyRead();
417 }
418 
419 void KClientSocketBase::slotWriteActivity()
420 {
421  if (d->enableWrite)
422  emit readyWrite();
423 }
424 
425 void KClientSocketBase::lookupFinishedSlot()
426 {
427  if (d->peerResolver.isRunning() || d->localResolver.isRunning() || state() != HostLookup)
428  return;
429 
430  TQObject::disconnect(&d->peerResolver, 0L, this, TQ_SLOT(lookupFinishedSlot()));
431  TQObject::disconnect(&d->localResolver, 0L, this, TQ_SLOT(lookupFinishedSlot()));
432  if (d->peerResolver.status() < 0 || d->localResolver.status() < 0)
433  {
434  setState(Idle); // backtrack
435  setError(IO_LookupError, LookupFailure);
436  emit stateChanged(Idle);
437  emit gotError(LookupFailure);
438  return;
439  }
440 
441  d->localResults = d->localResolver.results();
442  d->peerResults = d->peerResolver.results();
443  setState(HostFound);
444  emit stateChanged(HostFound);
445  emit hostFound();
446 }
447 
448 void KClientSocketBase::stateChanging(SocketState newState)
449 {
450  if (newState == Connected && socketDevice())
451  {
452  TQSocketNotifier *n = socketDevice()->readNotifier();
453  if (n)
454  {
455  n->setEnabled(d->enableRead);
456  TQObject::connect(n, TQ_SIGNAL(activated(int)), this, TQ_SLOT(slotReadActivity()));
457  }
458  else
459  return;
460 
461  n = socketDevice()->writeNotifier();
462  if (n)
463  {
464  n->setEnabled(d->enableWrite);
465  TQObject::connect(n, TQ_SIGNAL(activated(int)), this, TQ_SLOT(slotWriteActivity()));
466  }
467  else
468  return;
469  }
470 }
471 
472 void KClientSocketBase::copyError()
473 {
474  setError(socketDevice()->status(), socketDevice()->error());
475 }
476 
477 #include "kclientsocketbase.moc"
KNetwork::KActiveSocketBase::setError
void setError(int status, SocketError error)
Sets the socket's error code and the I/O Device's status.
Definition: tdesocketbase.cpp:309
KNetwork::KActiveSocketBase::resetError
void resetError()
Resets the socket error code and the I/O Device's status.
Definition: tdesocketbase.cpp:315
KNetwork::KClientSocketBase::connected
void connected(const KResolverEntry &remote)
This socket is emitted when the socket successfully connects to a remote address.
KNetwork::KClientSocketBase::waitForMore
virtual TQ_LONG waitForMore(int msecs, bool *timeout=0L)
Waits for more data.
Definition: kclientsocketbase.cpp:289
KNetwork::KClientSocketBase::emitsReadyWrite
bool emitsReadyWrite() const
Returns true if the readyWrite signal is set to be emitted.
Definition: kclientsocketbase.cpp:398
KNetwork::KClientSocketBase::KClientSocketBase
KClientSocketBase(TQObject *parent, const char *name)
Default constructor.
Definition: kclientsocketbase.cpp:50
KNetwork::KClientSocketBase::SocketState
SocketState
Socket states.
Definition: kclientsocketbase.h:73
KNetwork::KClientSocketBase::stateChanging
virtual void stateChanging(SocketState newState)
This function is called by setState whenever the state changes.
Definition: kclientsocketbase.cpp:448
KNetwork::KClientSocketBase::writeBlock
virtual TQ_LONG writeBlock(const char *data, TQ_ULONG len)
Writes data to the socket.
Definition: kclientsocketbase.cpp:349
KNetwork::KClientSocketBase::bytesAvailable
virtual TQ_LONG bytesAvailable() const
Returns the number of bytes available on this socket.
Definition: kclientsocketbase.cpp:281
KNetwork::KClientSocketBase::localAddress
virtual TDESocketAddress localAddress() const
Returns the local socket address.
Definition: kclientsocketbase.cpp:373
KNetwork::KClientSocketBase::enableRead
virtual void enableRead(bool enable)
Enables the emission of the readyRead signal.
Definition: kclientsocketbase.cpp:388
KNetwork::KClientSocketBase::slotReadActivity
virtual void slotReadActivity()
This slot is connected to the read notifier's signal meaning the socket can read more data.
Definition: kclientsocketbase.cpp:413
KNetwork::KClientSocketBase::localResults
const KResolverResults & localResults() const
Returns the internal list of resolved results for the local address.
Definition: kclientsocketbase.cpp:106
KNetwork::KClientSocketBase::enableWrite
virtual void enableWrite(bool enable)
Enables the emission of the readyWrite signal.
Definition: kclientsocketbase.cpp:403
KNetwork::KClientSocketBase::setState
void setState(SocketState state)
Sets the socket state to state.
Definition: kclientsocketbase.cpp:69
KNetwork::KClientSocketBase::disconnect
virtual bool disconnect()
Disconnects the socket.
Definition: kclientsocketbase.cpp:244
KNetwork::KClientSocketBase::readyRead
void readyRead()
This signal is emitted whenever the socket is ready for reading – i.e., there is data to be read in t...
KNetwork::KClientSocketBase::readBlock
virtual TQ_LONG readBlock(char *data, TQ_ULONG maxlen)
Reads data from a socket.
Definition: kclientsocketbase.cpp:301
KNetwork::KClientSocketBase::close
virtual void close()
Closes the socket.
Definition: kclientsocketbase.cpp:261
KNetwork::KClientSocketBase::closed
void closed()
This signal is emitted when the socket completes the closing/shut down process.
KNetwork::KClientSocketBase::emitsReadyRead
bool emitsReadyRead() const
Returns true if the readyRead signal is set to be emitted.
Definition: kclientsocketbase.cpp:383
KNetwork::KClientSocketBase::state
SocketState state() const
Returns the current state for this socket.
Definition: kclientsocketbase.cpp:64
KNetwork::KClientSocketBase::bound
void bound(const KResolverEntry &local)
This signal is emitted when the socket successfully binds to an address.
KNetwork::KClientSocketBase::peekBlock
virtual TQ_LONG peekBlock(char *data, TQ_ULONG maxlen)
Peeks data from the socket.
Definition: kclientsocketbase.cpp:325
KNetwork::KClientSocketBase::readyWrite
void readyWrite()
This signal is emitted whenever the socket is ready for writing – i.e., whenever there's space availa...
KNetwork::KClientSocketBase::setResolutionEnabled
void setResolutionEnabled(bool enable)
Enables or disables name resolution.
Definition: kclientsocketbase.cpp:111
KNetwork::KClientSocketBase::bind
virtual bool bind(const TQString &node=TQString::null, const TQString &service=TQString::null)=0
Binds this socket to the given nodename and service, or use the default ones if none are given.
KNetwork::KClientSocketBase::connect
virtual bool connect(const TQString &node=TQString::null, const TQString &service=TQString::null)=0
Attempts to connect to the these hostname and service, or use the default ones if none are given.
KNetwork::KClientSocketBase::gotError
void gotError(int code)
This signal is emitted when this object finds an error.
KNetwork::KClientSocketBase::lookup
virtual bool lookup()
Starts the lookup for peer and local hostnames as well as their services.
Definition: kclientsocketbase.cpp:131
KNetwork::KClientSocketBase::peerResolver
KResolver & peerResolver() const
Returns the internal KResolver object used for looking up the peer host name and service.
Definition: kclientsocketbase.cpp:91
KNetwork::KClientSocketBase::copyError
void copyError()
Convenience function to set this object's error code to match that of the socket device.
Definition: kclientsocketbase.cpp:472
KNetwork::KClientSocketBase::hostFound
void hostFound()
This signal is emitted when the lookup is successfully completed.
KNetwork::KClientSocketBase::slotWriteActivity
virtual void slotWriteActivity()
This slot is connected to the write notifier's signal meaning the socket can write more data.
Definition: kclientsocketbase.cpp:419
KNetwork::KClientSocketBase::~KClientSocketBase
virtual ~KClientSocketBase()
Destructor.
Definition: kclientsocketbase.cpp:58
KNetwork::KClientSocketBase::peerAddress
virtual TDESocketAddress peerAddress() const
Returns the peer socket address.
Definition: kclientsocketbase.cpp:378
KNetwork::KClientSocketBase::setSocketOptions
virtual bool setSocketOptions(int opts)
Sets the socket options.
Definition: kclientsocketbase.cpp:75
KNetwork::KClientSocketBase::peerResults
const KResolverResults & peerResults() const
Returns the internal list of resolved results for the peer address.
Definition: kclientsocketbase.cpp:96
KNetwork::KClientSocketBase::stateChanged
void stateChanged(int newstate)
This signal is emitted whenever the socket state changes.
KNetwork::KClientSocketBase::setFamily
void setFamily(int families)
Sets the allowed families for the resolutions.
Definition: kclientsocketbase.cpp:125
KNetwork::KClientSocketBase::localResolver
KResolver & localResolver() const
Returns the internal KResolver object used for looking up the local host name and service.
Definition: kclientsocketbase.cpp:101
KNetwork::KResolverEntry
One resolution entry.
Definition: kresolver.h:67
KNetwork::KResolverResults
Name and service resolution results.
Definition: kresolver.h:198
KNetwork::KResolver
Name and service resolution class.
Definition: kresolver.h:296
KNetwork::KResolver::wait
bool wait(int msec=0)
Waits for a request to finish resolving.
Definition: kresolver.cpp:461
KNetwork::TDESocketAddress
A generic socket address.
Definition: tdesocketaddress.h:424
KNetwork::TDESocketBase::hasDevice
bool hasDevice() const
Returns true if the socket device has been initialised in this object, either by calling socketDevice...
Definition: tdesocketbase.cpp:150
KNetwork::TDESocketBase::mutex
TQMutex * mutex() const
Returns the internal mutex for this class.
Definition: tdesocketbase.cpp:278
KNetwork::TDESocketBase::error
SocketError error() const
Retrieves the socket error code.
Definition: tdesocketbase.cpp:160
KNetwork::TDESocketBase::blocking
bool blocking() const
Retrieves this socket's blocking mode.
Definition: tdesocketbase.cpp:81
KNetwork::TDESocketBase::socketDevice
TDESocketDevice * socketDevice() const
Retrieves the socket implementation used on this socket.
Definition: tdesocketbase.cpp:116
KNetwork::TDESocketBase::setSocketOptions
virtual bool setSocketOptions(int opts)
Set the given socket options.
Definition: tdesocketbase.cpp:65
KNetwork::TDESocketDevice::disconnect
virtual bool disconnect()
Disconnects this socket.
Definition: tdesocketdevice.cpp:333
KNetwork::TDESocketDevice::peekBlock
virtual TQ_LONG peekBlock(char *data, TQ_ULONG maxlen)
Peeks data in the socket.
Definition: tdesocketdevice.cpp:459
KNetwork::TDESocketDevice::writeBlock
virtual TQ_LONG writeBlock(const char *data, TQ_ULONG len)
Writes data to the socket.
Definition: tdesocketdevice.cpp:501
KNetwork::TDESocketDevice::setSocketOptions
virtual bool setSocketOptions(int opts)
This implementation sets the options on the socket.
Definition: tdesocketdevice.cpp:110
KNetwork::TDESocketDevice::close
virtual void close()
Closes the socket.
Definition: tdesocketdevice.cpp:180
KNetwork::TDESocketDevice::readBlock
virtual TQ_LONG readBlock(char *data, TQ_ULONG maxlen)
Reads data from this socket.
Definition: tdesocketdevice.cpp:417
KNetwork::TDESocketDevice::waitForMore
virtual TQ_LONG waitForMore(int msecs, bool *timeout=0L)
Waits up to msecs for more data to be available on this socket.
Definition: tdesocketdevice.cpp:379
KNetwork::TDESocketDevice::bytesAvailable
virtual TQ_LONG bytesAvailable() const
Returns the number of bytes available for reading without blocking.
Definition: tdesocketdevice.cpp:367
KNetwork::TDESocketDevice::connect
virtual bool connect(const KResolverEntry &address)
Connect to a remote host.
Definition: tdesocketdevice.cpp:276
KNetwork::TDESocketDevice::writeNotifier
TQSocketNotifier * writeNotifier() const
Returns a socket notifier for output on this socket.
Definition: tdesocketdevice.cpp:627
KNetwork::TDESocketDevice::localAddress
virtual TDESocketAddress localAddress() const
Returns this socket's local address.
Definition: tdesocketdevice.cpp:530
KNetwork::TDESocketDevice::peerAddress
virtual TDESocketAddress peerAddress() const
Returns this socket's peer address.
Definition: tdesocketdevice.cpp:566
KNetwork::TDESocketDevice::readNotifier
TQSocketNotifier * readNotifier() const
Returns a socket notifier for input on this socket.
Definition: tdesocketdevice.cpp:609
KNetwork
A namespace to store all networking-related (socket) classes.
Definition: kbufferedsocket.h:36

tdecore

Skip menu "tdecore"
  • Main Page
  • Modules
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdecore

Skip menu "tdecore"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdecore by doxygen 1.9.1
This website is maintained by Timothy Pearson.