package com.github.dreamhead.moco.internal;
import com.github.dreamhead.moco.ResponseSetting;
import com.github.dreamhead.moco.Runner;
import io.netty.channel.Channel;
import io.netty.channel.ChannelInitializer;
public abstract class BaseServerRunner<T extends ResponseSetting<T>, U extends BaseActualServer> extends Runner {
protected abstract BaseActualServer<T, U> serverSetting();
protected abstract ChannelInitializer<? extends Channel> channelInitializer();
private final MocoServer server = new MocoServer();
@Override
public void start() {
BaseActualServer<T, U> setting = serverSetting();
int port = this.server.start(setting.getPort().or(0), channelInitializer());
setting.setPort(port);
}
@Override
public void stop() {
server.stop();
}
}