Implement Java agent application context retrieval
[lttng-ust.git] / liblttng-ust-java-agent / java / lttng-ust-agent-common / org / lttng / ust / agent / client / LttngTcpSessiondClient.java
index 3e9e24dd65463d2100d7d8095595919a24cddbcb..5b5d50c4e3f360b563fb3fd2062934bdb47afac0 100644 (file)
@@ -1,4 +1,5 @@
 /*
+ * Copyright (C) 2015-2016 EfficiOS Inc., Alexandre Montplaisir <alexmonthy@efficios.com>
  * Copyright (C) 2013 - David Goulet <dgoulet@efficios.com>
  *
  * This library is free software; you can redistribute it and/or modify it
@@ -31,8 +32,6 @@ import java.nio.ByteOrder;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
-import org.lttng.ust.agent.AbstractLttngAgent;
-
 /**
  * Client for agents to connect to a local session daemon, using a TCP socket.
  *
@@ -44,8 +43,8 @@ public class LttngTcpSessiondClient implements Runnable {
        private static final String ROOT_PORT_FILE = "/var/run/lttng/agent.port";
        private static final String USER_PORT_FILE = "/.lttng/agent.port";
 
-       private static int protocolMajorVersion = 1;
-       private static int protocolMinorVersion = 0;
+       private static final int PROTOCOL_MAJOR_VERSION = 2;
+       private static final int PROTOCOL_MINOR_VERSION = 0;
 
        /** Command header from the session deamon. */
        private final CountDownLatch registrationLatch = new CountDownLatch(1);
@@ -56,21 +55,26 @@ public class LttngTcpSessiondClient implements Runnable {
        private DataInputStream inFromSessiond;
        private DataOutputStream outToSessiond;
 
-       private final AbstractLttngAgent<?> logAgent;
+       private final ILttngTcpClientListener logAgent;
+       private final int domainValue;
        private final boolean isRoot;
 
-
        /**
         * Constructor
         *
         * @param logAgent
-        *            The logging agent this client will operate on.
+        *            The listener this client will operate on, typically an LTTng
+        *            agent.
+        * @param domainValue
+        *            The integer to send to the session daemon representing the
+        *            tracing domain to handle.
         * @param isRoot
         *            True if this client should connect to the root session daemon,
         *            false if it should connect to the user one.
         */
-       public LttngTcpSessiondClient(AbstractLttngAgent<?> logAgent, boolean isRoot) {
+       public LttngTcpSessiondClient(ILttngTcpClientListener logAgent, int domainValue, boolean isRoot) {
                this.logAgent = logAgent;
+               this.domainValue = domainValue;
                this.isRoot = isRoot;
        }
 
@@ -206,10 +210,10 @@ public class LttngTcpSessiondClient implements Runnable {
                ByteBuffer buf = ByteBuffer.wrap(data);
                String pid = ManagementFactory.getRuntimeMXBean().getName().split("@")[0];
 
-               buf.putInt(logAgent.getDomain().value());
+               buf.putInt(domainValue);
                buf.putInt(Integer.parseInt(pid));
-               buf.putInt(protocolMajorVersion);
-               buf.putInt(protocolMinorVersion);
+               buf.putInt(PROTOCOL_MAJOR_VERSION);
+               buf.putInt(PROTOCOL_MINOR_VERSION);
                this.outToSessiond.write(data, 0, data.length);
                this.outToSessiond.flush();
        }
@@ -247,32 +251,56 @@ public class LttngTcpSessiondClient implements Runnable {
                        }
                        case CMD_LIST:
                        {
-                               ISessiondCommand listLoggerCmd = new SessiondListLoggersCommand();
-                               ILttngAgentResponse response = listLoggerCmd.execute(logAgent);
+                               SessiondCommand listLoggerCmd = new SessiondListLoggersCommand();
+                               LttngAgentResponse response = listLoggerCmd.execute(logAgent);
                                responseData = response.getBytes();
                                break;
                        }
-                       case CMD_ENABLE:
+                       case CMD_EVENT_ENABLE:
                        {
                                if (inputData == null) {
                                        /* Invalid command */
-                                       responseData = ILttngAgentResponse.FAILURE_RESPONSE.getBytes();
+                                       responseData = LttngAgentResponse.FAILURE_RESPONSE.getBytes();
                                        break;
                                }
-                               ISessiondCommand enableCmd = new SessiondEnableEventCommand(inputData);
-                               ILttngAgentResponse response = enableCmd.execute(logAgent);
+                               SessiondCommand enableEventCmd = new SessiondEnableEventCommand(inputData);
+                               LttngAgentResponse response = enableEventCmd.execute(logAgent);
                                responseData = response.getBytes();
                                break;
                        }
-                       case CMD_DISABLE:
+                       case CMD_EVENT_DISABLE:
                        {
                                if (inputData == null) {
                                        /* Invalid command */
-                                       responseData = ILttngAgentResponse.FAILURE_RESPONSE.getBytes();
+                                       responseData = LttngAgentResponse.FAILURE_RESPONSE.getBytes();
+                                       break;
+                               }
+                               SessiondCommand disableEventCmd = new SessiondDisableEventCommand(inputData);
+                               LttngAgentResponse response = disableEventCmd.execute(logAgent);
+                               responseData = response.getBytes();
+                               break;
+                       }
+                       case CMD_APP_CTX_ENABLE:
+                       {
+                               if (inputData == null) {
+                                       /* This commands expects a payload, invalid command */
+                                       responseData = LttngAgentResponse.FAILURE_RESPONSE.getBytes();
+                                       break;
+                               }
+                               SessiondCommand enableAppCtxCmd = new SessiondEnableAppContextCommand(inputData);
+                               LttngAgentResponse response = enableAppCtxCmd.execute(logAgent);
+                               responseData = response.getBytes();
+                               break;
+                       }
+                       case CMD_APP_CTX_DISABLE:
+                       {
+                               if (inputData == null) {
+                                       /* This commands expects a payload, invalid command */
+                                       responseData = LttngAgentResponse.FAILURE_RESPONSE.getBytes();
                                        break;
                                }
-                               ISessiondCommand disableCmd = new SessiondDisableEventCommand(inputData);
-                               ILttngAgentResponse response = disableCmd.execute(logAgent);
+                               SessiondCommand disableAppCtxCmd = new SessiondDisableAppContextCommand(inputData);
+                               LttngAgentResponse response = disableAppCtxCmd.execute(logAgent);
                                responseData = response.getBytes();
                                break;
                        }
This page took 0.026082 seconds and 4 git commands to generate.