OSDN Git Service

initial files
[iptd/iPTd_R3.git] / src / Raym / Pipe.cpp
1 //\r
2 //\r
3 //\r
4 \r
5 #define DBG_LEVEL 0\r
6 #include <Raym/Log.h>\r
7 #include <Raym/Raym.h>\r
8 \r
9 namespace Raym\r
10 {\r
11 \r
12 Pipe::Pipe()\r
13 {\r
14     DebugLog2("Pipe::Pipe()");\r
15 \r
16     _fileHandleForReading = NULL;\r
17     _fileHandleForWriting = NULL;\r
18 }\r
19 \r
20 Pipe::~Pipe()\r
21 {\r
22     RELEASE(_fileHandleForReading);\r
23     RELEASE(_fileHandleForWriting);\r
24 \r
25     DebugLog2("Pipe::~Pipe()");\r
26 }\r
27 \r
28 Pipe *Pipe::alloc()\r
29 {\r
30     DebugLog2("Pipe::alloc()");\r
31 \r
32     return new Pipe();\r
33 }\r
34 \r
35 Pipe *Pipe::init()\r
36 {\r
37     DebugLog2("Pipe::init()");\r
38 \r
39     SECURITY_ATTRIBUTES sa;\r
40     sa.nLength              = sizeof(sa);\r
41     sa.lpSecurityDescriptor = 0;\r
42     sa.bInheritHandle       = TRUE;\r
43 \r
44     HANDLE read;\r
45     HANDLE write;\r
46     if (!CreatePipe(&read, &write, &sa, 0))\r
47     {\r
48         release();\r
49         return NULL;\r
50     }\r
51 \r
52     _fileHandleForReading = FileHandle::fileHandleWithHANDLE(read);\r
53     _fileHandleForReading->retain();\r
54     _fileHandleForWriting = FileHandle::fileHandleWithHANDLE(write);\r
55     _fileHandleForWriting->retain();\r
56 \r
57     return this;\r
58 }\r
59 \r
60 FileHandle *Pipe::fileHandleForReading()\r
61 {\r
62     DebugLog2("Pipe::fileHandleForReading()");\r
63 \r
64     return _fileHandleForReading;\r
65 }\r
66 \r
67 FileHandle *Pipe::fileHandleForWriting()\r
68 {\r
69     DebugLog2("Pipe::fileHandleForWriting()");\r
70 \r
71     return _fileHandleForWriting;\r
72 }\r
73 \r
74 const char *Pipe::className()\r
75 {\r
76     return "Pipe";\r
77 }\r
78 \r
79 } // Raym\r