Switching SB to config subsystem
[lispflowmapping.git] / mappingservice / southbound / src / main / java / org / opendaylight / lispflowmapping / southbound / LfmControlPlaneRpc.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.lispflowmapping.southbound;
10
11 import java.nio.ByteBuffer;
12 import java.util.concurrent.Future;
13
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;
25
26 import com.google.common.util.concurrent.Futures;
27
28 /**
29  * This class holds all RPCs methods for LispSouthbound Plugin.
30  *
31  * <p>
32  * @author Florin Coras (fcoras@cisco.com)
33  * @author Lorand Jakab (lojakab@cisco.com)
34  */
35
36 public class LfmControlPlaneRpc implements LfmControlPlaneService {
37
38     protected static final Logger LOG = LoggerFactory.getLogger(LfmControlPlaneRpc.class);
39
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;
44
45     public LfmControlPlaneRpc(LispSouthboundPlugin lispSbPlugin) {
46         this.lispSbPlugin = lispSbPlugin;
47     }
48
49
50     @Override
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);
56         } else {
57             LOG.warn("MapNotify was null");
58             return Futures.immediateFuture(RpcResultBuilder.<Void> failed().build());
59         }
60         return Futures.immediateFuture(RpcResultBuilder.<Void> success().build());
61     }
62
63     @Override
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);
69         } else {
70             LOG.warn("MapReply was null");
71             return Futures.immediateFuture(RpcResultBuilder.<Void> failed().build());
72         }
73         return Futures.immediateFuture(RpcResultBuilder.<Void> success().build());
74     }
75
76     @Override
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);
82         } else {
83             LOG.debug("MapRequest was null");
84             return Futures.immediateFuture(RpcResultBuilder.<Void> failed().build());
85         }
86         return Futures.immediateFuture(RpcResultBuilder.<Void> success().build());
87     }
88 }