package com.justdebugit.thrift.example.raw;
import java.util.Map;
import java.util.concurrent.Executors;
import org.apache.thrift.TMultiplexedProcessor;
import org.apache.thrift.TProcessor;
import org.apache.thrift.protocol.TCompactProtocol;
import org.apache.thrift.server.TThreadedSelectorServer;
import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.transport.TNonblockingServerSocket;
import org.apache.thrift.transport.TTransportException;
import com.google.common.collect.ImmutableMap;
import com.justdebugit.thrift.generated.BlackService;
import com.justdebugit.thrift.generated.UserManagerService;
public class RawThriftServerExample {
public static void main(String[] argsa) throws TTransportException {
final Map<String, TProcessor> defaultMap = ImmutableMap
.<String, TProcessor> of("blackService",
new BlackService.Processor<BlackService.Iface>(
new BlackServiceImpl()), "userService",
new UserManagerService.Processor<UserManagerService.Iface>(
new UserManagerServiceImpl()));
TMultiplexedProcessor tMultiplexedProcessor = new TMultiplexedProcessor();
TNonblockingServerSocket socket = new TNonblockingServerSocket(8080);
TThreadedSelectorServer.Args args = new TThreadedSelectorServer.Args(socket);
args.executorService(Executors.newFixedThreadPool(20));
args.protocolFactory(new TCompactProtocol.Factory());
args.processor(tMultiplexedProcessor);
args.transportFactory(new TFramedTransport.Factory());
TThreadedSelectorServer server = new TThreadedSelectorServer(args);
for (Map.Entry<String, TProcessor> entry : defaultMap.entrySet()) {
tMultiplexedProcessor.registerProcessor(entry.getKey(), entry.getValue());
}
server.serve();
}
}