30 #include "tdesocketdevice.h"
31 #include "tdesocketaddress.h"
32 #include "tdesocketbuffer_p.h"
33 #include "kbufferedsocket.h"
35 using namespace KNetwork;
36 using namespace KNetwork::Internal;
38 class KNetwork::TDEBufferedSocketPrivate
41 mutable TDESocketBuffer *input, *output;
43 TDEBufferedSocketPrivate()
51 TQObject *parent,
const char *name)
53 d(new TDEBufferedSocketPrivate)
84 if (!d->output || d->output->isEmpty())
97 TQ_LONG TDEBufferedSocket::bytesAvailable() const
100 qint64 TDEBufferedSocket::bytesAvailable() const
104 return KStreamSocket::bytesAvailable();
106 return d->input->length();
116 return bytesAvailable();
125 if (d->input->isEmpty())
132 return d->input->consumeBuffer(data, maxlen);
147 if (d->input->isEmpty())
154 return d->input->consumeBuffer(data, maxlen,
false);
167 if (
state() != Connected)
170 setError(IO_WriteError, NotConnected);
176 if (d->output->isFull())
178 setError(IO_WriteError, WouldBlock);
189 return d->output->feedBuffer(data, len);
205 if (!enable && d->input)
213 if (enable &&
state() != Connected && d->input && !d->input->isEmpty())
222 if (!enable && d->output && !d->output->isEmpty())
233 if (newState == Connecting || newState == Connected)
251 TQMutexLocker locker(
mutex());
257 else if (d->input == 0L)
259 d->input =
new TDESocketBuffer;
270 TQMutexLocker locker(
mutex());
276 else if (d->output == 0L)
278 d->output =
new TDESocketBuffer;
288 TQ_ULONG TDEBufferedSocket::bytesToWrite() const
291 qint64 TDEBufferedSocket::bytesToWrite() const
297 return d->output->length();
312 return d->input->canReadLine();
317 return d->input->readLine();
322 if (
state() != Connecting)
332 if (d->input &&
state() == Connected)
352 setError(IO_ReadError, RemotelyDisconnected);
363 if (
state() == Connected)
367 if (d->input && !d->input->isEmpty())
379 if (d->output && !d->output->isEmpty() &&
400 setError(IO_ReadError, RemotelyDisconnected);
407 if (d->output->isEmpty())
416 if (
state() != Closing)
418 else if (d->output && d->output->isEmpty() &&
state() == Closing)
424 #include "kbufferedsocket.moc"