X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcontrib%2Flibqxt-2007-10-24%2Fsrc%2Fnetwork%2Fqxtnamedpipe_unix.cpp;fp=src%2Fcontrib%2Flibqxt-2007-10-24%2Fsrc%2Fnetwork%2Fqxtnamedpipe_unix.cpp;h=2f5c7cf8f065cfd7697bfc03b2ba46b97f1ef7cb;hp=0000000000000000000000000000000000000000;hb=a634acadbcf6017474f68a3eaf7cb632660e9e49;hpb=cd122ca8e0d2c0ffc5397e0a813c75d791a7e6e3 diff --git a/src/contrib/libqxt-2007-10-24/src/network/qxtnamedpipe_unix.cpp b/src/contrib/libqxt-2007-10-24/src/network/qxtnamedpipe_unix.cpp new file mode 100644 index 00000000..2f5c7cf8 --- /dev/null +++ b/src/contrib/libqxt-2007-10-24/src/network/qxtnamedpipe_unix.cpp @@ -0,0 +1,51 @@ +#include "QxtNamedPipe.h" +#ifdef Q_OS_UNIX +# include +#else +# error "No Windows implementation for QxtNamedPipe" +#endif + +class QxtNamedPipePrivate : public QxtPrivate +{ +public: + QxtNamedPipePrivate(); + QXT_DECLARE_PUBLIC(QxtNamedPipe); + + QString pipeName; + int fd; +}; + +QxtNamedPipe::QxtNamedPipe(const QString& name, QObject* parent) : QAbstractSocket(QAbstractSocket::UnknownSocketType, parent) +{ + QXT_INIT_PRIVATE(QxtNamedPipe); + qxt_d().pipeName = name; + qxt_d().fd = 0; +} + +bool QxtNamedPipe::open(QIODevice::OpenMode mode) +{ + int m = O_RDWR; + if (!(mode & QIODevice::ReadOnly)) m = O_WRONLY; + else if (!(mode & QIODevice::WriteOnly)) m = O_RDONLY; + qxt_d().fd = ::open(qPrintable(qxt_d().pipeName), m); + return (qxt_d().fd != 0); +} + +bool QxtNamedPipe::open(const QString& name, QIODevice::OpenMode mode) +{ + qxt_d().pipeName = name; + return QxtNamedPipe::open(mode); +} + +void QxtNamedPipe::close() +{ + if (qxt_d().fd) ::close(qxt_d().fd); +} + +QByteArray QxtNamedPipe::readAvailableBytes() +{ + char ch; + QByteArray rv; + while (getChar(&ch)) rv += ch; + return rv; +}