2 * Copyright (c) 2015 Cisco Systems, Inc. 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
9 package org.opendaylight.lispflowmapping.southbound;
11 import java.nio.ByteBuffer;
12 import java.util.concurrent.Future;
14 import org.opendaylight.lispflowmapping.implementation.serializer.MapNotifySerializer;
15 import org.opendaylight.lispflowmapping.implementation.serializer.MapReplySerializer;
16 import org.opendaylight.lispflowmapping.implementation.serializer.MapRequestSerializer;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LfmControlPlaneService;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.SendMapNotifyInput;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.SendMapReplyInput;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.SendMapRequestInput;
21 import org.opendaylight.yangtools.yang.common.RpcResult;
22 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory;
26 import com.google.common.util.concurrent.Futures;
29 * This class holds all RPCs methods for LispSouthbound Plugin.
32 * @author Florin Coras (fcoras@cisco.com)
33 * @author Lorand Jakab (lojakab@cisco.com)
36 public class LfmControlPlaneRpc implements LfmControlPlaneService {
38 protected static final Logger LOG = LoggerFactory.getLogger(LfmControlPlaneRpc.class);
40 private final String MAP_NOTIFY = "MapNotify";
41 private final String MAP_REPlY = "MapReply";
42 private final String MAP_REQUEST = "MapRequest";
43 private final LispSouthboundPlugin lispSbPlugin;
45 public LfmControlPlaneRpc(LispSouthboundPlugin lispSbPlugin) {
46 this.lispSbPlugin = lispSbPlugin;
51 public Future<RpcResult<Void>> sendMapNotify(SendMapNotifyInput mapNotifyInput) {
52 LOG.trace("sendMapNotify called!!");
53 if (mapNotifyInput != null) {
54 ByteBuffer outBuffer = MapNotifySerializer.getInstance().serialize(mapNotifyInput.getMapNotify());
55 lispSbPlugin.handleSerializedLispBuffer(mapNotifyInput.getTransportAddress(), outBuffer, MAP_NOTIFY);
57 LOG.warn("MapNotify was null");
58 return Futures.immediateFuture(RpcResultBuilder.<Void> failed().build());
60 return Futures.immediateFuture(RpcResultBuilder.<Void> success().build());
64 public Future<RpcResult<Void>> sendMapReply(SendMapReplyInput mapReplyInput) {
65 LOG.trace("sendMapReply called!!");
66 if (mapReplyInput != null) {
67 ByteBuffer outBuffer = MapReplySerializer.getInstance().serialize(mapReplyInput.getMapReply());
68 lispSbPlugin.handleSerializedLispBuffer(mapReplyInput.getTransportAddress(), outBuffer, MAP_REPlY);
70 LOG.warn("MapReply was null");
71 return Futures.immediateFuture(RpcResultBuilder.<Void> failed().build());
73 return Futures.immediateFuture(RpcResultBuilder.<Void> success().build());
77 public Future<RpcResult<Void>> sendMapRequest(SendMapRequestInput mapRequestInput) {
78 LOG.trace("sendMapRequest called!!");
79 if (mapRequestInput != null) {
80 ByteBuffer outBuffer = MapRequestSerializer.getInstance().serialize(mapRequestInput.getMapRequest());
81 lispSbPlugin.handleSerializedLispBuffer(mapRequestInput.getTransportAddress(), outBuffer, MAP_REQUEST);
83 LOG.debug("MapRequest was null");
84 return Futures.immediateFuture(RpcResultBuilder.<Void> failed().build());
86 return Futures.immediateFuture(RpcResultBuilder.<Void> success().build());