public HillviewServer(final HostAndPort listenAddress, final IDataSet initialDataset) throws IOException {
this.initialDatasets = new HashMap<Integer, IDataSet>();
this.addInitialDataset(initialDataset);
this.listenAddress = listenAddress;
this.memoizedCommands = new MemoizedResults();
this.server = NettyServerBuilder.forAddress(new InetSocketAddress(listenAddress.getHost(),
listenAddress.getPort()))
.executor(executorService)
.workerEventLoopGroup(workerElg)
.bossEventLoopGroup(bossElg)
.addService(this)
.maxInboundMessageSize(MAX_MESSAGE_SIZE)
.build()
.start();
this.dataSets = CacheBuilder.newBuilder()
.expireAfterAccess(EXPIRE_TIME_IN_HOURS, TimeUnit.HOURS)
.removalListener(
(RemovalListener<Integer, IDataSet>) removalNotification ->
HillviewLogger.instance.info("Removing reference to dataset", "{0}: {1}",
removalNotification.getKey(), removalNotification.getValue().toString()))
.build();
this.toUnsubscribe = CacheBuilder.newBuilder()
.expireAfterAccess(EXPIRE_TIME_IN_HOURS, TimeUnit.HOURS)
.build();
}