blob: 02dd4dcfd3098e670b354c4065dc11f0c751b5ff [file] [log] [blame]
/*
* Copyright 2016-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.tl1;
import com.google.common.annotations.Beta;
import java.util.Optional;
/**
* Representation of a TL1 command, which is sent from the controller to a network element.
*
* The following shows the typical TL1 command structure:
* {@literal VERB-MODIFIER:<tid>:<aid>:<ctag>::parameter-list;}
*
* The ctag must be a non-zero decimal number consisting of not more than six characters,
* and is assumed to be a unique message identifier per device.
*/
@Beta
public interface Tl1Command {
/**
* Minimum CTAG value.
*/
int MIN_CTAG = 0;
/**
* Maximum CTAG value.
*/
int MAX_CTAG = 999999;
/**
* Returns the verb of the command.
*
* @return the verb
*/
String verb();
/**
* Returns the modifier of the command.
*
* @return the modifier
*/
String modifier();
/**
* Returns the optional target identifier (tid).
*
* @return the tid
*/
Optional<String> tid();
/**
* Returns the optional access identifier (aid).
*
* @return the aid
*/
Optional<String> aid();
/**
* Returns the correlation tag (ctag).
*
* @return correlation tag
*/
int ctag();
/**
* Returns the optional parameters.
*
* @return the parameters
*/
Optional<String> parameters();
/**
* TL1 command builder.
*
* @param <T> builder implementation type
*/
interface Builder<T extends Builder<T>> {
/**
* Assigns a verb to this TL1 command.
*
* @param verb a verb
* @return this
*/
T withVerb(String verb);
/**
* Assigns a modifier to this TL1 command.
*
* @param modifier a modifier
* @return this
*/
T withModifier(String modifier);
/**
* Assigns a target identifier to this TL1 command.
*
* @param tid a tid
* @return this
*/
T forTid(String tid);
/**
* Assigns an access identifier to this TL1 command.
*
* @param aid an aid
* @return this
*/
T withAid(String aid);
/**
* Assigns a correlation tag to this TL1 command.
*
* @param ctag a ctag
* @return this
*/
T withCtag(int ctag);
/**
* Assigns parameters to this TL1 command.
*
* @param parameters the parameters
* @return this
*/
T withParameters(String parameters);
/**
* Builds a TL1 command.
*
* @return the TL1 command
*/
Tl1Command build();
}
}