From 76dc892491948adae5e5e62cf94448967e8d865b Mon Sep 17 00:00:00 2001 From: Ashlee Young Date: Sun, 6 Dec 2015 07:15:03 -0800 Subject: Fixes bad POM file with ONOS commit 8c68536972f63069c263635c9d9f4f31d7f3e9a2 Change-Id: I7adb5a2d3738d53dbc41db7577768b0e7ced5450 Signed-off-by: Ashlee Young --- .../onosproject/bgpio/protocol/BgpFactories.java | 82 ++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100755 framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpFactories.java (limited to 'framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpFactories.java') diff --git a/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpFactories.java b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpFactories.java new file mode 100755 index 00000000..eb18c7d1 --- /dev/null +++ b/framework/src/onos/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpFactories.java @@ -0,0 +1,82 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onosproject.bgpio.protocol; + +import org.jboss.netty.buffer.ChannelBuffer; +import org.onosproject.bgpio.exceptions.BgpParseException; +import org.onosproject.bgpio.protocol.ver4.BgpFactoryVer4; +import org.onosproject.bgpio.types.BgpHeader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Abstraction to provide the version for BGP. + */ +public final class BgpFactories { + + protected static final Logger log = LoggerFactory.getLogger(BgpFactories.class); + + private static final GenericReader GENERIC_READER = new GenericReader(); + + private BgpFactories() { + } + + /** + * Returns the instance of BGP Version. + * + * @param version BGP version + * @return BGP version + */ + public static BgpFactory getFactory(BgpVersion version) { + switch (version) { + case BGP_4: + return BgpFactoryVer4.INSTANCE; + default: + throw new IllegalArgumentException("[BgpFactory:]Unknown version: " + version); + } + } + + /** + * Reader class for reading BGP messages from channel buffer. + * + */ + private static class GenericReader implements BgpMessageReader { + + @Override + public BgpMessage readFrom(ChannelBuffer bb, BgpHeader bgpHeader) + throws BgpParseException { + BgpFactory factory; + + if (!bb.readable()) { + log.error("Empty message received"); + throw new BgpParseException("Empty message received"); + } + // TODO: Currently only BGP version 4 is supported + factory = org.onosproject.bgpio.protocol.ver4.BgpFactoryVer4.INSTANCE; + return factory.getReader().readFrom(bb, bgpHeader); + } + } + + /** + * Returns BGP messsage generic reader. + * + * @return bgp message generic reader + */ + public static BgpMessageReader getGenericReader() { + return GENERIC_READER; + } +} -- cgit 1.2.3-korg