diff options
author | Slávek Banko <slavek.banko@axis.cz> | 2013-11-18 21:21:15 +0100 |
---|---|---|
committer | Slávek Banko <slavek.banko@axis.cz> | 2013-11-18 21:21:15 +0100 |
commit | 9a134f5699708c76d4abd12da71c9df03830556a (patch) | |
tree | b44367da3f90252d7d9dffd12c71e1160174bd11 /tqdbusunixfd.h | |
parent | 52933e3b969e8b44f6a94db486cb27ddf5c322d7 (diff) | |
download | dbus-1-tqt-9a134f5699708c76d4abd12da71c9df03830556a.tar.gz dbus-1-tqt-9a134f5699708c76d4abd12da71c9df03830556a.zip |
Add support for data type UnixFD
Diffstat (limited to 'tqdbusunixfd.h')
-rw-r--r-- | tqdbusunixfd.h | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/tqdbusunixfd.h b/tqdbusunixfd.h new file mode 100644 index 0000000..f38efc8 --- /dev/null +++ b/tqdbusunixfd.h @@ -0,0 +1,149 @@ +/* tqdbusunixfd.h DBUS unix file handle data type + * + * Copyright (C) 2013 Slávek Banko <slavek.banko@axis.cz> + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + * + */ + +#ifndef TQDBUSUNIXFD_H +#define TQDBUSUNIXFD_H + +#include "dbus/dbus.h" +#ifndef QT_H +#include "ntqshared.h" +#endif // QT_H + + +#ifndef DBUS_TYPE_UNIX_FD +#define DBUS_TYPE_UNIX_FD ((int) 'h') +#endif + +#ifndef DBUS_TYPE_UNIX_FD_AS_STRING +#define DBUS_TYPE_UNIX_FD_AS_STRING "h" +#endif + +/** + * @brief Class for representing D-Bus unix file handles + * + * This data type is necessary to correctly represent unix file handles in the + * context of D-Bus messages, since normal strings have a different D-Bus + * signature than unix file handles. + * + * @see @ref dbusconventions-unixfd + */ +class TQT_DBusUnixFd +{ +public: + /** + * @brief Creates an empty and invalid unix file handle + */ + TQT_DBusUnixFd(); + + /** + * @brief Creates copy of the given @p other unix file handle + * + * @param other the unix file handle to copy + */ + TQT_DBusUnixFd(const TQT_DBusUnixFd& other); + + /** + * @brief Creates copy of the given @p other unix file handle + * + * @param other the unix file handle to copy + */ + TQT_DBusUnixFd(int other); + + /** + * @brief Destroys the unix file handle + */ + virtual ~TQT_DBusUnixFd(); + + /** + * @brief Returns whether the current content is considered a valid unix file handle + * + * @return \c true if the object's content describe a valid unix file handle, + * otherwise @c false + * + * @see @ref dbusconventions-unixfd + */ + bool isValid() const; + + /** + * @brief Get unix file handle + * + * @see @ref dbusconventions-unixfd + */ + int fileDescriptor() const; + + /** + * @brief Set new unix file handle + * + * @see @ref dbusconventions-unixfd + */ + void setFileDescriptor(int fileDescriptor); + + /** + * @brief Give unix file handle + * + * @see @ref dbusconventions-unixfd + */ + void giveFileDescriptor(int fileDescriptor); + + /** + * @brief Copy unix file handle from TQT_DBusUnixFd + * + * @see @ref dbusconventions-unixfd + */ + TQT_DBusUnixFd &operator=( const TQT_DBusUnixFd &other ); + + /** + * @brief Checks if the given @p other variant is equal to this one + * + * @param other unix file handle to compare with + * + * @return @c true if both use same file handle, otherwise + * @c false + */ + inline bool operator==(const TQT_DBusUnixFd& other) const + { + return (&other == this) || (other.d == d); + } + + /** + * @brief Checks if the given @p other variant is not equal to this one + * + * @param other unix file handle to compare with + * + * @return @c true if both use different file handle, otherwise + * @c false + */ + inline bool operator!=(const TQT_DBusUnixFd& other) const + { + return (&other != this) && (other.d != d); + } + + +protected: + struct TQT_DBusUnixFdPrivate : public TQShared { + int fd; + } *d; + +}; + +#endif |