Move to kernel style SPDX license identifiers
[lttng-ust.git] / liblttng-ust-java-agent / java / lttng-ust-agent-common / org / lttng / ust / agent / client / SessiondListLoggersCommand.java
index c06eaaad95e09db12565d841a7b75c88ada37194..0500055c1394cc4af121136497d48391fa93fa3a 100644 (file)
@@ -1,27 +1,16 @@
 /*
- * Copyright (C) 2015 - EfficiOS Inc., Alexandre Montplaisir <alexmonthy@efficios.com>
- * Copyright (C) 2013 - David Goulet <dgoulet@efficios.com>
+ * SPDX-License-Identifier: LGPL-2.1-only
  *
- * This library is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License, version 2.1 only,
- * as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * Copyright (C) 2015 EfficiOS Inc.
+ * Copyright (C) 2015 Alexandre Montplaisir <alexmonthy@efficios.com>
+ * Copyright (C) 2013 David Goulet <dgoulet@efficios.com>
  */
 
 package org.lttng.ust.agent.client;
 
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Collection;
 
 /**
  * Session daemon command asking the Java agent to list its registered loggers,
@@ -30,31 +19,22 @@ import java.util.List;
  * @author Alexandre Montplaisir
  * @author David Goulet
  */
-class SessiondListLoggersCommand implements ISessiondCommand {
+class SessiondListLoggersCommand extends SessiondCommand {
 
        @Override
        public LttngAgentResponse execute(ILttngTcpClientListener agent) {
-               final List<String> loggerList = new ArrayList<String>();
-               int dataSize = 0;
-
-               for (String event : agent.listEnabledEvents()) {
-                       loggerList.add(event);
-                       dataSize += event.length() + 1;
-               }
-
-               return new SessiondListLoggersResponse(loggerList, dataSize);
+               final Collection<String> loggerList = agent.listAvailableEvents();
+               return new SessiondListLoggersResponse(loggerList);
        }
 
        private static class SessiondListLoggersResponse extends LttngAgentResponse {
 
                private final static int SIZE = 12;
 
-               private final List<String> loggers;
-               private final int dataSize;
+               private final Collection<String> loggers;
 
-               public SessiondListLoggersResponse(List<String> loggers, int dataSize) {
+               public SessiondListLoggersResponse(Collection<String> loggers) {
                        this.loggers = loggers;
-                       this.dataSize = dataSize;
                }
 
                @Override
@@ -65,17 +45,28 @@ class SessiondListLoggersCommand implements ISessiondCommand {
 
                @Override
                public byte[] getBytes() {
+                       /*
+                        * Compute the data size, which is the number of bytes of each
+                        * encoded string, +1 per string for the \0
+                        */
+                       int dataSize = 0;
+                       for (String logger : loggers) {
+                               dataSize += logger.getBytes(SESSIOND_PROTOCOL_CHARSET).length + 1;
+                       }
+
+                       /* Prepare the buffer */
                        byte data[] = new byte[SIZE + dataSize];
                        ByteBuffer buf = ByteBuffer.wrap(data);
                        buf.order(ByteOrder.BIG_ENDIAN);
 
-                       /* Returned code */
+                       /* Write the header section of the response */
                        buf.putInt(getReturnCode().getCode());
                        buf.putInt(dataSize);
                        buf.putInt(loggers.size());
 
+                       /* Write the payload */
                        for (String logger : loggers) {
-                               buf.put(logger.getBytes());
+                               buf.put(logger.getBytes(SESSIOND_PROTOCOL_CHARSET));
                                /* NULL terminated byte after the logger name. */
                                buf.put((byte) 0x0);
                        }
This page took 0.025508 seconds and 4 git commands to generate.