import javax.annotation.Nullable;
import org.opendaylight.openflowjava.protocol.api.connection.DeviceRequestFailedException;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
+import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.EventIdentifier;
import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageSpy;
import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageSpy.STATISTIC_GROUP;
+import org.opendaylight.openflowplugin.impl.statistics.ofpspecific.EventsTimeCounter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.Error;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
import org.opendaylight.yangtools.yang.common.RpcError;
private final RequestContext<T> context;
private final Class<?> requestType;
private final MessageSpy spy;
+ private EventIdentifier eventIdentifier;
+
protected AbstractRequestCallback(final RequestContext<T> context, final Class<?> requestType, final MessageSpy spy) {
this.context = Preconditions.checkNotNull(context);
this.spy = Preconditions.checkNotNull(spy);
}
+ protected AbstractRequestCallback(final RequestContext<T> context,
+ final Class<?> requestType,
+ final MessageSpy spy,
+ final EventIdentifier eventIdentifier) {
+ this.context = Preconditions.checkNotNull(context);
+ this.requestType = Preconditions.checkNotNull(requestType);
+ this.spy = Preconditions.checkNotNull(spy);
+ this.eventIdentifier = eventIdentifier;
+ }
+
protected final void setResult(@Nullable final RpcResult<T> result) {
context.setResult(result);
context.close();
spy.spyMessage(requestType, Preconditions.checkNotNull(group));
}
+ public EventIdentifier getEventIdentifier() {
+ return eventIdentifier;
+ }
+
@Override
public final void onFailure(final Throwable t) {
final RpcResultBuilder<T> builder;
+ if (null != eventIdentifier) {
+ EventsTimeCounter.markEnd(eventIdentifier);
+ }
if (t instanceof DeviceRequestFailedException) {
final Error err = ((DeviceRequestFailedException) t).getError();
final String errorString = String.format("Device reported error type %s code %s", err.getTypeString(), err.getCodeString());
}
context.setResult(builder.build());
- RequestContextUtil.closeRequstContext(context);
+ RequestContextUtil.closeRequestContext(context);
}
}