package org.lttng.ust.agent;
-import org.lttng.ust.agent.jul.LTTngJUL;
-
import java.io.IOException;
-import java.io.InputStream;
-import java.io.BufferedReader;
-import java.io.FileReader;
+import java.lang.reflect.InvocationTargetException;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
-import java.util.Enumeration;
-import java.lang.reflect.InvocationTargetException;
-
-import java.util.logging.Logger;
-import java.util.logging.SimpleFormatter;
public class LTTngAgent {
/* Domains */
* Constructor is private. This is a singleton and a reference should be
* acquired using getLTTngAgent().
*/
- private LTTngAgent() throws IOException {
+ private LTTngAgent() {
initAgentJULClasses();
/* Since Log4j is a 3rd party JAR, we need to check if we can load any of its classes */
initAgentLog4jClasses();
}
- this.registerSem = new Semaphore(0, true);
+ registerSem = new Semaphore(0, true);
}
- private Boolean loadLog4jClasses() {
+ private static Boolean loadLog4jClasses() {
Class<?> logging;
try {
return true;
}
- private Class<?> loadClass(String className) throws ClassNotFoundException {
+ private static Class<?> loadClass(String className) throws ClassNotFoundException {
ClassLoader loader;
Class<?> loadedClass;
private void initAgentJULClasses() {
try {
Class<?> lttngJUL = loadClass("org.lttng.ust.agent.jul.LTTngJUL");
- this.julUser = (LogFramework)lttngJUL.getDeclaredConstructor(new Class[] {Boolean.class}).newInstance(false);
- this.julRoot = (LogFramework)lttngJUL.getDeclaredConstructor(new Class[] {Boolean.class}).newInstance(true);
+ julUser = (LogFramework)lttngJUL.getDeclaredConstructor(new Class[] {Boolean.class}).newInstance(false);
+ julRoot = (LogFramework)lttngJUL.getDeclaredConstructor(new Class[] {Boolean.class}).newInstance(true);
this.useJUL = true;
} catch (ClassNotFoundException e) {
/* LTTng JUL classes not found, no need to create the relevant objects */
private void initAgentLog4jClasses() {
try {
Class<?> lttngLog4j = loadClass("org.lttng.ust.agent.log4j.LTTngLog4j");
- this.log4jUser = (LogFramework)lttngLog4j.getDeclaredConstructor(new Class[] {Boolean.class}).newInstance(false);
- this.log4jRoot = (LogFramework)lttngLog4j.getDeclaredConstructor(new Class[] {Boolean.class}).newInstance(true);
+ log4jUser = (LogFramework)lttngLog4j.getDeclaredConstructor(new Class[] {Boolean.class}).newInstance(false);
+ log4jRoot = (LogFramework)lttngLog4j.getDeclaredConstructor(new Class[] {Boolean.class}).newInstance(true);
this.useLog4j = true;
} catch (ClassNotFoundException e) {
/* LTTng Log4j classes not found, no need to create the relevant objects */
return curAgent;
}
- private synchronized void init() throws SecurityException, IOException {
- if (this.initialized) {
+ private synchronized void init() throws SecurityException {
+ if (initialized) {
return;
}
/* Wait for each registration to end. */
try {
- this.registerSem.tryAcquire(numThreads,
+ registerSem.tryAcquire(numThreads,
semTimeout,
TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
- this.initialized = true;
+ initialized = true;
}
- private synchronized Integer initJULClientThreads() {
+ private synchronized static Integer initJULClientThreads() {
Integer numThreads = 2;
/* Handle user session daemon if any. */
- this.julUserClient = new LTTngTCPSessiondClient(Domain.JUL,
- this.julUser,
- this.registerSem);
+ julUserClient = new LTTngTCPSessiondClient(Domain.JUL,
+ julUser,
+ registerSem);
String userThreadName = "LTTng UST agent JUL user thread";
- this.sessiondThreadJULUser = new Thread(julUserClient, userThreadName);
- this.sessiondThreadJULUser.setDaemon(true);
- this.sessiondThreadJULUser.start();
+ sessiondThreadJULUser = new Thread(julUserClient, userThreadName);
+ sessiondThreadJULUser.setDaemon(true);
+ sessiondThreadJULUser.start();
/* Handle root session daemon. */
- this.julRootClient = new LTTngTCPSessiondClient(Domain.JUL,
- this.julRoot,
- this.registerSem);
+ julRootClient = new LTTngTCPSessiondClient(Domain.JUL,
+ julRoot,
+ registerSem);
String rootThreadName = "LTTng UST agent JUL root thread";
- this.sessiondThreadJULRoot = new Thread(julRootClient, rootThreadName);
- this.sessiondThreadJULRoot.setDaemon(true);
- this.sessiondThreadJULRoot.start();
+ sessiondThreadJULRoot = new Thread(julRootClient, rootThreadName);
+ sessiondThreadJULRoot.setDaemon(true);
+ sessiondThreadJULRoot.start();
return numThreads;
}
- private synchronized Integer initLog4jClientThreads() {
+ private synchronized static Integer initLog4jClientThreads() {
Integer numThreads = 2;
- this.log4jUserClient = new LTTngTCPSessiondClient(Domain.LOG4J,
- this.log4jUser,
- this.registerSem);
+ log4jUserClient = new LTTngTCPSessiondClient(Domain.LOG4J,
+ log4jUser,
+ registerSem);
String userThreadName = "LTTng UST agent Log4j user thread";
- this.sessiondThreadLog4jUser = new Thread(log4jUserClient, userThreadName);
- this.sessiondThreadLog4jUser.setDaemon(true);
- this.sessiondThreadLog4jUser.start();
+ sessiondThreadLog4jUser = new Thread(log4jUserClient, userThreadName);
+ sessiondThreadLog4jUser.setDaemon(true);
+ sessiondThreadLog4jUser.start();
- this.log4jRootClient = new LTTngTCPSessiondClient(Domain.LOG4J,
- this.log4jRoot,
- this.registerSem);
+ log4jRootClient = new LTTngTCPSessiondClient(Domain.LOG4J,
+ log4jRoot,
+ registerSem);
String rootThreadName = "LTTng UST agent Log4j root thread";
- this.sessiondThreadLog4jRoot = new Thread(log4jRootClient,rootThreadName);
- this.sessiondThreadLog4jRoot.setDaemon(true);
- this.sessiondThreadLog4jRoot.start();
+ sessiondThreadLog4jRoot = new Thread(log4jRootClient,rootThreadName);
+ sessiondThreadLog4jRoot.setDaemon(true);
+ sessiondThreadLog4jRoot.start();
return numThreads;
}
public void dispose() throws IOException {
if (this.useJUL) {
- this.julUserClient.destroy();
- this.julRootClient.destroy();
- this.julUser.reset();
- this.julRoot.reset();
+ julUserClient.destroy();
+ julRootClient.destroy();
+ julUser.reset();
+ julRoot.reset();
}
if (this.useLog4j) {
- this.log4jUserClient.destroy();
- this.log4jRootClient.destroy();
- this.log4jUser.reset();
- this.log4jRoot.reset();
+ log4jUserClient.destroy();
+ log4jRootClient.destroy();
+ log4jUser.reset();
+ log4jRoot.reset();
}
try {
if (this.useJUL) {
- this.sessiondThreadJULUser.join();
- this.sessiondThreadJULRoot.join();
+ sessiondThreadJULUser.join();
+ sessiondThreadJULRoot.join();
}
if (this.useLog4j) {
- this.sessiondThreadLog4jUser.join();
- this.sessiondThreadLog4jRoot.join();
+ sessiondThreadLog4jUser.join();
+ sessiondThreadLog4jRoot.join();
}
} catch (InterruptedException e) {
package org.lttng.ust.agent;
-import java.util.concurrent.Semaphore;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.lang.Integer;
-import java.io.IOException;
-import java.io.BufferedOutputStream;
import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
import java.io.DataInputStream;
-import java.io.FileReader;
+import java.io.DataOutputStream;
import java.io.FileNotFoundException;
-import java.net.*;
+import java.io.FileReader;
+import java.io.IOException;
import java.lang.management.ManagementFactory;
+import java.net.Socket;
+import java.net.UnknownHostException;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.util.concurrent.Semaphore;
class LTTngTCPSessiondClient implements Runnable {
*/
private void recvHeader() throws Exception {
int read_len;
- byte data[] = new byte[this.headerCmd.SIZE];
+ byte data[] = new byte[LTTngSessiondCmd2_6.sessiond_hdr.SIZE];
read_len = this.inFromSessiond.read(data, 0, data.length);
if (read_len != data.length) {
* Handle session command from the session daemon.
*/
private void handleSessiondCmd() throws Exception {
- int ret_code;
byte data[] = null;
while (true) {
data = new byte[4];
ByteBuffer buf = ByteBuffer.wrap(data);
buf.order(ByteOrder.BIG_ENDIAN);
- LTTngSessiondCmd2_6.lttng_agent_ret_code code =
- LTTngSessiondCmd2_6.lttng_agent_ret_code.CODE_INVALID_CMD;
break;
}
}
}
}
- private String getHomePath() {
+ private static String getHomePath() {
return System.getProperty("user.home");
}
*
* @return port value if found else 0.
*/
- private int getPortFromFile(String path) throws IOException {
+ private static int getPortFromFile(String path) throws IOException {
int port;
BufferedReader br;
}
}
- this.sessiondSock = new Socket(this.sessiondHost, port);
+ this.sessiondSock = new Socket(sessiondHost, port);
this.inFromSessiond = new DataInputStream(
sessiondSock.getInputStream());
this.outToSessiond = new DataOutputStream(
buf.putInt(this.agentDomain.value());
buf.putInt(Integer.parseInt(pid));
- buf.putInt(this.protocolMajorVersion);
- buf.putInt(this.protocolMinorVersion);
+ buf.putInt(protocolMajorVersion);
+ buf.putInt(protocolMinorVersion);
this.outToSessiond.write(data, 0, data.length);
this.outToSessiond.flush();
}