/* * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. 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 */ package org.opendaylight.openflowplugin.impl.services.singlelayer; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; import org.opendaylight.openflowplugin.api.openflow.device.Xid; import org.opendaylight.openflowplugin.impl.services.AbstractSilentErrorService; import org.opendaylight.openflowplugin.impl.services.util.ServiceException; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.RemoveMeterInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.meter.update.OriginalMeter; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.meter.update.UpdatedMeter; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.Meter; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterMessageBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterModCommand; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader; import org.opendaylight.yangtools.yang.binding.DataContainer; import org.opendaylight.yangtools.yang.binding.DataObject; public final class SingleLayerMeterService<O extends DataObject> extends AbstractSilentErrorService<Meter, O> { public SingleLayerMeterService( final RequestContextStack requestContextStack, final DeviceContext deviceContext, final Class<O> clazz) { super(requestContextStack, deviceContext, clazz); } @Override protected OfHeader buildRequest(final Xid xid, final Meter input) throws ServiceException { final MeterMessageBuilder meterMessageBuilder = new MeterMessageBuilder(input); final Class<? extends DataContainer> clazz = input.getImplementedInterface(); if (clazz.equals(AddMeterInput.class) || clazz.equals(UpdatedMeter.class)) { meterMessageBuilder.setCommand(MeterModCommand.OFPMCADD); } else if (clazz.equals(RemoveMeterInput.class) || clazz.equals(OriginalMeter.class)) { meterMessageBuilder.setCommand(MeterModCommand.OFPMCDELETE); } return meterMessageBuilder .setVersion(getVersion()) .setXid(xid.getValue()) .build(); } }