in finagle-memcached/src/main/scala/com/twitter/finagle/memcached/protocol/text/client/CommandToBuf.scala [32:80]
private[this] def intToUtf8(i: Int): Buf =
if (i == 0) ZeroBuf else Buf.Utf8(i.toString)
def encode(message: Command): Buf = message match {
case Add(key, flags, expiry, value) =>
encodeCommandWithData(ADD, key, intToUtf8(flags), intToUtf8(expiry.inSeconds), value)
case Set(key, flags, expiry, value) =>
encodeCommandWithData(SET, key, intToUtf8(flags), intToUtf8(expiry.inSeconds), value)
case Replace(key, flags, expiry, value) =>
encodeCommandWithData(REPLACE, key, intToUtf8(flags), intToUtf8(expiry.inSeconds), value)
case Append(key, flags, expiry, value) =>
encodeCommandWithData(APPEND, key, intToUtf8(flags), intToUtf8(expiry.inSeconds), value)
case Prepend(key, flags, expiry, value) =>
encodeCommandWithData(PREPEND, key, intToUtf8(flags), intToUtf8(expiry.inSeconds), value)
case Cas(key, flags, expiry, value, casUnique) =>
encodeCommandWithData(
CAS,
key,
intToUtf8(flags),
intToUtf8(expiry.inSeconds),
value,
Some(casUnique)
)
case Upsert(key, flags, expiry, value, version) =>
encodeCommandWithData(
UPSERT,
key,
intToUtf8(flags),
intToUtf8(expiry.inSeconds),
value,
Some(version)
)
case Get(keys) =>
encodeCommand(GET +: keys)
case Gets(keys) =>
encodeCommand(GETS +: keys)
case Getv(keys) =>
encodeCommand(GETV +: keys)
case Incr(key, amount) =>
encodeCommand(Seq(INCR, key, Buf.Utf8(amount.toString)))
case Decr(key, amount) =>
encodeCommand(Seq(DECR, key, Buf.Utf8(amount.toString)))
case Delete(key) =>
encodeCommand(Seq(DELETE, key))
case Stats(args) =>
encodeCommand(STATS +: args)
case Quit() =>
encodeCommand(Seq(QUIT))
}