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