/* * 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; } } }