package org.bouncycastle.crypto.tls; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class HeartbeatExtension { protected short mode; public HeartbeatExtension(short mode) { if (!HeartbeatMode.isValid(mode)) { throw new IllegalArgumentException("'mode' is not a valid HeartbeatMode value"); } this.mode = mode; } public short getMode() { return mode; } /** * Encode this {@link HeartbeatExtension} to an {@link OutputStream}. * * @param output * the {@link OutputStream} to encode to. * @throws IOException */ public void encode(OutputStream output) throws IOException { TlsUtils.writeUint8(mode, output); } /** * Parse a {@link HeartbeatExtension} from an {@link InputStream}. * * @param input * the {@link InputStream} to parse from. * @return a {@link HeartbeatExtension} object. * @throws IOException */ public static HeartbeatExtension parse(InputStream input) throws IOException { short mode = TlsUtils.readUint8(input); if (!HeartbeatMode.isValid(mode)) { throw new TlsFatalAlert(AlertDescription.illegal_parameter); } return new HeartbeatExtension(mode); } }