Log more information in the Java TCP client
[lttng-ust.git] / liblttng-ust-java-agent / java / lttng-ust-agent-common / org / lttng / ust / agent / client / SessiondEnableEventCommand.java
index c9183d19d9736d2f2cf3f0fab85239c3b6d3d2dd..089c36c0a44f60313cedc84e8f4c86975af2a22e 100644 (file)
@@ -31,7 +31,7 @@ import org.lttng.ust.agent.session.LogLevelSelector;
  * @author Alexandre Montplaisir
  * @author David Goulet
  */
-class SessiondEnableEventCommand implements ISessiondCommand {
+class SessiondEnableEventCommand extends SessiondCommand {
 
        /** Fixed event name length. Value defined by the lttng agent protocol. */
        private static final int EVENT_NAME_LENGTH = 256;
@@ -48,7 +48,7 @@ class SessiondEnableEventCommand implements ISessiondCommand {
                        throw new IllegalArgumentException();
                }
                ByteBuffer buf = ByteBuffer.wrap(data);
-               buf.order(ByteOrder.LITTLE_ENDIAN);
+               buf.order(ByteOrder.BIG_ENDIAN);
                int logLevel = buf.getInt();
                int logLevelType = buf.getInt();
                logLevelFilter = new LogLevelSelector(logLevel, logLevelType);
@@ -56,37 +56,13 @@ class SessiondEnableEventCommand implements ISessiondCommand {
                /* Read the event name */
                byte[] eventNameBytes = new byte[EVENT_NAME_LENGTH];
                buf.get(eventNameBytes);
-               eventName = new String(eventNameBytes).trim();
+               eventName = new String(eventNameBytes, SESSIOND_PROTOCOL_CHARSET).trim();
 
-               /*
-                * Read the filter string. The buffer contains the length (number of
-                * bytes), then the bytes themselves.
-                *
-                * The length is represented as an unsigned int, but it should never
-                * be greater than Integer.MAX_VALUE.
-                */
-               int filterStringLength = buf.getInt();
-               if (filterStringLength < 0) {
-                       /*
-                        * The (unsigned) length is above what the sessiond should send. The
-                        * command cannot be processed.
-                        */
-                       filterString = null;
-                       commandIsValid = false;
-                       return;
-               }
-               if (filterStringLength == 0) {
-                       /* There is explicitly no filter string */
-                       filterString = "";
-                       commandIsValid = true;
-                       return;
-               }
-
-               byte[] filterStringBytes = new byte[filterStringLength];
-               buf.get(filterStringBytes);
-               filterString = new String(filterStringBytes).trim();
+               /* Read the filter string */
+               filterString = readNextString(buf);
 
-               commandIsValid = true;
+               /* The command was invalid if the string could not be read correctly */
+               commandIsValid = (filterString != null);
        }
 
        @Override
@@ -99,4 +75,13 @@ class SessiondEnableEventCommand implements ISessiondCommand {
                boolean success = agent.eventEnabled(rule);
                return (success ? LttngAgentResponse.SUCESS_RESPONSE : LttngAgentResponse.FAILURE_RESPONSE);
        }
+
+       @Override
+       public String toString() {
+               return "SessiondEnableEventCommand["
+                               + "eventName=" + eventName
+                               + ", logLevel=" + logLevelFilter.toString()
+                               + ", filterString=" + filterString
+                               +"]";
+       }
 }
This page took 0.025391 seconds and 4 git commands to generate.