• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
FrameworkClient(int socket)11 FrameworkClient::FrameworkClient(int socket) {
12     mSocket = socket;
13     pthread_mutex_init(&mWriteMutex, NULL);
14 }
15 
sendMsg(const char * msg)16 int FrameworkClient::sendMsg(const char *msg) {
17     int ret;
18     if (mSocket < 0) {
19         errno = EHOSTUNREACH;
20         return -1;
21     }
22 
23     pthread_mutex_lock(&mWriteMutex);
24     ret = TEMP_FAILURE_RETRY(write(mSocket, msg, strlen(msg) +1));
25     if (ret < 0) {
26         SLOGW("Unable to send msg '%s' (%s)", msg, strerror(errno));
27     }
28     pthread_mutex_unlock(&mWriteMutex);
29     return 0;
30 }
31 
sendMsg(const char * msg,const char * data)32 int FrameworkClient::sendMsg(const char *msg, const char *data) {
33     size_t bufflen = strlen(msg) + strlen(data) + 1;
34     char *buffer = (char *) alloca(bufflen);
35     if (!buffer) {
36         errno = -ENOMEM;
37         return -1;
38     }
39     snprintf(buffer, bufflen, "%s%s", msg, data);
40     return sendMsg(buffer);
41 }
42 
43