#ifndef _SOCKET_CLIENT_H #define _SOCKET_CLIENT_H #include "../../../frameworks/base/include/utils/List.h" #include #include class SocketClient { int mSocket; pthread_mutex_t mWriteMutex; /* Peer process ID */ pid_t mPid; /* Peer user ID */ uid_t mUid; /* Peer group ID */ gid_t mGid; /* Reference count (starts at 1) */ pthread_mutex_t mRefCountMutex; int mRefCount; public: SocketClient(int sock); virtual ~SocketClient() {} int getSocket() { return mSocket; } pid_t getPid() const { return mPid; } uid_t getUid() const { return mUid; } gid_t getGid() const { return mGid; } // Send null-terminated C strings: int sendMsg(int code, const char *msg, bool addErrno); int sendMsg(const char *msg); // Sending binary data: int sendData(const void *data, int len); // Optional reference counting. Reference count starts at 1. If // it's decremented to 0, it deletes itself. // SocketListener creates a SocketClient (at refcount 1) and calls // decRef() when it's done with the client. void incRef(); bool decRef(); // returns true at 0 (but note: SocketClient already deleted) }; typedef android::List SocketClientCollection; #endif