thrift
namespace java com.example
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),
i32 divide(1:i32 num1, 2:i32 num2),
}
bash
thrift --gen java example.thrift
import com.example.Calculator;
import org.apache.thrift.TException;
public class CalculatorServer implements Calculator.Iface {
@Override
public int add(int num1, int num2) throws TException {
return num1 + num2;
}
@Override
public int subtract(int num1, int num2) throws TException {
return num1 - num2;
}
@Override
public int multiply(int num1, int num2) throws TException {
return num1 * num2;
}
@Override
public int divide(int num1, int num2) throws TException {
if (num2 == 0) {
throw new TException("Cannot divide by zero");
}
return num1 / num2;
}
}
import com.example.Calculator;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
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();
TProtocol protocol = new TBinaryProtocol(transport);
Calculator.Client client = new Calculator.Client(protocol);
int sum = client.add(10, 5);
System.out.println("Sum: " + sum);
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
bash
java -cp .:lib/* calculator.CalculatorServer
bash
java -cp .:lib/* calculator.CalculatorClient