1/*
2* Copyright 2010, Haiku. All rights reserved.
3* Distributed under the terms of the MIT License.
4*
5* Authors:
6*		Ithamar R. Adema <ithamar.adema@team-embedded.nl>
7*/
8#ifndef FILTERIO_H
9#define FILTERIO_H
10
11
12#include <DataIO.h>
13#include <OS.h>
14
15
16class BString;
17
18
19class FilterIO : public BDataIO
20{
21public:
22						FilterIO(int argc, const char** argv,
23							const char** envp = NULL);
24						FilterIO(const BString& cmdline);
25						~FilterIO();
26
27			status_t	InitCheck() const
28						{
29							return fInitErr;
30						}
31
32			ssize_t		Read(void* buffer, size_t size);
33			ssize_t		Write(const void* buffer, size_t size);
34private:
35			int			fStdIn, fStdOut, fStdErr;
36			thread_id	fThreadId;
37			status_t	fInitErr;
38
39			status_t	InitData(int argc, const char** argv,
40							const char** envp = NULL);
41			thread_id	PipeCommand(int argc, const char** argv, int& in,
42							int& out, int& err, const char** envp = NULL);
43};
44
45#endif // FILTERIO_H
46