/* * Copyright (c) 2015 Huawei, 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 */ package org.opendaylight.usc.protocol; import java.util.Arrays; import org.opendaylight.usc.protocol.UscHeader.OperationType; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; /** * An USC control packet. */ public class UscControl extends UscFrame { public static enum ControlCode { OTHER(0), TERMINATION_REQUEST(1), TERMINATION_RESPONSE(2), ECHO(3); // send this from UscPlugin to test if the channel from UscPlugin to UscAgent is reachable private int code; private ControlCode(int code) { this.code = code; } public int getCode() { return code; } @Override public String toString() { return this.name() + "(" + this.code + ")"; } } private final static int PAYLOAD_LENGTH = 2; private final ControlCode controlCode;; /** * Constructs a new UscControl * * @param port * the port number of the service on the device * @param sessionId * the session ID * @param operationCode * the control message operation code */ public UscControl(int port, int sessionId, int operationCode) { super(OperationType.CONTROL, port, sessionId, PAYLOAD_LENGTH); this.controlCode = Arrays.stream(ControlCode.values()).filter(c -> c.getCode() == operationCode).findAny() .orElse(ControlCode.OTHER); } public ControlCode getControlCode() { return controlCode; } @Override public ByteBuf getPayload() { return Unpooled.copyShort(controlCode.getCode()); } @Override public String toString() { return "UscControl [controlCode = " + controlCode + "]"; } }