import java.util.StringJoiner;
+import org.lttng.tools.ILttngSession;
import org.lttng.ust.agent.session.EventRule;
import org.lttng.ust.agent.session.LogLevelSelector;
*
* @author Alexandre Montplaisir
*/
-public final class EventRuleFactory {
+public class EventRuleFactory {
/** Name of the "all" (-a) event */
public static final String EVENT_NAME_ALL = "*";
/** Log level set by default when it is not specified */
- public static final LogLevelSelector LOG_LEVEL_UNSPECIFIED = new LogLevelSelector(Integer.MIN_VALUE, 0);
+ public final LogLevelSelector LOG_LEVEL_UNSPECIFIED;
- private EventRuleFactory() {}
+ private final ILttngSession.Domain domain;
+
+ /**
+ * Constructor.
+ *
+ * @param domain
+ */
+ public EventRuleFactory(ILttngSession.Domain domain) {
+ this.domain = domain;
+ LOG_LEVEL_UNSPECIFIED = new LogLevelSelector(domain.levelAllValue(), 0);
+ }
/**
* Construct an event by only passing the event name on the command-line.
* The event name
* @return The corresponding event rule
*/
- public static EventRule createRule(String eventName) {
+ public EventRule createRule(String eventName) {
return new EventRule(eventName, LOG_LEVEL_UNSPECIFIED, filterStringFromEventName(eventName));
}
* The log level
* @return The corresponding event rule
*/
- public static EventRule createRule(String eventName, LogLevelSelector logLevelSelector) {
+ public EventRule createRule(String eventName, LogLevelSelector logLevelSelector) {
StringJoiner sj = new StringJoiner(") && (", "(", ")");
String filterStr = sj.add(filterStringFromEventName(eventName))
.add(filterStringFromLogLevel(logLevelSelector))
* The filter string passed on the command-line
* @return The corresponding event rule
*/
- public static EventRule createRule(String eventName, LogLevelSelector logLevelSelector, String extraFilter) {
+ public EventRule createRule(String eventName, LogLevelSelector logLevelSelector, String extraFilter) {
StringJoiner sj1 = new StringJoiner(") && (", "(", ")");
sj1.add(extraFilter);
sj1.add(filterStringFromEventName(eventName));
*
* @return The corresponding event rule
*/
- public static EventRule createRuleAllEvents() {
+ public EventRule createRuleAllEvents() {
return new EventRule(EVENT_NAME_ALL, LOG_LEVEL_UNSPECIFIED, "");
}
return "logger_name == \"" + eventName + "\"";
}
- private static String filterStringFromLogLevel(LogLevelSelector logLevelSelector) {
+ private String filterStringFromLogLevel(LogLevelSelector logLevelSelector) {
StringBuilder sb = new StringBuilder();
sb.append("int_loglevel ");
switch (logLevelSelector.getLogLevelType()) {
case LTTNG_EVENT_LOGLEVEL_RANGE:
- sb.append(">=");
+ sb.append(domain.rangeOperator());
break;
case LTTNG_EVENT_LOGLEVEL_SINGLE:
sb.append("==");
sb.append(" " + logLevelSelector.getLogLevel());
return sb.toString();
}
-
}