namespace java tutorial.calculator
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 tutorial.calculator;
public class CalculatorServiceImpl implements Calculator.Iface {
@Override
public int add(int num1, int num2) {
return num1 + num2;
}
@Override
public int subtract(int num1, int num2) {
return num1 - num2;
}
@Override
public int multiply(int num1, int num2) {
return num1 * num2;
}
@Override
public double divide(int num1, int num2) {
if (num2 == 0) {
}
return (double) num1 / num2;
}
}
package tutorial.calculator;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TServerTransport;
public class CalculatorServer {
public static void main(String[] args) {
try {
Calculator.Processor processor = new Calculator.Processor<>(new CalculatorServiceImpl());
TServerTransport serverTransport = new TServerSocket(9090);
TServer server = new TSimpleServer(new TServer.Args(serverTransport).processor(processor));
server.serve();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package tutorial.calculator;
import org.apache.thrift.TException;
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 result = client.add(10, 5);
System.out.println("10 + 5 = " + result);
transport.close();
} catch (TException e) {
e.printStackTrace();
}
}
}