+++ /dev/null
-/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-/**
- * @file RawPacket.java
- *
- * @brief Describe a raw Data Packet, this is how a packet is
- * received from the network and how it will be transmitted. It
- * essentially wraps the raw bytestream
- *
- */
-package org.opendaylight.controller.sal.packet;
-
-import java.util.Map;
-import java.util.HashMap;
-
-import org.opendaylight.controller.sal.core.ConstructionException;
-import org.opendaylight.controller.sal.core.NodeConnector;
-import org.opendaylight.controller.sal.core.TimeStamp;
-
-/**
- *
- * Describe a raw Data Packet, this is how a packet is received from the network
- * and how it will be transmitted. It essentially wraps the raw bytestream
- *
- */
-public class RawPacket {
- private byte[] packetData;
- private final LinkEncap encap;
- private final TimeStamp incomingTime;
- private final TimeStamp copyTime;
- private Map<Object, Object> props;
- private NodeConnector incomingNodeConnector;
- private NodeConnector outgoingNodeConnector;
-
- /**
- * If the packet is being sent this parameter tells where the packet is sent
- * toward
- *
- *
- * @return the NodeConnector toward where the packet is being sent
- */
- public NodeConnector getOutgoingNodeConnector() {
- return outgoingNodeConnector;
- }
-
- /**
- * Setter method for OutGoing NodeConnector
- *
- * @param outgoingNodeConnector
- * NodeConnector toward where the packet is travelling
- */
- public void setOutgoingNodeConnector(NodeConnector outgoingNodeConnector) {
- this.outgoingNodeConnector = outgoingNodeConnector;
- }
-
- /**
- * Return the incoming NodeConnector if the packet was received
- *
- * @return NodeConnector where the packet was received from
- */
- public NodeConnector getIncomingNodeConnector() {
- return incomingNodeConnector;
- }
-
- /**
- * Setter for Incoming NodeConnector
- *
- * @param incomingNodeConnector
- * NodeConnector to be used and incoming one
- */
- public void setIncomingNodeConnector(NodeConnector incomingNodeConnector) {
- this.incomingNodeConnector = incomingNodeConnector;
- }
-
- /**
- * Retrieve a given property attached to the packet, if exits of course
- *
- * @param key
- * Key to retrieve the wanted property attached to the packet
- *
- * @return The property attached to the packet
- */
- public Object getProps(Object key) {
- if (this.props != null) {
- return this.props.get(key);
- }
- return null;
- }
-
- /**
- * Generic data associated to the data packet
- *
- * @param key
- * key for the association
- * @param value
- * value associated to the key
- */
- public void setProps(Object key, Object value) {
- if (this.props == null) {
- this.props = new HashMap<Object, Object>();
- }
-
- this.props.put(key, value);
- }
-
- /**
- * Constructor for RawPacket
- *
- * @param data
- * content of the packet as bytestream
- * @param e
- * datalink encapsulation for the packet
- *
- */
- public RawPacket(byte[] data, LinkEncap e) throws ConstructionException {
- if (data == null) {
- throw new ConstructionException("Empty data");
- }
- if (e == null) {
- throw new ConstructionException("Encap not known");
- }
- this.packetData = new byte[data.length];
- System.arraycopy(data, 0, this.packetData, 0, data.length);
- this.encap = e;
- this.incomingTime = new TimeStamp(System.currentTimeMillis(),
- "IncomingTime");
- this.copyTime = null;
- }
-
- /**
- * Copy Constructor for RawPacket, it performs a copy of the packet so each
- * packet can be modified independently without worrying that source packet
- * content is touched
- *
- * @param src
- * packet to copy data from
- *
- */
- public RawPacket(RawPacket src) throws ConstructionException {
- if (src == null) {
- throw new ConstructionException("null source packet");
- }
- if (src.getPacketData() != null) {
- this.packetData = new byte[src.getPacketData().length];
- System.arraycopy(src.getPacketData(), 0, this.packetData, 0,
- src.getPacketData().length);
- } else {
- throw new ConstructionException("Empty packetData");
- }
- this.encap = src.getEncap();
- this.incomingTime = src.getIncomingTime();
- this.incomingNodeConnector = src.getIncomingNodeConnector();
- this.outgoingNodeConnector = src.getOutgoingNodeConnector();
- this.props = (src.props == null ? null : new HashMap<Object, Object>(
- src.props));
- this.copyTime = new TimeStamp(System.currentTimeMillis(), "CopyTime");
- }
-
- /**
- * Constructor for RawPacket with Ethernet encapsulation
- *
- * @param data
- * content of the packet as bytestream
- *
- */
- public RawPacket(byte[] data) throws ConstructionException {
- this(data, LinkEncap.ETHERNET);
- }
-
- /**
- * Read the time stamp when the packet has entered the system
- *
- * @return The time stamp when the packet has entered the system
- */
- public TimeStamp getIncomingTime() {
- return this.incomingTime;
- }
-
- /**
- * Read the packet encapsulation
- *
- * @return The encapsulation for the raw packet, necessary to start parsing
- * the packet
- */
- public LinkEncap getEncap() {
- return this.encap;
- }
-
- /**
- * Get bytestream of the packet body
- *
- * @return The raw bytestream composing the packet
- */
- public byte[] getPacketData() {
- return this.packetData;
- }
-
- /**
- * Returns the time at which the current instance of RawPacket was created
- * as a copy of the original one.
- *
- * @return The time stamp at which this RawPacket instance was created. null
- * if this is the original instance.
- */
- public TimeStamp getCopyTime() {
- return this.copyTime;
- }
-}