-
Notifications
You must be signed in to change notification settings - Fork 129
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Loxi support for Optical Transport extensions, onos-2472
Change-Id: I69b9a8839fd899aec531f68103b448dd93cbbe4a
- Loading branch information
Yafit Hadar
committed
Aug 31, 2015
1 parent
5fde105
commit f8caac0
Showing
16 changed files
with
919 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
182 changes: 182 additions & 0 deletions
182
java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/OduSignalID.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,182 @@ | ||
/* | ||
* Copyright 2015, ECI Telecom, Inc. | ||
* 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.projectfloodlight.openflow.types; | ||
|
||
|
||
import java.util.List; | ||
|
||
import org.jboss.netty.buffer.ChannelBuffer; | ||
|
||
import com.google.common.collect.ComparisonChain; | ||
import com.google.common.primitives.UnsignedBytes; | ||
import com.google.common.hash.PrimitiveSink; | ||
|
||
import org.projectfloodlight.openflow.exceptions.OFParseError; | ||
import org.projectfloodlight.openflow.protocol.*; | ||
import com.google.common.hash.Funnel; | ||
import org.projectfloodlight.openflow.util.*; | ||
import java.util.Arrays; | ||
|
||
public class OduSignalID implements OFValueType<OduSignalID> { | ||
|
||
// version: 1.3 | ||
final static byte WIRE_VERSION = 4; | ||
final static int MINIMUM_LENGTH = 4; | ||
|
||
private final static int DEFAULT_TPN = 0x0; | ||
private final static int DEFAULT_TSLEN = 80; | ||
private final static byte[] DEFAULT_TSMAP = new byte[10]; | ||
|
||
// OF message fields | ||
private final int tpn; | ||
private final int tslen; | ||
private final byte[] tsmap; | ||
|
||
// Immutable default instance | ||
public final static OduSignalID DEFAULT = new OduSignalID( | ||
DEFAULT_TPN, DEFAULT_TSLEN, DEFAULT_TSMAP | ||
); | ||
|
||
// package private constructor - used by readers, builders, and factory | ||
public OduSignalID(int tpn, int tslen, byte[] tsmap) { | ||
this.tpn = tpn; | ||
this.tslen = tslen; | ||
this.tsmap = tsmap; | ||
} | ||
|
||
public int getTpn() { | ||
return tpn; | ||
} | ||
|
||
public int getTslen() { | ||
return tslen; | ||
} | ||
|
||
public byte[] getTsmap() { | ||
return tsmap; | ||
} | ||
|
||
|
||
@Override | ||
public int getLength() { | ||
return MINIMUM_LENGTH + 12; // tslen == 80 | ||
} | ||
|
||
public void writeTo(ChannelBuffer c) { | ||
c.writeShort(tpn); | ||
c.writeShort(tslen); | ||
c.writeBytes(tsmap); // 10 bytes | ||
c.writeZero(2); // write bytes for add padding alignment (the size of bytes in tsmap must be divided in 4) | ||
} | ||
|
||
public static OduSignalID readFrom(ChannelBuffer c) { | ||
int tpn = U16.f(c.readShort()); | ||
int tslen = U16.f(c.readShort()); | ||
byte[] tsmap = null; | ||
tsmap =ChannelUtils.readBytes(c, 10); | ||
ChannelUtils.readBytes(c, 2); // skip padding | ||
OduSignalID oduSigId = new OduSignalID( | ||
tpn, | ||
tslen, | ||
tsmap | ||
); | ||
return oduSigId; | ||
} | ||
|
||
|
||
public void putTo(PrimitiveSink sink) { | ||
FUNNEL.funnel(this, sink); | ||
} | ||
|
||
final static OduSignalIDFunnel FUNNEL = new OduSignalIDFunnel(); | ||
static class OduSignalIDFunnel implements Funnel< OduSignalID> { | ||
private static final long serialVersionUID = 1L; | ||
@Override | ||
public void funnel( OduSignalID message, PrimitiveSink sink) { | ||
sink.putInt(message.tpn); | ||
sink.putInt(message.tslen); | ||
sink.putBytes(message.tsmap); | ||
} | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
StringBuilder b = new StringBuilder(" OduSignalID("); | ||
b.append("tpn=").append(tpn); | ||
b.append(", "); | ||
b.append("tslen=").append(tslen); | ||
b.append(", "); | ||
b.append("tsmap=").append(Arrays.toString(tsmap)); | ||
b.append(")"); | ||
return b.toString(); | ||
} | ||
|
||
@Override | ||
public boolean equals(Object obj) { | ||
if (this == obj) | ||
return true; | ||
if (obj == null) | ||
return false; | ||
if (getClass() != obj.getClass()) | ||
return false; | ||
OduSignalID other = (OduSignalID) obj; | ||
|
||
if( tpn != other.tpn) | ||
return false; | ||
if( tslen != other.tslen) | ||
return false; | ||
if (!Arrays.equals(tsmap, other.tsmap)) | ||
return false; | ||
return true; | ||
} | ||
|
||
@Override | ||
public int hashCode() { | ||
final int prime = 31; | ||
int result = 1; | ||
|
||
result = prime * result + tpn; | ||
result = prime * result + tslen; | ||
result = prime * result + Arrays.hashCode(tsmap); | ||
return result; | ||
} | ||
|
||
@Override | ||
public OduSignalID applyMask(OduSignalID mask) { | ||
byte[] maskTsmap = null; | ||
if (this.tsmap!=null && this.tsmap.length > 0) { | ||
maskTsmap = new byte[this.tsmap.length]; | ||
int i = 0; | ||
for (byte b : this.tsmap){ | ||
maskTsmap[i] =(byte) (b & mask.tsmap[i++]); | ||
} | ||
} | ||
return new OduSignalID(this.tpn & mask.tpn, | ||
(short) (this.tslen & mask | ||
.tslen), | ||
maskTsmap); | ||
} | ||
|
||
@Override | ||
public int compareTo(OduSignalID o) { | ||
return ComparisonChain.start() | ||
.compare(tpn,o.tpn) | ||
.compare(tslen,o.tslen) | ||
.compare(tsmap,o.tsmap, UnsignedBytes.lexicographicalComparator()) | ||
.result(); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.