blob: bc8798455151cdcf9de68576eff468300552b43e [file] [log] [blame]
shivani vaidya9632b5f2017-06-27 11:00:04 -07001/*
2 * Copyright 2017-present Open Networking Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.incubator.protobuf.models.net.link;
17
18import org.onosproject.grpc.net.link.models.LinkEnumsProto;
19import org.onosproject.net.Link;
20import org.slf4j.Logger;
21import org.slf4j.LoggerFactory;
22
23import java.util.Optional;
24
25/**
26 * gRPC LinkType and LinkState message to equivalent ONOS enum conversion related utilities.
27 */
28public final class LinkEnumsProtoTranslator {
29
30 private static final Logger log = LoggerFactory.getLogger(LinkEnumsProtoTranslator.class);
31
32 /**
33 * Translates gRPC enum LinkType to Optional of ONOS enum.
34 *
35 * @param type linktype type in gRPC enum
36 * @return Optional of equivalent ONOS enum or empty if not recognized
37 */
38 public static Optional<Link.Type> translate(LinkEnumsProto.LinkTypeProto type) {
39 switch (type) {
40 case DIRECT:
41 return Optional.of(Link.Type.DIRECT);
42 case INDIRECT:
43 return Optional.of(Link.Type.INDIRECT);
44 case EDGE:
45 return Optional.of(Link.Type.EDGE);
46 case TUNNEL:
47 return Optional.of(Link.Type.TUNNEL);
48 case OPTICAL:
49 return Optional.of(Link.Type.OPTICAL);
50 case VIRTUAL:
51 return Optional.of(Link.Type.VIRTUAL);
52 default:
53 log.warn("Unrecognized Type gRPC message: {}", type);
54 return Optional.empty();
55 }
56 }
57
58 /**
59 * Translates ONOS enum Type to gRPC enum.
60 *
61 * @param type ONOS' Type type
62 * @return equivalent gRPC message enum
63 */
64 public static LinkEnumsProto.LinkTypeProto translate(Link.Type type) {
65 switch (type) {
66 case DIRECT:
67 return LinkEnumsProto.LinkTypeProto.DIRECT;
68 case INDIRECT:
69 return LinkEnumsProto.LinkTypeProto.INDIRECT;
70 case EDGE:
71 return LinkEnumsProto.LinkTypeProto.EDGE;
72 case TUNNEL:
73 return LinkEnumsProto.LinkTypeProto.TUNNEL;
74 case OPTICAL:
75 return LinkEnumsProto.LinkTypeProto.OPTICAL;
76 case VIRTUAL:
77 return LinkEnumsProto.LinkTypeProto.VIRTUAL;
78 default:
79 log.warn("Unrecognized type", type);
80 throw new IllegalArgumentException("Unrecognized Type");
81 }
82 }
83
84 /**
85 * Translates gRPC enum LinkState to Optional of ONOS enum.
86 *
87 * @param state linkstate state in gRPC enum
88 * @return Optional of equivalent ONOS enum or empty if not recognized
89 */
90 public static Optional<Link.State> translate(LinkEnumsProto.LinkStateProto state) {
91 switch (state) {
92 case ACTIVE:
93 return Optional.of(Link.State.ACTIVE);
94 case INACTIVE:
95 return Optional.of(Link.State.INACTIVE);
96 default:
97 log.warn("Unrecognized State gRPC message: {}", state);
98 return Optional.empty();
99 }
100 }
101
102 /**
103 * Translates ONOS enum State to gRPC enum.
104 *
105 * @param state ONOS' state state
106 * @return equivalent gRPC message enum
107 */
108 public static LinkEnumsProto.LinkStateProto translate(Link.State state) {
109 switch (state) {
110 case ACTIVE:
111 return LinkEnumsProto.LinkStateProto.ACTIVE;
112 case INACTIVE:
113 return LinkEnumsProto.LinkStateProto.INACTIVE;
114 default:
115 log.warn("Unrecognized State", state);
116 throw new IllegalArgumentException("Unrecognized State");
117 }
118 }
119
120
121 // Utility class not intended for instantiation.
122 private LinkEnumsProtoTranslator() {}
123
124}
125