/* * Copyright 2016 The Netty Project * * The Netty Project licenses this file to you 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 io.netty.handler.codec.redis; import io.netty.util.internal.UnstableApi; /** * Type of <a href="http://redis.io/topics/protocol">RESP (REdis Serialization Protocol)</a>. */ @UnstableApi public enum RedisMessageType { SIMPLE_STRING((byte) '+', true), ERROR((byte) '-', true), INTEGER((byte) ':', true), BULK_STRING((byte) '$', false), ARRAY_HEADER((byte) '*', false), ARRAY((byte) '*', false); // for aggregated private final byte value; private final boolean inline; RedisMessageType(byte value, boolean inline) { this.value = value; this.inline = inline; } /** * Returns prefix {@code byte} for this type. */ public byte value() { return value; } /** * Returns {@code true} if this type is inline type, or returns {@code false}. If this is {@code true}, * this type doesn't have length field. */ public boolean isInline() { return inline; } /** * Return {@link RedisMessageType} for this type prefix {@code byte}. */ public static RedisMessageType valueOf(byte value) { switch (value) { case '+': return SIMPLE_STRING; case '-': return ERROR; case ':': return INTEGER; case '$': return BULK_STRING; case '*': return ARRAY_HEADER; default: throw new RedisCodecException("Unknown RedisMessageType: " + value); } } }