| // |
| // Copyright 2005 The Android Open Source Project |
| // |
| // Create or attach to a named bi-directional channel on the local machine. |
| // |
| #ifndef __LIBS_LOCALBICHANNEL_H |
| #define __LIBS_LOCALBICHANNEL_H |
| |
| #ifdef HAVE_ANDROID_OS |
| #error DO NOT USE THIS FILE IN THE DEVICE BUILD |
| #endif |
| |
| #include "Pipe.h" |
| |
| namespace android { |
| |
| /* |
| * This is essentially a wrapper class for UNIX-domain sockets. The |
| * idea is to set one up with create() or attach to one with attach() |
| * and then extract the unidirectional read/write Pipes. These can |
| * be used directly or stuffed into a MessageStream. |
| * |
| * The name for the pipe should be a short filename made up of alphanumeric |
| * characters. Depending on the implementation, we may create a file in |
| * /tmp with the specified name, removing any existing copy. |
| */ |
| class LocalBiChannel { |
| public: |
| LocalBiChannel(void); |
| ~LocalBiChannel(void); |
| |
| /* create the "listen" side */ |
| bool create(const char* name); |
| |
| /* |
| * Listen for a connection. When we get one, we create unidirectional |
| * read/write pipes and return them. |
| */ |
| bool listen(Pipe** ppReadPipe, Pipe** ppWritePipe); |
| |
| /* |
| * Attach to a channel created by somebody else. Returns pipes. |
| */ |
| bool attach(const char* name, Pipe** ppReadPipe, Pipe** ppWritePipe); |
| |
| private: |
| char* mFileName; |
| bool mIsListener; |
| unsigned long mHandle; |
| }; |
| |
| }; // namespace android |
| |
| #endif // __LIBS_LOCALBICHANNEL_H |