Zainteresowałem się trochę tematem Thrift obejrzałem sobie przykład kalkulatora
I w przyrządzie jest wszystko jasne klient łączy , coś oblicza a potem rozłącza
transport->open();
client.ping();
cout << "ping()" << endl;
cout << "1 + 1 = " << client.add(1, 1) << endl;
Work work;
work.op = Operation::DIVIDE;
work.num1 = 1;
work.num2 = 0;
try {
client.calculate(1, work);
cout << "Whoa? We can divide by zero!" << endl;
} catch (InvalidOperation& io) {
cout << "InvalidOperation: " << io.why << endl;
// or using generated operator<<: cout << io << endl;
// or by using std::exception native method what(): cout << io.what() << endl;
}
work.op = Operation::SUBTRACT;
work.num1 = 15;
work.num2 = 10;
int32_t diff = client.calculate(1, work);
cout << "15 - 10 = " << diff << endl;
transport->close();
Ja bym chciał zrobić tak aby serwer sterował przepływem danych
- klient się łączy
- klient do serwera: rozpocznij wysyłanie danych
- serwer uruchamia watek i co 50ms wysyła bufor std::vector<uint8_t> buf(256x128)
- klient odbiera dane std::vector<uint8_t> buf(256x128)
- klient odbiera 1024 porcji danych (razem 32MB)
- klient się rozłącza
Czy to jednak klient powinien sterować przepływem ?
std::vector<uint8_t> buf(256x128);
for(int i = 0 ; i < 1024; ++i)
{
//
client.getFrame(buf);
}
I podstawowe pytanie czy Thrift nadaje się do tego co che zrobić ?