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.services;
10 import com.google.common.util.concurrent.JdkFutureAdapters;
11 import com.google.common.util.concurrent.ListenableFuture;
12 import com.google.common.util.concurrent.SettableFuture;
13 import org.opendaylight.openflowjava.protocol.api.util.BinContent;
14 import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
15 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsInput;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsOutput;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterStatisticsInput;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterStatisticsOutput;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterFeaturesInput;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterFeaturesOutput;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterStatisticsInput;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterStatisticsOutput;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.OpendaylightMeterStatisticsService;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfigCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterFeaturesCaseBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter._case.MultipartRequestMeterBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter.config._case.MultipartRequestMeterConfigBuilder;
33 import org.opendaylight.yangtools.yang.common.RpcResult;
34 import java.util.concurrent.Future;
39 public class OpendaylightMeterStatisticsServiceImpl extends CommonService implements OpendaylightMeterStatisticsService {
43 public Future<RpcResult<GetAllMeterConfigStatisticsOutput>> getAllMeterConfigStatistics(
44 final GetAllMeterConfigStatisticsInput input) {
46 final RequestContext<GetAllMeterConfigStatisticsOutput> requestContext = rpcContext.createRequestContext();
47 final SettableFuture<RpcResult<GetAllMeterConfigStatisticsOutput>> result = rpcContext.storeOrFail(requestContext);
49 if (!result.isDone()) {
51 final Xid xid = deviceContext.getNextXid();
53 MultipartRequestMeterConfigCaseBuilder caseBuilder =
54 new MultipartRequestMeterConfigCaseBuilder();
55 MultipartRequestMeterConfigBuilder mprMeterConfigBuild =
56 new MultipartRequestMeterConfigBuilder();
57 mprMeterConfigBuild.setMeterId(new MeterId(BinContent.intToUnsignedLong(
58 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common
59 .types.rev130731.Meter.OFPMALL.getIntValue())));
60 caseBuilder.setMultipartRequestMeterConfig(mprMeterConfigBuild.build());
62 MultipartRequestInputBuilder mprInput = RequestInputUtils
63 .createMultipartHeader(MultipartType.OFPMPMETERCONFIG, xid.getValue(), version);
64 mprInput.setMultipartRequestBody(caseBuilder.build());
65 Future<RpcResult<Void>> resultFromOFLib = deviceContext
66 .getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
67 ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
68 .listenInPoolThread(resultFromOFLib);
70 final RpcResultConvertor<GetAllMeterConfigStatisticsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
71 rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
74 RequestContextUtil.closeRequstContext(requestContext);
80 public Future<RpcResult<GetAllMeterStatisticsOutput>> getAllMeterStatistics(final GetAllMeterStatisticsInput input) {
81 final RequestContext<GetAllMeterStatisticsOutput> requestContext = rpcContext.createRequestContext();
82 final SettableFuture<RpcResult<GetAllMeterStatisticsOutput>> result = rpcContext.storeOrFail(requestContext);
84 if (!result.isDone()) {
86 final Xid xid = deviceContext.getNextXid();
88 MultipartRequestMeterCaseBuilder caseBuilder =
89 new MultipartRequestMeterCaseBuilder();
90 MultipartRequestMeterBuilder mprMeterBuild =
91 new MultipartRequestMeterBuilder();
92 mprMeterBuild.setMeterId(new MeterId(BinContent.intToUnsignedLong(
93 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common
94 .types.rev130731.Meter.OFPMALL.getIntValue())));
95 caseBuilder.setMultipartRequestMeter(mprMeterBuild.build());
97 MultipartRequestInputBuilder mprInput = RequestInputUtils
98 .createMultipartHeader(MultipartType.OFPMPMETER, xid.getValue(), version);
99 mprInput.setMultipartRequestBody(caseBuilder.build());
100 Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
101 .getConnectionAdapter().multipartRequest(mprInput.build());
103 ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
105 final RpcResultConvertor<GetAllMeterStatisticsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
106 rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
108 RequestContextUtil.closeRequstContext(requestContext);
114 public Future<RpcResult<GetMeterFeaturesOutput>> getMeterFeatures(final GetMeterFeaturesInput input) {
115 final RequestContext requestContext = rpcContext.createRequestContext();
116 final SettableFuture<RpcResult<GetMeterFeaturesOutput>> result = rpcContext.storeOrFail(requestContext);
118 if (!result.isDone()) {
120 final Xid xid = deviceContext.getNextXid();
122 MultipartRequestMeterFeaturesCaseBuilder mprMeterFeaturesBuild =
123 new MultipartRequestMeterFeaturesCaseBuilder();
125 MultipartRequestInputBuilder mprInput =
126 RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETERFEATURES, xid.getValue(), version);
127 mprInput.setMultipartRequestBody(mprMeterFeaturesBuild.build());
128 Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
129 ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
131 final RpcResultConvertor<GetMeterFeaturesOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
132 rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
134 RequestContextUtil.closeRequstContext(requestContext);
140 public Future<RpcResult<GetMeterStatisticsOutput>> getMeterStatistics(final GetMeterStatisticsInput input) {
141 final RequestContext requestContext = rpcContext.createRequestContext();
142 final SettableFuture<RpcResult<GetMeterStatisticsOutput>> result = rpcContext.storeOrFail(requestContext);
144 if (!result.isDone()) {
146 final Xid xid = deviceContext.getNextXid();
148 MultipartRequestMeterCaseBuilder caseBuilder =
149 new MultipartRequestMeterCaseBuilder();
150 MultipartRequestMeterBuilder mprMeterBuild =
151 new MultipartRequestMeterBuilder();
152 mprMeterBuild.setMeterId(new MeterId(input.getMeterId().getValue()));
153 caseBuilder.setMultipartRequestMeter(mprMeterBuild.build());
155 MultipartRequestInputBuilder mprInput =
156 RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETER, xid.getValue(), version);
157 mprInput.setMultipartRequestBody(caseBuilder.build());
158 Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
159 ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
161 final RpcResultConvertor<GetMeterStatisticsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
162 rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
165 RequestContextUtil.closeRequstContext(requestContext);