- public void setLogLevel(String event_name, int level, int type) {
- LTTngLogLevel lttngLogLevel = new LTTngLogLevel(event_name, level,
- type);
- logLevels.put(event_name, lttngLogLevel);
+ /*
+ * Return true if the logger is enabled and attached. Else, if not found,
+ * return false.
+ */
+ public boolean exists(String name) {
+ if (loggerMap.get(name) != null) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /*
+ * Attach an event to this handler. If no logger object exists, one is
+ * created else the refcount is incremented.
+ */
+ public void attachEvent(LTTngEvent event) {
+ Logger logger;
+ LTTngLogger lttngLogger;
+
+ /* Does the logger actually exist. */
+ logger = this.logManager.getLogger(event.name);
+ if (logger == null) {
+ /* Stop attach right now. */
+ return;
+ }
+
+ lttngLogger = loggerMap.get(event.name);
+ if (lttngLogger == null) {
+ lttngLogger = new LTTngLogger(event.name, logger);
+
+ /* Attach the handler to the logger and add is to the map. */
+ lttngLogger.attach(this);
+ lttngLogger.refcount = 1;
+ loggerMap.put(lttngLogger.name, lttngLogger);
+ } else {
+ lttngLogger.refcount += 1;
+ }
+ }
+
+ /*
+ * Dettach an event from this handler. If the refcount goes down to 0, the
+ * logger object is removed thus not attached anymore.
+ */
+ public void detachEvent(LTTngEvent event) {
+ LTTngLogger logger;
+
+ logger = loggerMap.get(event.name);
+ if (logger != null) {
+ logger.refcount -= 1;
+ if (logger.refcount == 0) {
+ /* Dettach from handler since no more event is associated. */
+ logger.detach(this);
+ loggerMap.remove(logger);
+ }
+ }
+ }
+
+ /*
+ * Cleanup this handler state meaning put it back to a vanilla state.
+ */
+ public void clear() {
+ this.loggerMap.clear();