
com.github.tonivade.resp.protocol.LambdaRedisTokenVisitor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of resp-server Show documentation
Show all versions of resp-server Show documentation
Netty implementation of REdis Serialization Protocol, and a simple framework to implement command based protocols
/*
* Copyright (c) 2016-2019, Antonio Gabriel Muñoz Conejo
* Distributed under the terms of the MIT License
*/
package com.github.tonivade.resp.protocol;
import java.util.function.Function;
import com.github.tonivade.resp.protocol.AbstractRedisToken.ArrayRedisToken;
import com.github.tonivade.resp.protocol.AbstractRedisToken.ErrorRedisToken;
import com.github.tonivade.resp.protocol.AbstractRedisToken.IntegerRedisToken;
import com.github.tonivade.resp.protocol.AbstractRedisToken.StatusRedisToken;
import com.github.tonivade.resp.protocol.AbstractRedisToken.StringRedisToken;
import com.github.tonivade.resp.protocol.AbstractRedisToken.UnknownRedisToken;
class LambdaRedisTokenVisitor implements RedisTokenVisitor {
private Function onArray;
private Function onStatus;
private Function onString;
private Function onError;
private Function onInteger;
private Function onUnknown;
LambdaRedisTokenVisitor(Function onArray, Function onStatus,
Function onString, Function onError,
Function onInteger, Function onUnknown) {
this.onArray = onArray;
this.onStatus = onStatus;
this.onString = onString;
this.onError = onError;
this.onInteger = onInteger;
this.onUnknown = onUnknown;
}
@Override
public T array(ArrayRedisToken token) {
return onArray.apply(token);
}
@Override
public T status(StatusRedisToken token) {
return onStatus.apply(token);
}
@Override
public T string(StringRedisToken token) {
return onString.apply(token);
}
@Override
public T error(ErrorRedisToken token) {
return onError.apply(token);
}
@Override
public T unknown(UnknownRedisToken token) {
return onUnknown.apply(token);
}
@Override
public T integer(IntegerRedisToken token) {
return onInteger.apply(token);
}
public static class Builder {
private Function onArray;
private Function onStatus;
private Function onString;
private Function onError;
private Function onInteger;
private Function onUnknown;
public Builder onArray(Function onArray) {
this.onArray = onArray;
return this;
}
public Builder onStatus(Function onStatus) {
this.onStatus = onStatus;
return this;
}
public Builder onString(Function onString) {
this.onString = onString;
return this;
}
public Builder onError(Function onError) {
this.onError = onError;
return this;
}
public Builder onInteger(Function onInteger) {
this.onInteger = onInteger;
return this;
}
public Builder onUnknown(Function onUnknown) {
this.onUnknown = onUnknown;
return this;
}
public RedisTokenVisitor build() {
return new LambdaRedisTokenVisitor<>(safe(onArray), safe(onStatus), safe(onString),
safe(onError), safe(onInteger), safe(onUnknown));
}
private Function safe(Function function) {
return function != null ? function : x -> null;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy