27 #include <tqsocketnotifier.h>
31 #include "tdesocketaddress.h"
32 #include "kresolver.h"
33 #include "tdesocketbase.h"
34 #include "tdesocketdevice.h"
35 #include "kclientsocketbase.h"
37 using namespace KNetwork;
39 class KNetwork::KClientSocketBasePrivate
47 bool enableRead : 1, enableWrite : 1;
53 TQObject(parent, name),
55 d(new KClientSocketBasePrivate)
63 d->enableWrite =
false;
85 TQMutexLocker locker(
mutex());
101 return d->peerResolver;
106 return d->peerResults;
111 return d->localResolver;
116 return d->localResults;
123 d->localResolver.setFlags(d->localResolver.flags() & ~
KResolver::NoResolve);
124 d->peerResolver.setFlags(d->peerResolver.flags() & ~
KResolver::NoResolve);
128 d->localResolver.setFlags(d->localResolver.flags() | KResolver::NoResolve);
129 d->peerResolver.setFlags(d->peerResolver.flags() | KResolver::NoResolve);
135 d->localResolver.setFamily(families);
136 d->peerResolver.setFamily(families);
144 if (
state() > HostLookup)
147 if (
state() < HostLookup)
149 if (d->localResolver.serviceName().isNull() &&
150 !d->localResolver.nodeName().isNull())
151 d->localResolver.setServiceName(TQString::fromLatin1(
""));
156 this, TQT_SLOT(lookupFinishedSlot()));
158 this, TQT_SLOT(lookupFinishedSlot()));
160 if (d->localResolver.status() <= 0)
161 d->localResolver.start();
162 if (d->peerResolver.status() <= 0)
163 d->peerResolver.start();
168 if (!d->localResolver.isRunning() && !d->peerResolver.isRunning())
173 lookupFinishedSlot();
175 TQTimer::singleShot(0,
this, TQT_SLOT(lookupFinishedSlot()));
199 if (
state() == HostLookup ||
state() > Connecting)
220 if (
state() == Connected)
222 if (
state() == HostLookup ||
state() > Connecting)
231 if (
error() == InProgress)
232 newstate = Connecting;
234 newstate = Connected;
236 if (
state() < newstate)
240 if (
error() == NoError)
242 setFlags(IO_Sequential | IO_Raw | IO_ReadWrite | IO_Open | IO_Async);
254 if (
state() != Connected)
274 if (
state() == HostLookup)
276 d->peerResolver.cancel(
false);
277 d->localResolver.cancel(
false);
290 TQ_LONG KClientSocketBase::bytesAvailable() const
293 qint64 KClientSocketBase::bytesAvailable() const
296 return socketDevice()->bytesAvailable();
398 return d->enableRead;
403 TQMutexLocker locker(
mutex());
405 d->enableRead = enable;
408 n->setEnabled(enable);
413 return d->enableWrite;
418 TQMutexLocker locker(
mutex());
420 d->enableWrite = enable;
423 n->setEnabled(enable);
438 void KClientSocketBase::lookupFinishedSlot()
440 if (d->peerResolver.isRunning() || d->localResolver.isRunning() ||
state() != HostLookup)
445 if (d->peerResolver.status() < 0 || d->localResolver.status() < 0)
448 setError(IO_LookupError, LookupFailure);
454 d->localResults = d->localResolver.results();
455 d->peerResults = d->peerResolver.results();
468 n->setEnabled(d->enableRead);
477 n->setEnabled(d->enableWrite);
490 #include "kclientsocketbase.moc"