/*******************************************************************************
* Copyright (c) 2004, 2009 Red Hat, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Keith Seitz <keiths@redhat.com> - initial API and implementation
* Kent Sebastian <ksebasti@redhat.com>
*******************************************************************************/
package org.eclipse.linuxtools.internal.oprofile.core.opxml.checkevent;
import org.eclipse.linuxtools.internal.oprofile.core.opxml.XMLProcessor;
/**
* XML handler class for opxml's "check-events".
* @see org.eclipse.linuxtools.internal.oprofile.core.opxml.OpxmlRunner
*/
public class CheckEventsProcessor extends XMLProcessor {
public static final int INVALID_UNKNOWN = 0; //unexpected error
public static final int EVENT_OK = 1; //valid
public static final int INVALID_UMASK = 3; //invalid unit mask value
public static final int INVALID_COUNTER = 4; //invalid event for given counter number
private static final String RESULT_TAG = "result"; //$NON-NLS-1$
private static final String CHECK_EVENTS_TAG ="check-events"; //$NON-NLS-1$
private static final String EVENT_OK_STR = "ok"; //$NON-NLS-1$
private static final String INVALID_UMASK_STR = "invalid-um"; //$NON-NLS-1$
private static final String INVALID_COUNTER_STR = "invalid-counter"; //$NON-NLS-1$
private int result;
@Override
public void reset(Object callData) {
result = INVALID_UNKNOWN;
}
@Override
public void endElement(String name, Object callData) {
if (name.equals(RESULT_TAG)) {
if (characters.equals(EVENT_OK_STR)) {
result = EVENT_OK;
} else if (characters.equals(INVALID_UMASK_STR)) {
result = INVALID_UMASK;
} else if (characters.equals(INVALID_COUNTER_STR)) {
result = INVALID_COUNTER;
}
} else if (name.equals(CHECK_EVENTS_TAG)) {
int[] r = (int[]) callData;
r[0] = result;
}
}
}