import java.nio.ByteBuffer;
import java.nio.ByteOrder;
+import java.lang.Object;
import java.util.logging.Logger;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Enumeration;
*/
final static int NAME_MAX = 255;
+ /*
+ * Size of a primitive type int in byte. Because you know, Java can't
+ * provide that since it does not makes sense...
+ */
+ final static int INT_SIZE = 4;
+
public interface SessiondResponse {
/**
* Gets a byte array of the command so that it may be streamed
public class sessiond_enable_handler implements SessiondResponse, SessiondCommand {
private final static int SIZE = 4;
public String name;
+ public int lttngLogLevel;
+ public int lttngLogLevelType;
/** Return status code to the session daemon. */
public lttng_jul_ret_code code;
@Override
public void populate(byte[] data) {
+ int data_offset = INT_SIZE * 2;
+
ByteBuffer buf = ByteBuffer.wrap(data);
buf.order(ByteOrder.LITTLE_ENDIAN);
- name = new String(data, 0, data.length);
+ lttngLogLevel = buf.getInt();
+ lttngLogLevelType = buf.getInt();
+ name = new String(data, data_offset, data.length - data_offset);
}
@Override
* @return Event name as a string if the event is NOT found thus was
* not enabled.
*/
- public String execute(LTTngLogHandler handler) {
+ public String execute(LTTngLogHandler handler, HashMap enabledLoggers) {
Logger logger;
if (name == null) {
continue;
}
+ if (enabledLoggers.get(loggerName) != null) {
+ continue;
+ }
+
logger = handler.logManager.getLogger(loggerName);
+ handler.setLogLevel(loggerName, lttngLogLevel,
+ lttngLogLevelType);
logger.addHandler(handler);
+ enabledLoggers.put(loggerName, logger);
}
this.code = lttng_jul_ret_code.CODE_SUCCESS_CMD;
- return null;
+ /*
+ * Return the name as a new string so we can add the * event
+ * name to the event list that we need to enable for new
+ * Logger.
+ */
+ return new String(name);
}
this.code = lttng_jul_ret_code.CODE_SUCCESS_CMD;
logger = handler.logManager.getLogger(name.trim());
if (logger != null) {
+ handler.setLogLevel(name.trim(), lttngLogLevel,
+ lttngLogLevelType);
logger.addHandler(handler);
+ enabledLoggers.put(name.trim(), logger);
return null;
} else {
return new String(name);