Package netflix.karyon.server.interceptor

Source Code of netflix.karyon.server.interceptor.TestableDuplexInterceptor

package netflix.karyon.server.interceptor;

import io.netty.buffer.ByteBuf;
import netflix.karyon.server.MockChannelHandlerContext;
import netflix.karyon.transport.interceptor.DuplexInterceptor;
import netflix.karyon.transport.interceptor.InterceptorKey;
import netflix.karyon.transport.interceptor.KeyEvaluationContext;
import rx.Observable;

/**
* @author Nitesh Kant
*/
public class TestableDuplexInterceptor implements DuplexInterceptor<ByteBuf, ByteBuf> {

    private final InterceptorKey<ByteBuf, KeyEvaluationContext> filterKey;
    private volatile boolean inCalled;
    private volatile boolean outCalled;
    private volatile boolean wasLastInCallValid;
    private volatile boolean wasLastOutCallValid;

    @SuppressWarnings("unchecked")
    public TestableDuplexInterceptor(InterceptorKey<ByteBuf, KeyEvaluationContext> filterKey) {
        this.filterKey = filterKey;
    }

    public boolean isCalledForIn() {
        return inCalled;
    }

    public boolean isCalledForOut() {
        return outCalled;
    }

    public boolean wasLastInCallValid() {
        return wasLastInCallValid;
    }

    public boolean wasLastOutCallValid() {
        return wasLastOutCallValid;
    }

    @Override
    public Observable<Void> in(ByteBuf request, ByteBuf response) {
        inCalled = true;
        MockChannelHandlerContext mock = new MockChannelHandlerContext("mock");
        wasLastInCallValid = filterKey.apply(request, new KeyEvaluationContext(mock.channel()));
        return Observable.empty();
    }

    @Override
    public Observable<Void> out(ByteBuf response) {
        outCalled = true;
        wasLastOutCallValid = filterKey.apply(response, new KeyEvaluationContext(new MockChannelHandlerContext("").channel()));
        return Observable.empty();
    }
}
TOP

Related Classes of netflix.karyon.server.interceptor.TestableDuplexInterceptor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.