FrameworkClient.cpp revision 7e8529a8b528fd30586aa037f15a31b29582c537
1#include <alloca.h>
2#include <errno.h>
3#include <sys/types.h>
4#include <pthread.h>
5
6#define LOG_TAG "FrameworkClient"
7#include <cutils/log.h>
8
9#include <sysutils/FrameworkClient.h>
10
11FrameworkClient::FrameworkClient(int socket) {
12    mSocket = socket;
13    pthread_mutex_init(&mWriteMutex, NULL);
14}
15
16int FrameworkClient::sendMsg(const char *msg) {
17    if (mSocket < 0) {
18        errno = EHOSTUNREACH;
19        return -1;
20    }
21
22    pthread_mutex_lock(&mWriteMutex);
23    if (write(mSocket, msg, strlen(msg) +1) < 0) {
24        SLOGW("Unable to send msg '%s' (%s)", msg, strerror(errno));
25    }
26    pthread_mutex_unlock(&mWriteMutex);
27    return 0;
28}
29
30int FrameworkClient::sendMsg(const char *msg, const char *data) {
31    char *buffer = (char *) alloca(strlen(msg) + strlen(data) + 1);
32    if (!buffer) {
33        errno = -ENOMEM;
34        return -1;
35    }
36    strcpy(buffer, msg);
37    strcat(buffer, data);
38    return sendMsg(buffer);
39}
40
41