summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Volz <andreas@er00923n.(none)>2010-08-12 22:48:05 +0200
committerAndreas Volz <andreas@er00923n.(none)>2010-08-12 22:48:05 +0200
commitf0dcaa239f589106328fe325d498bbc810b2805a (patch)
treeba1ea150e5a364bc92dee56307a71465ad650184
parenta416700e448b336a3443547db67f5c62178210f3 (diff)
downloaddbus-c++-f0dcaa239f589106328fe325d498bbc810b2805a.tar.gz
moved pipe to extra files
-rw-r--r--include/dbus-c++/dbus.h1
-rw-r--r--include/dbus-c++/eventloop-integration.h31
-rw-r--r--include/dbus-c++/pipe.h67
-rw-r--r--src/Makefile.am3
-rw-r--r--src/eventloop-integration.cpp12
-rw-r--r--src/pipe.cpp51
6 files changed, 124 insertions, 41 deletions
diff --git a/include/dbus-c++/dbus.h b/include/dbus-c++/dbus.h
index 7dfc164..80893cb 100644
--- a/include/dbus-c++/dbus.h
+++ b/include/dbus-c++/dbus.h
@@ -41,5 +41,6 @@
#include "eventloop.h"
#include "eventloop-integration.h"
#include "introspection.h"
+#include "pipe.h"
#endif//__DBUSXX_DBUS_H
diff --git a/include/dbus-c++/eventloop-integration.h b/include/dbus-c++/eventloop-integration.h
index 213695d..0459ebf 100644
--- a/include/dbus-c++/eventloop-integration.h
+++ b/include/dbus-c++/eventloop-integration.h
@@ -38,6 +38,7 @@ namespace DBus {
*/
class BusDispatcher;
+class Pipe;
class DXXAPI BusTimeout : public Timeout, public DefaultTimeout
{
@@ -57,36 +58,6 @@ class DXXAPI BusWatch : public Watch, public DefaultWatch
friend class BusDispatcher;
};
-class DXXAPI Pipe
-{
-public:
- /*!
- * Write some data into the communication pipe.
- *
- * @param buffer The raw data to write.
- * @param nbytes The number of bytes to write from the buffer.
- */
- void write(const void *buffer, unsigned int nbytes);
-
- /*!
- * Simply write one single byte into the pipe. This is a shortcut
- * if there's really no data to transport, but to activate the handler.
- */
- void signal();
-
-private:
- void(*_handler)(const void *data, void *buffer, unsigned int nbyte);
- int fd_write;
- int fd_read;
- const void *data;
-
- // allow construction only in BusDispatcher
- Pipe () {};
- ~Pipe () {};
-
-friend class BusDispatcher;
-};
-
class DXXAPI BusDispatcher : public Dispatcher, public DefaultMainLoop
{
public:
diff --git a/include/dbus-c++/pipe.h b/include/dbus-c++/pipe.h
new file mode 100644
index 0000000..c994b6e
--- /dev/null
+++ b/include/dbus-c++/pipe.h
@@ -0,0 +1,67 @@
+/*
+ *
+ * D-Bus++ - C++ bindings for D-Bus
+ *
+ * Copyright (C) 2005-2007 Paolo Durante <shackan@gmail.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#ifndef DBUSXX_PIPE_H
+#define DBUSXX_PIPE_H
+
+/* Project */
+#include "api.h"
+
+/* STD */
+#include <cstdlib>
+
+namespace DBus {
+
+class DXXAPI Pipe
+{
+public:
+ /*!
+ * Write some data into the communication pipe.
+ *
+ * @param buffer The raw data to write.
+ * @param nbytes The number of bytes to write from the buffer.
+ */
+ void write(const void *buffer, unsigned int nbytes);
+
+ /*!
+ * Simply write one single byte into the pipe. This is a shortcut
+ * if there's really no data to transport, but to activate the handler.
+ */
+ void signal();
+
+private:
+ void(*_handler)(const void *data, void *buffer, unsigned int nbyte);
+ int fd_write;
+ int fd_read;
+ const void *data;
+
+ // allow construction only in BusDispatcher
+ Pipe ();
+ ~Pipe () {};
+
+friend class BusDispatcher;
+};
+
+} /* namespace DBus */
+
+#endif // DBUSXX_PIPE_H
diff --git a/src/Makefile.am b/src/Makefile.am
index 1220db5..6c7eec4 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -42,7 +42,8 @@ lib_includedir=$(includedir)/dbus-c++-1/dbus-c++/
lib_include_HEADERS = $(HEADER_FILES)
lib_LTLIBRARIES = libdbus-c++-1.la
-libdbus_c___1_la_SOURCES = $(HEADER_FILES) interface.cpp object.cpp introspection.cpp debug.cpp types.cpp connection.cpp connection_p.h property.cpp dispatcher.cpp dispatcher_p.h pendingcall.cpp pendingcall_p.h error.cpp internalerror.h message.cpp message_p.h server.cpp server_p.h eventloop.cpp eventloop-integration.cpp $(GLIB_CPP) $(ECORE_CPP)
+libdbus_c___1_la_SOURCES = $(HEADER_FILES) interface.cpp object.cpp introspection.cpp debug.cpp types.cpp connection.cpp connection_p.h property.cpp dispatcher.cpp dispatcher_p.h pendingcall.cpp pendingcall_p.h error.cpp internalerror.h message.cpp message_p.h server.cpp server_p.h eventloop.cpp eventloop-integration.cpp $(GLIB_CPP) $(ECORE_CPP) \
+ pipe.cpp pipe.h
libdbus_c___1_la_LIBADD = $(dbus_LIBS) $(glib_LIBS) $(pthread_LIBS) $(ecore_LIBS)
libdbus_c___1_la_LDFLAGS = -no-undefined
diff --git a/src/eventloop-integration.cpp b/src/eventloop-integration.cpp
index d20154a..e4a9ad3 100644
--- a/src/eventloop-integration.cpp
+++ b/src/eventloop-integration.cpp
@@ -29,6 +29,7 @@
#include <dbus-c++/eventloop-integration.h>
#include <dbus-c++/debug.h>
+#include <dbus-c++/pipe.h>
#include <sys/poll.h>
#include <fcntl.h>
@@ -74,16 +75,6 @@ void BusWatch::toggle()
DefaultWatch::enabled(Watch::enabled());
}
-void Pipe::write(const void *buffer, unsigned int nbytes)
-{
- ::write(fd_write, buffer, nbytes);
-}
-
-void Pipe::signal()
-{
- ::write(fd_write, '\0', 1);
-}
-
BusDispatcher::BusDispatcher() :
_running(false)
{
@@ -155,6 +146,7 @@ Pipe *BusDispatcher::add_pipe(void(*handler)(const void *data, void *buffer, uns
new_pipe->fd_read = fd[0];
new_pipe->fd_write = fd[1];
fcntl(new_pipe->fd_read, F_SETFL, O_NONBLOCK);
+ fcntl(new_pipe->fd_write, F_SETFL, O_NONBLOCK);
}
else
{
diff --git a/src/pipe.cpp b/src/pipe.cpp
new file mode 100644
index 0000000..6045e0b
--- /dev/null
+++ b/src/pipe.cpp
@@ -0,0 +1,51 @@
+/*
+ *
+ * D-Bus++ - C++ bindings for D-Bus
+ *
+ * Copyright (C) 2005-2007 Paolo Durante <shackan@gmail.com>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <dbus-c++/pipe.h>
+
+#include <unistd.h>
+
+using namespace DBus;
+using namespace std;
+
+Pipe::Pipe () :
+ _handler (NULL),
+ fd_write (0),
+ fd_read (0),
+ data (NULL)
+{
+}
+
+void Pipe::write(const void *buffer, unsigned int nbytes)
+{
+ ::write(fd_write, buffer, nbytes);
+}
+
+void Pipe::signal()
+{
+ ::write(fd_write, '\0', 1);
+}