SocketClient.h revision 8c5669f9f9a228efebf4059fd4ceace5cece578b
1fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat#ifndef _SOCKET_CLIENT_H
2fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat#define _SOCKET_CLIENT_H
3fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat
4fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat#include "../../../frameworks/base/include/utils/List.h"
5fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat
6fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat#include <pthread.h>
730abb7234de2a9caa1add4b00a189436f0b24560Kenny Root#include <sys/types.h>
8fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat
9fa644ffe944c01a9b00f8d7676d58394fabee285San Mehatclass SocketClient {
10fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat    int             mSocket;
11fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat    pthread_mutex_t mWriteMutex;
12fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat
1330abb7234de2a9caa1add4b00a189436f0b24560Kenny Root    /* Peer process ID */
1430abb7234de2a9caa1add4b00a189436f0b24560Kenny Root    pid_t mPid;
1530abb7234de2a9caa1add4b00a189436f0b24560Kenny Root
1630abb7234de2a9caa1add4b00a189436f0b24560Kenny Root    /* Peer user ID */
1730abb7234de2a9caa1add4b00a189436f0b24560Kenny Root    uid_t mUid;
1830abb7234de2a9caa1add4b00a189436f0b24560Kenny Root
1930abb7234de2a9caa1add4b00a189436f0b24560Kenny Root    /* Peer group ID */
2030abb7234de2a9caa1add4b00a189436f0b24560Kenny Root    gid_t mGid;
2130abb7234de2a9caa1add4b00a189436f0b24560Kenny Root
22fa644ffe944c01a9b00f8d7676d58394fabee285San Mehatpublic:
23fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat    SocketClient(int sock);
24fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat    virtual ~SocketClient() {}
25fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat
26fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat    int getSocket() { return mSocket; }
2730abb7234de2a9caa1add4b00a189436f0b24560Kenny Root    pid_t getPid() const { return mPid; }
2830abb7234de2a9caa1add4b00a189436f0b24560Kenny Root    uid_t getUid() const { return mUid; }
2930abb7234de2a9caa1add4b00a189436f0b24560Kenny Root    gid_t getGid() const { return mGid; }
30fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat
318c5669f9f9a228efebf4059fd4ceace5cece578bBrad Fitzpatrick    // Send null-terminated C strings:
32db017545796747115b8797f03e662b0f398a7c7bSan Mehat    int sendMsg(int code, const char *msg, bool addErrno);
33db017545796747115b8797f03e662b0f398a7c7bSan Mehat    int sendMsg(const char *msg);
348c5669f9f9a228efebf4059fd4ceace5cece578bBrad Fitzpatrick
358c5669f9f9a228efebf4059fd4ceace5cece578bBrad Fitzpatrick    // Sending binary data:
368c5669f9f9a228efebf4059fd4ceace5cece578bBrad Fitzpatrick    int sendData(const void *data, int len);
37fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat};
38fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat
39fa644ffe944c01a9b00f8d7676d58394fabee285San Mehattypedef android::List<SocketClient *> SocketClientCollection;
40fa644ffe944c01a9b00f8d7676d58394fabee285San Mehat#endif
41