Skip to content

FrancisNemo/nifty

 
 

Repository files navigation

Nifty

Nifty is an implementation of Thrift clients and servers on Netty.

It is also the implementation used by Swift.

Examples

To create a basic Thrift server using Nifty, use the Thrift 0.9.0 code generator to generate Java stub code, write a Handler for your service interface, and pass it to Nifty like this:

public void startServer() { // Create the handler MyService.Iface serviceInterface = new MyServiceHandler(); // Create the processor TProcessor processor = new MyService.Processor<>(serviceInterface); // Build the server definition ThriftServerDef serverDef = new ThriftServerDefBuilder().withProcessor(processor) .build(); // Create the server transport final NettyServerTransport server = new NettyServerTransport(serverDef, new NettyServerConfigBuilder(), new DefaultChannelGroup(), new HashedWheelTimer()); // Create netty boss and executor thread pools ExecutorService bossExecutor = Executors.newCachedThreadPool(); ExecutorService workerExecutor = Executors.newCachedThreadPool(); // Start the server server.start(bossExecutor, workerExecutor); // Arrange to stop the server at shutdown Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { try { server.stop(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } }); } 

Or the same thing using guice:

public void startGuiceServer() { final NiftyBootstrap bootstrap = Guice.createInjector( Stage.PRODUCTION, new NiftyModule() { @Override protected void configureNifty() { // Create the handler MyService.Iface serviceInterface = new MyServiceHandler(); // Create the processor TProcessor processor = new MyService.Processor<>(serviceInterface); // Build the server definition ThriftServerDef serverDef = new ThriftServerDefBuilder().withProcessor(processor) .build(); // Bind the definition bind().toInstance(serverDef); } }).getInstance(NiftyBootstrap.class); // Start the server bootstrap.start(); // Arrange to stop the server at shutdown Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { bootstrap.stop(); } }); } 

About

Thrift on Netty

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 99.6%
  • Thrift 0.4%