2 * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.openflowplugin.impl.statistics.services;
10 import com.google.common.base.Function;
11 import com.google.common.util.concurrent.JdkFutureAdapters;
12 import com.google.common.util.concurrent.ListenableFuture;
13 import java.util.concurrent.Future;
14 import org.opendaylight.openflowjava.protocol.api.util.BinContent;
15 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
16 import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
17 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
18 import org.opendaylight.openflowplugin.impl.services.CommonService;
19 import org.opendaylight.openflowplugin.impl.services.DataCrate;
20 import org.opendaylight.openflowplugin.impl.services.RequestInputUtils;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsInput;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsOutput;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterStatisticsInput;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterStatisticsOutput;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterFeaturesInput;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterFeaturesOutput;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterStatisticsInput;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterStatisticsOutput;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.OpendaylightMeterStatisticsService;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterCaseBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfigCaseBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterFeaturesCaseBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter._case.MultipartRequestMeterBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter.config._case.MultipartRequestMeterConfigBuilder;
38 import org.opendaylight.yangtools.yang.common.RpcResult;
43 public class OpendaylightMeterStatisticsServiceImpl extends CommonService implements OpendaylightMeterStatisticsService {
46 public OpendaylightMeterStatisticsServiceImpl(final RequestContextStack requestContextStack, DeviceContext deviceContext) {
47 super(requestContextStack, deviceContext);
51 public Future<RpcResult<GetAllMeterConfigStatisticsOutput>> getAllMeterConfigStatistics(
52 final GetAllMeterConfigStatisticsInput input) {
54 .<GetAllMeterConfigStatisticsOutput, Void>handleServiceCall(new Function<DataCrate<GetAllMeterConfigStatisticsOutput>, ListenableFuture<RpcResult<Void>>>() {
57 public ListenableFuture<RpcResult<Void>> apply(final DataCrate<GetAllMeterConfigStatisticsOutput> data) {
59 MultipartRequestMeterConfigCaseBuilder caseBuilder =
60 new MultipartRequestMeterConfigCaseBuilder();
61 MultipartRequestMeterConfigBuilder mprMeterConfigBuild =
62 new MultipartRequestMeterConfigBuilder();
63 mprMeterConfigBuild.setMeterId(new MeterId(BinContent.intToUnsignedLong(
64 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common
65 .types.rev130731.Meter.OFPMALL.getIntValue())));
66 caseBuilder.setMultipartRequestMeterConfig(mprMeterConfigBuild.build());
68 final Xid xid = data.getRequestContext().getXid();
69 MultipartRequestInputBuilder mprInput = RequestInputUtils
70 .createMultipartHeader(MultipartType.OFPMPMETERCONFIG, xid.getValue(), getVersion());
71 mprInput.setMultipartRequestBody(caseBuilder.build());
72 Future<RpcResult<Void>> resultFromOFLib = getDeviceContext()
73 .getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
74 return JdkFutureAdapters
75 .listenInPoolThread(resultFromOFLib);
82 public Future<RpcResult<GetAllMeterStatisticsOutput>> getAllMeterStatistics(final GetAllMeterStatisticsInput input) {
84 return this.<GetAllMeterStatisticsOutput, Void>handleServiceCall(
85 new Function<DataCrate<GetAllMeterStatisticsOutput>, ListenableFuture<RpcResult<Void>>>() {
87 public ListenableFuture<RpcResult<Void>> apply(final DataCrate<GetAllMeterStatisticsOutput> data) {
89 MultipartRequestMeterCaseBuilder caseBuilder =
90 new MultipartRequestMeterCaseBuilder();
91 MultipartRequestMeterBuilder mprMeterBuild =
92 new MultipartRequestMeterBuilder();
93 mprMeterBuild.setMeterId(new MeterId(BinContent.intToUnsignedLong(
94 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common
95 .types.rev130731.Meter.OFPMALL.getIntValue())));
96 caseBuilder.setMultipartRequestMeter(mprMeterBuild.build());
98 final Xid xid = data.getRequestContext().getXid();
99 MultipartRequestInputBuilder mprInput = RequestInputUtils
100 .createMultipartHeader(MultipartType.OFPMPMETER, xid.getValue(), getVersion());
101 mprInput.setMultipartRequestBody(caseBuilder.build());
102 Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext()
103 .getConnectionAdapter().multipartRequest(mprInput.build());
105 return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
113 public Future<RpcResult<GetMeterFeaturesOutput>> getMeterFeatures(final GetMeterFeaturesInput input) {
114 return this.<GetMeterFeaturesOutput, Void>handleServiceCall(
115 new Function<DataCrate<GetMeterFeaturesOutput>, ListenableFuture<RpcResult<Void>>>() {
117 public ListenableFuture<RpcResult<Void>> apply(final DataCrate<GetMeterFeaturesOutput> data) {
119 MultipartRequestMeterFeaturesCaseBuilder mprMeterFeaturesBuild =
120 new MultipartRequestMeterFeaturesCaseBuilder();
122 final Xid xid = data.getRequestContext().getXid();
123 MultipartRequestInputBuilder mprInput =
124 RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETERFEATURES, xid.getValue(), getVersion());
125 mprInput.setMultipartRequestBody(mprMeterFeaturesBuild.build());
126 Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
127 return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
133 public Future<RpcResult<GetMeterStatisticsOutput>> getMeterStatistics(final GetMeterStatisticsInput input) {
134 return this.<GetMeterStatisticsOutput, Void>handleServiceCall(
135 new Function<DataCrate<GetMeterStatisticsOutput>, ListenableFuture<RpcResult<Void>>>() {
137 public ListenableFuture<RpcResult<Void>> apply(final DataCrate<GetMeterStatisticsOutput> data) {
138 MultipartRequestMeterCaseBuilder caseBuilder =
139 new MultipartRequestMeterCaseBuilder();
140 MultipartRequestMeterBuilder mprMeterBuild =
141 new MultipartRequestMeterBuilder();
142 mprMeterBuild.setMeterId(new MeterId(input.getMeterId().getValue()));
143 caseBuilder.setMultipartRequestMeter(mprMeterBuild.build());
145 final Xid xid = data.getRequestContext().getXid();
146 MultipartRequestInputBuilder mprInput =
147 RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETER, xid.getValue(), getVersion());
148 mprInput.setMultipartRequestBody(caseBuilder.build());
149 Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
150 return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);