summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2006-10-15 17:16:22 +0000
committerDavid Robillard <d@drobilla.net>2006-10-15 17:16:22 +0000
commite21b04fd3f33629bbd2ac9f3db4236902cab4b2b (patch)
tree6e2e5e555f0245be54cc9c76f3414670944ca2f9
parentef04ea5d777b6833d9a07b8694b591cd2461b9c8 (diff)
downloadraul-e21b04fd3f33629bbd2ac9f3db4236902cab4b2b.tar.gz
raul-e21b04fd3f33629bbd2ac9f3db4236902cab4b2b.tar.bz2
raul-e21b04fd3f33629bbd2ac9f3db4236902cab4b2b.zip
Trivial documentation fixups.
git-svn-id: http://svn.drobilla.net/lad/raul@175 a436a847-0d15-0410-975c-d299462d15a1
-rw-r--r--raul/Atom.h2
-rw-r--r--raul/AtomLiblo.h2
-rw-r--r--raul/AtomRaptor.h2
-rw-r--r--raul/Condition.h2
-rw-r--r--raul/Makefile.am1
-rw-r--r--raul/Mutex.h2
-rw-r--r--raul/Path.h2
-rw-r--r--raul/Process.h85
-rw-r--r--raul/Queue.h2
-rw-r--r--raul/Semaphore.h2
-rw-r--r--raul/Slave.h8
-rw-r--r--raul/Thread.h2
12 files changed, 107 insertions, 5 deletions
diff --git a/raul/Atom.h b/raul/Atom.h
index 4d85f7f..372cd78 100644
--- a/raul/Atom.h
+++ b/raul/Atom.h
@@ -26,6 +26,8 @@ using std::string;
/** An OSC atom (fundamental data types OSC messages are composed of).
+ *
+ * \ingroup raul
*/
class Atom {
public:
diff --git a/raul/AtomLiblo.h b/raul/AtomLiblo.h
index 772a26e..6812dcf 100644
--- a/raul/AtomLiblo.h
+++ b/raul/AtomLiblo.h
@@ -24,6 +24,8 @@
/** Support for serializing an Atom to/from liblo messages.
*
* (Here to prevent a unnecessary liblo dependency for Atom).
+ *
+ * \ingroup raul
*/
class AtomLiblo {
public:
diff --git a/raul/AtomRaptor.h b/raul/AtomRaptor.h
index b06286d..ec971e7 100644
--- a/raul/AtomRaptor.h
+++ b/raul/AtomRaptor.h
@@ -27,6 +27,8 @@
/** Support for serializing an Atom to/from RDF (via redland aka librdf).
*
* (Here to prevent a unnecessary redland dependency for Atom).
+ *
+ * \ingroup raul
*/
class AtomRaptor {
public:
diff --git a/raul/Condition.h b/raul/Condition.h
index 29eaec8..0f20c29 100644
--- a/raul/Condition.h
+++ b/raul/Condition.h
@@ -23,6 +23,8 @@
/** Trivial (but pretty) wrapper around POSIX Conditions (zero overhead).
*
* A semaphore that isn't a counter, is slow, and not realtime safe. Yay.
+ *
+ * \ingroup raul
*/
class Condition {
public:
diff --git a/raul/Makefile.am b/raul/Makefile.am
index 7d5ac48..fa79ae3 100644
--- a/raul/Makefile.am
+++ b/raul/Makefile.am
@@ -8,6 +8,7 @@ raulinclude_HEADERS = \
Semaphore.h \
Mutex.h \
Condition.h \
+ Process.h \
Thread.h \
Slave.h \
Atom.h
diff --git a/raul/Mutex.h b/raul/Mutex.h
index 8cff728..57dedba 100644
--- a/raul/Mutex.h
+++ b/raul/Mutex.h
@@ -21,6 +21,8 @@
/** Trivial (but pretty) wrapper around POSIX Mutexes (zero overhead).
+ *
+ * \ingroup raul
*/
class Mutex {
public:
diff --git a/raul/Path.h b/raul/Path.h
index 9412e3c..d4db163 100644
--- a/raul/Path.h
+++ b/raul/Path.h
@@ -34,6 +34,8 @@ using std::string;
*
* Valid characters are the 95 printable ASCII characters (32-126), excluding:
* space # * , ? [ ] { }
+ *
+ * \ingroup raul
*/
class Path : public std::basic_string<char> {
public:
diff --git a/raul/Process.h b/raul/Process.h
new file mode 100644
index 0000000..698e1b9
--- /dev/null
+++ b/raul/Process.h
@@ -0,0 +1,85 @@
+/* This file is part of Raul. Copyright (C) 2006 Dave Robillard.
+ *
+ * Raul 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.
+ *
+ * Raul 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 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef RAUL_PROCESS_H
+#define RAUL_PROCESS_H
+
+#include <string>
+#include <iostream>
+#include <unistd.h>
+
+/** A child process.
+ *
+ * \ingroup raul
+ */
+class Process
+{
+public:
+
+ /** Launch a sub process.
+ *
+ * @param command can be a typical shell command with parameters, the PATH is searched etc.
+ */
+ bool launch(std::string command)
+ {
+ const string executable = (command.find(" ") != string::npos)
+ ? command.substr(0, command.find(" "))
+ : command;
+
+ std::cerr << "Launching child process '" << executable << "' with command line '"
+ << command << "'" << endl;
+
+ // Use the same double fork() trick as JACK to prevent zombie children
+ const int err = fork();
+
+ if (err == 0) {
+ // (child)
+
+ // close all nonstandard file descriptors
+ const int max_fds = getdtablesize();
+ int fd;
+ for (fd = 3; fd < max_fds; ++fd)
+ close(fd);
+
+ switch (fork()) {
+
+ case 0:
+ // (grandchild)
+ setsid();
+ execlp(executable.c_str(), command.c_str(), NULL);
+ _exit(-1);
+
+ case -1:
+ // (second) fork failed, there is no grandchild
+ _exit (-1);
+
+ /* exit the child process here */
+ default:
+ _exit (0);
+ }
+
+ return (err > 0);
+ }
+
+private:
+ // .... no :) (undefined)
+ Process();
+ Process(const Process&);
+ Process& operator=(const Process&);
+};
+
+
+#endif // RAUL_PROCESS_H
diff --git a/raul/Queue.h b/raul/Queue.h
index f400497..071ed4e 100644
--- a/raul/Queue.h
+++ b/raul/Queue.h
@@ -28,6 +28,8 @@
* the push and pop operations themselves are not thread-safe.
*
* FIXME: Verify atomicity of everything here.
+ *
+ * \ingroup raul
*/
template <typename T>
class Queue
diff --git a/raul/Semaphore.h b/raul/Semaphore.h
index 9a696f9..213e1d0 100644
--- a/raul/Semaphore.h
+++ b/raul/Semaphore.h
@@ -28,6 +28,8 @@
* really needs to update it's man pages.
*
* This class remains as a trivial (yet pretty) wrapper/abstraction.
+ *
+ * \ingroup raul
*/
class Semaphore {
public:
diff --git a/raul/Slave.h b/raul/Slave.h
index c16818b..fb0c67c 100644
--- a/raul/Slave.h
+++ b/raul/Slave.h
@@ -1,11 +1,11 @@
-/* This file is part of Ingen. Copyright (C) 2006 Dave Robillard.
+/* This file is part of Raul. Copyright (C) 2006 Dave Robillard.
*
- * Ingen is free software; you can redistribute it and/or modify it under the
+ * Raul 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.
*
- * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY
+ * Raul 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 details.
*
@@ -27,7 +27,7 @@
* Use this to perform some task in a separate thread you want to 'drive'
* from a realtime (or otherwise) thread.
*
- * \ingroup engine
+ * \ingroup raul
*/
class Slave : public Thread
{
diff --git a/raul/Thread.h b/raul/Thread.h
index 37dcacd..04a7be4 100644
--- a/raul/Thread.h
+++ b/raul/Thread.h
@@ -27,7 +27,7 @@
* Extend this and override the _run method to easily create a thread
* to perform some task.
*
- * \ingroup engine
+ * \ingroup raul
*/
class Thread
{