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