
org.rx.net.rpc.RemotingContext Maven / Gradle / Ivy
package org.rx.net.rpc;
import io.netty.util.concurrent.FastThreadLocal;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.rx.util.function.Func;
import java.util.Objects;
@Getter
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public final class RemotingContext {
static final FastThreadLocal TL = new FastThreadLocal<>();
public static RemotingContext context() {
RemotingContext ctx = TL.getIfExists();
Objects.requireNonNull(ctx, "No context");
return ctx;
}
@SneakyThrows
static T invoke(Func fn, RpcServer rs, RpcClientMeta rc) {
TL.set(new RemotingContext(rs, rc));
try {
return fn.invoke();
} finally {
TL.remove();
}
}
final RpcServer server;
final RpcClientMeta client;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy