diff options
Diffstat (limited to 'libsysutils/src/FrameworkClient.cpp')
-rw-r--r-- | libsysutils/src/FrameworkClient.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/libsysutils/src/FrameworkClient.cpp b/libsysutils/src/FrameworkClient.cpp new file mode 100644 index 0000000..237bb60 --- /dev/null +++ b/libsysutils/src/FrameworkClient.cpp @@ -0,0 +1,41 @@ +#include <alloca.h> +#include <errno.h> +#include <sys/types.h> +#include <pthread.h> + +#define LOG_TAG "FrameworkClient" +#include <cutils/log.h> + +#include <sysutils/FrameworkClient.h> + +FrameworkClient::FrameworkClient(int socket) { + mSocket = socket; + pthread_mutex_init(&mWriteMutex, NULL); +} + +int FrameworkClient::sendMsg(char *msg) { + LOGD("FrameworkClient::sendMsg(%s)", msg); + if (mSocket < 0) { + errno = EHOSTUNREACH; + return -1; + } + + pthread_mutex_lock(&mWriteMutex); + if (write(mSocket, msg, strlen(msg) +1) < 0) { + LOGW("Unable to send msg '%s' (%s)", msg, strerror(errno)); + } + pthread_mutex_unlock(&mWriteMutex); + return 0; +} + +int FrameworkClient::sendMsg(char *msg, char *data) { + char *buffer = (char *) alloca(strlen(msg) + strlen(data) + 1); + if (!buffer) { + errno = -ENOMEM; + return -1; + } + strcpy(buffer, msg); + strcat(buffer, data); + return sendMsg(buffer); +} + |