namespace java co.example.thrift
service Calculator {
i32 add(1:i32 num1, 2:i32 num2),
i32 subtract(1:i32 num1, 2:i32 num2),
i32 multiply(1:i32 num1, 2:i32 num2),
double divide(1:i32 num1, 2:i32 num2)
}
thrift -gen java calculator.thrift
package co.example.thrift;
public class CalculatorHandler implements Calculator.Iface {
public int add(int num1, int num2) {
return num1 + num2;
}
public int subtract(int num1, int num2) {
return num1 - num2;
}
public int multiply(int num1, int num2) {
return num1 * num2;
}
public double divide(int num1, int num2) {
if (num2 == 0) {
throw new InvalidParameterException("Division by zero");
}
return (double) num1 / num2;
}
}
package co.example.thrift;
import org.apache.thrift.TProcessor;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TThreadPoolServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TServerTransport;
public class CalculatorServer {
public static void main(String[] args) {
try {
TServerTransport serverTransport = new TServerSocket(9090);
CalculatorHandler handler = new CalculatorHandler();
TProcessor processor = new Calculator.Processor<>(handler);
TServer server = new TThreadPoolServer(new TThreadPoolServer.Args(serverTransport).processor(processor));
System.out.println("Starting the Calculator server...");
server.serve();
} catch (Exception e) {
e.printStackTrace();
}
}
}
javac -cp .:thrift-0.13.0/lib/* co/example/thrift/*.java
java -cp .:thrift-0.13.0/lib/* co.example.thrift.CalculatorServer
package co.example.thrift;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;
public class CalculatorClient {
public static void main(String[] args) {
try {
TTransport transport = new TSocket("localhost", 9090);
transport.open();
TBinaryProtocol protocol = new TBinaryProtocol(transport);
Calculator.Client client = new Calculator.Client(protocol);
int sum = client.add(5, 10);
System.out.println("5 + 10 = " + sum);
double quotient = client.divide(12, 4);
System.out.println("12 / 4 = " + quotient);
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
javac -cp .:thrift-0.13.0/lib/* co/example/thrift/*.java
java -cp .:thrift-0.13.0/lib/* co.example.thrift.CalculatorClient