blob: 3126cc88e1110c7053c499d84bf3f7bd4fc3f1f9 [file] [log] [blame]
/*
* Copyright 2017-present 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.lisp.msg.protocols;
import org.onosproject.lisp.msg.types.LispAfiAddress;
/**
* Abstract LISP record class that provide default implementations.
*/
public abstract class AbstractLispRecord implements LispRecord {
protected final int recordTtl;
protected final byte maskLength;
protected final LispMapReplyAction action;
protected final boolean authoritative;
protected final short mapVersionNumber;
protected final LispAfiAddress eidPrefixAfi;
protected AbstractLispRecord(int recordTtl, byte maskLength,
LispMapReplyAction action, boolean authoritative,
short mapVersionNumber, LispAfiAddress eidPrefixAfi) {
this.recordTtl = recordTtl;
this.maskLength = maskLength;
this.action = action;
this.authoritative = authoritative;
this.mapVersionNumber = mapVersionNumber;
this.eidPrefixAfi = eidPrefixAfi;
}
@Override
public int getRecordTtl() {
return recordTtl;
}
@Override
public byte getMaskLength() {
return maskLength;
}
@Override
public LispMapReplyAction getAction() {
return action;
}
@Override
public boolean isAuthoritative() {
return authoritative;
}
@Override
public short getMapVersionNumber() {
return mapVersionNumber;
}
@Override
public LispAfiAddress getEidPrefixAfi() {
return eidPrefixAfi;
}
public static class AbstractRecordBuilder<T> implements RecordBuilder<T> {
protected int recordTtl;
protected byte maskLength;
protected LispMapReplyAction action;
protected boolean authoritative;
protected short mapVersionNumber;
protected LispAfiAddress eidPrefixAfi;
@Override
public T withRecordTtl(int recordTtl) {
this.recordTtl = recordTtl;
return (T) this;
}
@Override
public T withMaskLength(byte maskLength) {
this.maskLength = maskLength;
return (T) this;
}
@Override
public T withAction(LispMapReplyAction action) {
this.action = action;
return (T) this;
}
@Override
public T withIsAuthoritative(boolean authoritative) {
this.authoritative = authoritative;
return (T) this;
}
@Override
public T withMapVersionNumber(short mapVersionNumber) {
this.mapVersionNumber = mapVersionNumber;
return (T) this;
}
@Override
public T withEidPrefixAfi(LispAfiAddress prefix) {
this.eidPrefixAfi = prefix;
return (T) this;
}
}
}