Home | History | Annotate | Download | only in src
      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 
     11 FrameworkClient::FrameworkClient(int socket) {
     12     mSocket = socket;
     13     pthread_mutex_init(&mWriteMutex, NULL);
     14 }
     15 
     16 int 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 
     30 int 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