aboutsummaryrefslogtreecommitdiff
path: root/tools/gator/daemon/AnnotateListener.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gator/daemon/AnnotateListener.cpp')
-rw-r--r--tools/gator/daemon/AnnotateListener.cpp30
1 files changed, 25 insertions, 5 deletions
diff --git a/tools/gator/daemon/AnnotateListener.cpp b/tools/gator/daemon/AnnotateListener.cpp
index 50110b4dc84c..5966cbea8d13 100644
--- a/tools/gator/daemon/AnnotateListener.cpp
+++ b/tools/gator/daemon/AnnotateListener.cpp
@@ -1,5 +1,5 @@
/**
- * Copyright (C) ARM Limited 2014. All rights reserved.
+ * Copyright (C) ARM Limited 2014-2015. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
@@ -12,36 +12,56 @@
#include "OlySocket.h"
+static const char STREAMLINE_ANNOTATE_PARENT[] = "\0streamline-annotate-parent";
+
struct AnnotateClient {
AnnotateClient *next;
int fd;
};
-AnnotateListener::AnnotateListener() : mClients(NULL), mSock(NULL) {
+AnnotateListener::AnnotateListener() : mClients(NULL), mSock(NULL), mUds(NULL) {
}
AnnotateListener::~AnnotateListener() {
close();
+ delete mUds;
delete mSock;
}
void AnnotateListener::setup() {
mSock = new OlyServerSocket(8082);
+ mUds = new OlyServerSocket(STREAMLINE_ANNOTATE_PARENT, sizeof(STREAMLINE_ANNOTATE_PARENT), true);
}
-int AnnotateListener::getFd() {
+int AnnotateListener::getSockFd() {
return mSock->getFd();
}
-void AnnotateListener::handle() {
+void AnnotateListener::handleSock() {
AnnotateClient *const client = new AnnotateClient();
client->fd = mSock->acceptConnection();
client->next = mClients;
mClients = client;
}
+int AnnotateListener::getUdsFd() {
+ return mUds->getFd();
+}
+
+void AnnotateListener::handleUds() {
+ AnnotateClient *const client = new AnnotateClient();
+ client->fd = mUds->acceptConnection();
+ client->next = mClients;
+ mClients = client;
+}
+
void AnnotateListener::close() {
- mSock->closeServerSocket();
+ if (mUds != NULL) {
+ mUds->closeServerSocket();
+ }
+ if (mSock != NULL) {
+ mSock->closeServerSocket();
+ }
while (mClients != NULL) {
::close(mClients->fd);
AnnotateClient *next = mClients->next;