summaryrefslogtreecommitdiffstats
path: root/include/gui/BitTube.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/gui/BitTube.h')
-rw-r--r--include/gui/BitTube.h31
1 files changed, 25 insertions, 6 deletions
diff --git a/include/gui/BitTube.h b/include/gui/BitTube.h
index 3022d05..d32df84 100644
--- a/include/gui/BitTube.h
+++ b/include/gui/BitTube.h
@@ -33,30 +33,49 @@ class BitTube : public RefBase
{
public:
- BitTube();
- BitTube(const Parcel& data);
+ // creates a BitTube with a default (4KB) send buffer
+ BitTube();
+
+ // creates a BitTube with a a specified send and receive buffer size
+ explicit BitTube(size_t bufsize);
+
+ explicit BitTube(const Parcel& data);
virtual ~BitTube();
+ // check state after construction
status_t initCheck() const;
- int getFd() const;
- ssize_t write(void const* vaddr, size_t size);
- ssize_t read(void* vaddr, size_t size);
- status_t writeToParcel(Parcel* reply) const;
+ // get receive file-descriptor
+ int getFd() const;
+ // send objects (sized blobs). All objects are guaranteed to be written or the call fails.
template <typename T>
static ssize_t sendObjects(const sp<BitTube>& tube,
T const* events, size_t count) {
return sendObjects(tube, events, count, sizeof(T));
}
+ // receive objects (sized blobs). If the receiving buffer isn't large enough,
+ // excess messages are silently discarded.
template <typename T>
static ssize_t recvObjects(const sp<BitTube>& tube,
T* events, size_t count) {
return recvObjects(tube, events, count, sizeof(T));
}
+ // parcels this BitTube
+ status_t writeToParcel(Parcel* reply) const;
+
private:
+ void init(size_t rcvbuf, size_t sndbuf);
+
+ // send a message. The write is guaranteed to send the whole message or fail.
+ ssize_t write(void const* vaddr, size_t size);
+
+ // receive a message. the passed buffer must be at least as large as the
+ // write call used to send the message, excess data is silently discarded.
+ ssize_t read(void* vaddr, size_t size);
+
int mSendFd;
mutable int mReceiveFd;